diff options
Diffstat (limited to 'tests')
1294 files changed, 21281 insertions, 14191 deletions
diff --git a/tests/wpt/css-tests/tools/manifest/download.py b/tests/wpt/css-tests/tools/manifest/download.py new file mode 100644 index 00000000000..42998a2a2db --- /dev/null +++ b/tests/wpt/css-tests/tools/manifest/download.py @@ -0,0 +1,130 @@ +import argparse +import gzip +import json +import io +import log +import os +from datetime import datetime, timedelta + +import urllib2 + +from vcs import Git + +here = os.path.dirname(__file__) + +wpt_root = os.path.abspath(os.path.join(here, os.pardir, os.pardir)) +logger = log.get_logger() + + +def abs_path(path): + return os.path.abspath(os.path.expanduser(path)) + + +def should_download(manifest_path, rebuild_time=timedelta(days=5)): + if not os.path.exists(manifest_path): + return True + mtime = datetime.fromtimestamp(os.path.getmtime(manifest_path)) + if mtime < datetime.now() - rebuild_time: + return True + logger.info("Skipping manifest download because existing file is recent") + return False + + +def git_commits(repo_root): + git = Git.get_func(repo_root) + return [item for item in git("log", "--format=%H", "-n50").split("\n") if item] + + +def github_url(commits): + try: + resp = urllib2.urlopen("https://api.github.com/repos/w3c/web-platform-tests/releases") + except Exception: + return None + + if resp.code != 200: + return None + + try: + releases = json.load(resp.fp) + except ValueError: + logger.warning("Response was not valid JSON") + return None + + fallback = None + for release in releases: + for commit in commits: + for item in release["assets"]: + if item["name"] == "MANIFEST-%s.json.gz" % commit: + return item["browser_download_url"] + elif item["name"] == "MANIFEST.json.gz" and not fallback: + fallback = item["browser_download_url"] + if fallback: + logger.info("Can't find a commit-specific manifest so just using the most recent one") + return fallback + + +def download_manifest(manifest_path, commits_func, url_func, force=False): + if not force and not should_download(manifest_path): + return False + + commits = commits_func() + + url = url_func(commits) + if not url: + logger.warning("No generated manifest found") + return False + + logger.info("Downloading manifest from %s" % url) + try: + resp = urllib2.urlopen(url) + except Exception: + logger.warning("Downloading pregenerated manifest failed") + return False + + if resp.code != 200: + logger.warning("Downloading pregenerated manifest failed; got HTTP status %d" % + resp.code) + return False + + gzf = gzip.GzipFile(fileobj=io.BytesIO(resp.read())) + + try: + decompressed = gzf.read() + except IOError: + logger.warning("Failed to decompress downloaded file") + return False + + try: + with open(manifest_path, "w") as f: + f.write(decompressed) + except Exception: + logger.warning("Failed to write manifest") + return False + logger.info("Manifest downloaded") + return True + + +def create_parser(): + parser = argparse.ArgumentParser() + parser.add_argument( + "-p", "--path", type=abs_path, help="Path to manifest file.") + parser.add_argument( + "--tests-root", type=abs_path, default=wpt_root, help="Path to root of tests.") + parser.add_argument( + "--force", action="store_true", + help="Always download, even if the existing manifest is recent") + return parser + + +def download_from_github(path, tests_root, force=False): + return download_manifest(path, lambda: git_commits(tests_root), github_url, + force=force) + + +def run(**kwargs): + if kwargs["path"] is None: + path = os.path.join(kwargs["tests_root"], "MANIFEST.json") + else: + path = kwargs["path"] + success = download_from_github(path, kwargs["tests_root"], kwargs["force"]) + return 0 if success else 1 diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index d602cc4d2ba..be71e38d09c 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -10075,6 +10075,18 @@ {} ] ], + "css/css-ui-3/cursor-auto-006.html": [ + [ + "/css/css-ui-3/cursor-auto-006.html", + {} + ] + ], + "css/css-ui-3/cursor-auto-007.html": [ + [ + "/css/css-ui-3/cursor-auto-007.html", + {} + ] + ], "css/css-ui-3/cursor-border-area.html": [ [ "/css/css-ui-3/cursor-border-area.html", @@ -11599,9 +11611,9 @@ {} ] ], - "cssom-view/scrollBoundaryBehavior-manual.html": [ + "cssom-view/overscrollBehavior-manual.html": [ [ - "/cssom-view/scrollBoundaryBehavior-manual.html", + "/cssom-view/overscrollBehavior-manual.html", {} ] ], @@ -17827,63 +17839,63 @@ {} ] ], - "viewport/viewport-attribute-event-handlers-manual.html": [ + "visual-viewport/viewport-attribute-event-handlers-manual.html": [ [ - "/viewport/viewport-attribute-event-handlers-manual.html", + "/visual-viewport/viewport-attribute-event-handlers-manual.html", {} ] ], - "viewport/viewport-dimensions-custom-scrollbars-manual.html": [ + "visual-viewport/viewport-dimensions-custom-scrollbars-manual.html": [ [ - "/viewport/viewport-dimensions-custom-scrollbars-manual.html", + "/visual-viewport/viewport-dimensions-custom-scrollbars-manual.html", {} ] ], - "viewport/viewport-dimensions-scrollbars-manual.html": [ + "visual-viewport/viewport-dimensions-scrollbars-manual.html": [ [ - "/viewport/viewport-dimensions-scrollbars-manual.html", + "/visual-viewport/viewport-dimensions-scrollbars-manual.html", {} ] ], - "viewport/viewport-offset-manual.html": [ + "visual-viewport/viewport-offset-manual.html": [ [ - "/viewport/viewport-offset-manual.html", + "/visual-viewport/viewport-offset-manual.html", {} ] ], - "viewport/viewport-page-manual.html": [ + "visual-viewport/viewport-page-manual.html": [ [ - "/viewport/viewport-page-manual.html", + "/visual-viewport/viewport-page-manual.html", {} ] ], - "viewport/viewport-resize-event-manual.html": [ + "visual-viewport/viewport-resize-event-manual.html": [ [ - "/viewport/viewport-resize-event-manual.html", + "/visual-viewport/viewport-resize-event-manual.html", {} ] ], - "viewport/viewport-scale-iframe-manual.html": [ + "visual-viewport/viewport-scale-iframe-manual.html": [ [ - "/viewport/viewport-scale-iframe-manual.html", + "/visual-viewport/viewport-scale-iframe-manual.html", {} ] ], - "viewport/viewport-scale-manual.html": [ + "visual-viewport/viewport-scale-manual.html": [ [ - "/viewport/viewport-scale-manual.html", + "/visual-viewport/viewport-scale-manual.html", {} ] ], - "viewport/viewport-scroll-event-manual.html": [ + "visual-viewport/viewport-scroll-event-manual.html": [ [ - "/viewport/viewport-scroll-event-manual.html", + "/visual-viewport/viewport-scroll-event-manual.html", {} ] ], - "viewport/viewport-url-bar-changes-height-manual.html": [ + "visual-viewport/viewport-url-bar-changes-height-manual.html": [ [ - "/viewport/viewport-url-bar-changes-height-manual.html", + "/visual-viewport/viewport-url-bar-changes-height-manual.html", {} ] ], @@ -19545,6 +19557,30 @@ {} ] ], + "acid/acid2/reftest.html": [ + [ + "/acid/acid2/reftest.html", + [ + [ + "/acid/acid2/reference.html", + "==" + ] + ], + {} + ] + ], + "acid/acid3/test.html": [ + [ + "/acid/acid3/test.html", + [ + [ + "/acid/acid3/reference.sub.html", + "==" + ] + ], + {} + ] + ], "apng/animated-png-timeout.html": [ [ "/apng/animated-png-timeout.html", @@ -108861,6 +108897,282 @@ {} ] ], + "css/css-fonts-3/font-stretch-01.html": [ + [ + "/css/css-fonts-3/font-stretch-01.html", + [ + [ + "/css/css-fonts-3/font-stretch-pass-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-fonts-3/font-stretch-02.html": [ + [ + "/css/css-fonts-3/font-stretch-02.html", + [ + [ + "/css/css-fonts-3/font-stretch-pass-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-fonts-3/font-stretch-03.html": [ + [ + "/css/css-fonts-3/font-stretch-03.html", + [ + [ + "/css/css-fonts-3/font-stretch-pass-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-fonts-3/font-stretch-04.html": [ + [ + "/css/css-fonts-3/font-stretch-04.html", + [ + [ + "/css/css-fonts-3/font-stretch-pass-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-fonts-3/font-stretch-05.html": [ + [ + "/css/css-fonts-3/font-stretch-05.html", + [ + [ + "/css/css-fonts-3/font-stretch-pass-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-fonts-3/font-stretch-06.html": [ + [ + "/css/css-fonts-3/font-stretch-06.html", + [ + [ + "/css/css-fonts-3/font-stretch-pass-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-fonts-3/font-stretch-07.html": [ + [ + "/css/css-fonts-3/font-stretch-07.html", + [ + [ + "/css/css-fonts-3/font-stretch-pass-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-fonts-3/font-stretch-08.html": [ + [ + "/css/css-fonts-3/font-stretch-08.html", + [ + [ + "/css/css-fonts-3/font-stretch-pass-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-fonts-3/font-stretch-09.html": [ + [ + "/css/css-fonts-3/font-stretch-09.html", + [ + [ + "/css/css-fonts-3/font-stretch-pass-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-fonts-3/font-stretch-10.html": [ + [ + "/css/css-fonts-3/font-stretch-10.html", + [ + [ + "/css/css-fonts-3/font-stretch-pass-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-fonts-3/font-stretch-11.html": [ + [ + "/css/css-fonts-3/font-stretch-11.html", + [ + [ + "/css/css-fonts-3/font-stretch-pass-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-fonts-3/font-stretch-12.html": [ + [ + "/css/css-fonts-3/font-stretch-12.html", + [ + [ + "/css/css-fonts-3/font-stretch-pass-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-fonts-3/font-stretch-13.html": [ + [ + "/css/css-fonts-3/font-stretch-13.html", + [ + [ + "/css/css-fonts-3/font-stretch-pass-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-fonts-3/font-stretch-14.html": [ + [ + "/css/css-fonts-3/font-stretch-14.html", + [ + [ + "/css/css-fonts-3/font-stretch-pass-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-fonts-3/font-stretch-15.html": [ + [ + "/css/css-fonts-3/font-stretch-15.html", + [ + [ + "/css/css-fonts-3/font-stretch-pass-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-fonts-3/font-stretch-16.html": [ + [ + "/css/css-fonts-3/font-stretch-16.html", + [ + [ + "/css/css-fonts-3/font-stretch-pass-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-fonts-3/font-stretch-17.html": [ + [ + "/css/css-fonts-3/font-stretch-17.html", + [ + [ + "/css/css-fonts-3/font-stretch-pass-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-fonts-3/font-stretch-18.html": [ + [ + "/css/css-fonts-3/font-stretch-18.html", + [ + [ + "/css/css-fonts-3/font-stretch-pass-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-fonts-3/font-synthesis-01.html": [ + [ + "/css/css-fonts-3/font-synthesis-01.html", + [ + [ + "/css/css-fonts-3/font-synthesis-01-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-fonts-3/font-synthesis-02.html": [ + [ + "/css/css-fonts-3/font-synthesis-02.html", + [ + [ + "/css/css-fonts-3/font-synthesis-02-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-fonts-3/font-synthesis-03.html": [ + [ + "/css/css-fonts-3/font-synthesis-03.html", + [ + [ + "/css/css-fonts-3/font-synthesis-03-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-fonts-3/font-synthesis-04.html": [ + [ + "/css/css-fonts-3/font-synthesis-04.html", + [ + [ + "/css/css-fonts-3/font-synthesis-04-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-fonts-3/font-synthesis-05.html": [ + [ + "/css/css-fonts-3/font-synthesis-05.html", + [ + [ + "/css/css-fonts-3/font-synthesis-03-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-fonts-3/font-variant-01.html": [ [ "/css/css-fonts-3/font-variant-01.html", @@ -109629,30 +109941,6 @@ {} ] ], - "css/css-fonts-3/font-variant-position-02.html": [ - [ - "/css/css-fonts-3/font-variant-position-02.html", - [ - [ - "/css/css-fonts-3/font-variant-position-02-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-fonts-3/font-variant-position-03.html": [ - [ - "/css/css-fonts-3/font-variant-position-03.html", - [ - [ - "/css/css-fonts-3/font-variant-position-03-ref.html", - "==" - ] - ], - {} - ] - ], "css/css-fonts-3/font-variant-position.html": [ [ "/css/css-fonts-3/font-variant-position.html", @@ -110961,6 +111249,30 @@ {} ] ], + "css/css-grid-1/grid-definition/grid-template-columns-fit-content-001.html": [ + [ + "/css/css-grid-1/grid-definition/grid-template-columns-fit-content-001.html", + [ + [ + "/css/css-grid-1/grid-definition/grid-template-columns-fit-content-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-grid-1/grid-definition/grid-template-rows-fit-content-001.html": [ + [ + "/css/css-grid-1/grid-definition/grid-template-rows-fit-content-001.html", + [ + [ + "/css/css-grid-1/grid-definition/grid-template-rows-fit-content-001-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-grid-1/grid-items/grid-inline-items-001.html": [ [ "/css/css-grid-1/grid-items/grid-inline-items-001.html", @@ -112245,6 +112557,18 @@ {} ] ], + "css/css-grid-1/layout-algorithm/grid-stretch-respects-min-size-001.html": [ + [ + "/css/css-grid-1/layout-algorithm/grid-stretch-respects-min-size-001.html", + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "css/css-grid-1/placement/grid-layout-grid-span.html": [ [ "/css/css-grid-1/placement/grid-layout-grid-span.html", @@ -112401,6 +112725,18 @@ {} ] ], + "css/css-images-3/gradients-with-transparent.html": [ + [ + "/css/css-images-3/gradients-with-transparent.html", + [ + [ + "/css/css-images-3/gradients-with-transparent-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-images-3/linear-gradient-1.html": [ [ "/css/css-images-3/linear-gradient-1.html", @@ -154213,6 +154549,18 @@ {} ] ], + "css/css3-color/t44-currentcolor-inherited-c.xht": [ + [ + "/css/css3-color/t44-currentcolor-inherited-c.xht", + [ + [ + "/css/css3-color/t44-currentcolor-inherited-c-ref.xht", + "==" + ] + ], + {} + ] + ], "css/css3-selectors/root-siblings.htm": [ [ "/css/css3-selectors/root-siblings.htm", @@ -179841,6 +180189,141 @@ {} ] ], + "acid/README.md": [ + [ + {} + ] + ], + "acid/acid2/404.html": [ + [ + {} + ] + ], + "acid/acid2/reference.html": [ + [ + {} + ] + ], + "acid/acid2/reference.png": [ + [ + {} + ] + ], + "acid/acid2/test.html": [ + [ + {} + ] + ], + "acid/acid3/empty.css": [ + [ + {} + ] + ], + "acid/acid3/empty.css.headers": [ + [ + {} + ] + ], + "acid/acid3/empty.html": [ + [ + {} + ] + ], + "acid/acid3/empty.png": [ + [ + {} + ] + ], + "acid/acid3/empty.txt": [ + [ + {} + ] + ], + "acid/acid3/empty.xml": [ + [ + {} + ] + ], + "acid/acid3/empty.xml.headers": [ + [ + {} + ] + ], + "acid/acid3/favicon.ico": [ + [ + {} + ] + ], + "acid/acid3/favicon.ico.headers": [ + [ + {} + ] + ], + "acid/acid3/reference.png": [ + [ + {} + ] + ], + "acid/acid3/reference.sub.html": [ + [ + {} + ] + ], + "acid/acid3/support-a.png": [ + [ + {} + ] + ], + "acid/acid3/support-b.png": [ + [ + {} + ] + ], + "acid/acid3/support-b.png.headers": [ + [ + {} + ] + ], + "acid/acid3/svg.xml": [ + [ + {} + ] + ], + "acid/acid3/svg.xml.headers": [ + [ + {} + ] + ], + "acid/acid3/xhtml.1": [ + [ + {} + ] + ], + "acid/acid3/xhtml.1.headers": [ + [ + {} + ] + ], + "acid/acid3/xhtml.2": [ + [ + {} + ] + ], + "acid/acid3/xhtml.2.headers": [ + [ + {} + ] + ], + "acid/acid3/xhtml.3": [ + [ + {} + ] + ], + "acid/acid3/xhtml.3.headers": [ + [ + {} + ] + ], "ambient-light/OWNERS": [ [ {} @@ -204696,902 +205179,42 @@ {} ] ], - "content-security-policy/blink-contrib-2/allowed.css": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/base-uri-allow.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/base-uri-deny.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/form-action-src-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/form-action-src-blocked.sub.html.sub.headers": [ + "content-security-policy/connect-src/resources/simple-event-stream": [ [ {} ] ], - "content-security-policy/blink-contrib-2/form-action-src-default-ignored.sub.html.sub.headers": [ + "content-security-policy/connect-src/resources/simple-event-stream.headers": [ [ {} ] ], - "content-security-policy/blink-contrib-2/form-action-src-get-allowed.sub.html.sub.headers": [ + "content-security-policy/connect-src/support/shared-worker-make-xhr-allowed.sub.js": [ [ {} ] ], - "content-security-policy/blink-contrib-2/form-action-src-get-blocked.sub.html.sub.headers": [ + "content-security-policy/connect-src/support/shared-worker-make-xhr-blocked.sub.js": [ [ {} ] ], - "content-security-policy/blink-contrib-2/form-action-src-javascript-blocked.sub.html.sub.headers": [ + "content-security-policy/connect-src/support/shared-worker-make-xhr-blocked.sub.js.sub.headers": [ [ {} ] ], - "content-security-policy/blink-contrib-2/form-action-src-redirect-blocked.sub.html.sub.headers": [ + "content-security-policy/connect-src/support/worker-make-xhr-blocked.sub.js": [ [ {} ] ], - "content-security-policy/blink-contrib-2/meta-outside-head.sub.html.sub.headers": [ + "content-security-policy/connect-src/support/worker-make-xhr-blocked.sub.js.sub.headers": [ [ {} ] ], - "content-security-policy/blink-contrib-2/metaHelper.js": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/plugintypes-mismatched-data.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/plugintypes-mismatched-url.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/plugintypes-notype-data.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/plugintypes-notype-url.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/plugintypes-nourl-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/plugintypes-nourl-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/script-src-wildcards-disallowed.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/scripthash-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/scripthash-basic-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/scripthash-default-src.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/scripthash-ignore-unsafeinline.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/scripthash-unicode-normalization.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/scriptnonce-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/scriptnonce-and-scripthash.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/scriptnonce-basic-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/scriptnonce-ignore-unsafeinline.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/scriptnonce-redirect.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/securitypolicyviolation-block-cross-origin-image-from-script.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/securitypolicyviolation-block-cross-origin-image.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/securitypolicyviolation-block-image-from-script.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/securitypolicyviolation-block-image.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/stylehash-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/stylehash-basic-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/stylehash-default-src.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/stylenonce-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib-2/stylenonce-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/blob-urls-do-not-match-self.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/blob-urls-match-blob.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/combine-header-and-meta-policies.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/combine-multiple-header-policies.html.asis": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/connect-src-beacon-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/connect-src-beacon-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/connect-src-beacon-redirect-to-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/connect-src-eventsource-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/connect-src-eventsource-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/connect-src-eventsource-redirect-to-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/connect-src-websocket-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/connect-src-websocket-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/connect-src-xmlhttprequest-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/connect-src-xmlhttprequest-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/connect-src-xmlhttprequest-redirect-to-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/default-src-inline-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/default-src-inline-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/duplicate-directive.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/eval-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/eval-blocked-and-sends-report.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/eval-blocked-in-about-blank-iframe.sub.html": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/eval-blocked-in-about-blank-iframe.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/eval-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/eval-scripts-setInterval-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/eval-scripts-setInterval-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/eval-scripts-setTimeout-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/eval-scripts-setTimeout-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/filesystem-urls-do-not-match-self.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/filesystem-urls-match-filesystem.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/frame-src-about-blank-allowed-by-default.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/frame-src-about-blank-allowed-by-scheme.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/frame-src-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/frame-src-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/frame-src-cross-origin-load.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/function-constructor-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/function-constructor-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/icon-allowed.sub.html": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/icon-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/icon-blocked.sub.html": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/icon-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/iframe-inside-csp.sub.html": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/iframe-inside-csp.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/image-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/image-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/image-full-host-wildcard-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/injected-inline-script-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/injected-inline-script-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/injected-inline-style-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/injected-inline-style-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/inline-style-allowed-while-cloning-objects.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/inline-style-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/inline-style-attribute-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/inline-style-attribute-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/inline-style-attribute-on-html.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/inline-style-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/manifest-src-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/manifest-src-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/media-src-allowed.sub.html": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/media-src-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/media-src-blocked.sub.html": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/media-src-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/media-src-track-block.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/object-in-svg-foreignobject.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/object-src-no-url-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/object-src-no-url-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/object-src-url-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/object-src-url-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/policy-does-not-affect-child.sub.html": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/policy-does-not-affect-child.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/report-blocked-data-uri.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/report-cross-origin-no-cookies.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/report-disallowed-from-meta.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/report-same-origin-with-cookies.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/report-uri-from-inline-javascript.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/report-uri-from-javascript.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/report-uri.sub.html": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/report-uri.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/alert-fail.html": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/alert-pass.html": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/blue.css": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/document-write-alert-fail.js": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/generate-csp-report.html": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/go-to-echo-report.js": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/inject-image.js": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/inject-script.js": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/inject-style.js": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/post-message.js": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/postmessage-fail.html": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/postmessage-pass.html": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/script.js": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/set-cookie.js.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/shared-worker-make-xhr-allowed.sub.js": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/shared-worker-make-xhr-blocked.sub.js": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/shared-worker-make-xhr-blocked.sub.js.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/simple-event-stream": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/simple-event-stream.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/track.vtt": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/worker-eval.js": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/worker-eval.js.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/worker-function-function.js": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/worker-function-function.js.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/worker-importscripts.js": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/worker-importscripts.js.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/worker-make-xhr-blocked.sub.js": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/worker-make-xhr-blocked.sub.js.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/worker-make-xhr.sub.js": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/worker-set-timeout.js": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/resources/worker-set-timeout.js.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/sandbox-allow-scripts-subframe.sub.html": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/sandbox-allow-scripts-subframe.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/sandbox-allow-scripts.sub.html": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/sandbox-allow-scripts.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/sandbox-empty-subframe.sub.html": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/sandbox-empty-subframe.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/sandbox-empty.sub.html": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/sandbox-empty.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/script-src-overrides-default-src.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/self-doesnt-match-blob.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/shared-worker-connect-src-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/shared-worker-connect-src-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/source-list-parsing-paths-03.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/srcdoc-doesnt-bypass-script-src.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/star-doesnt-match-blob.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/style-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/style-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/worker-connect-src-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/worker-connect-src-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/worker-eval-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/worker-from-guid.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/worker-function-function-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/worker-importscripts-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/worker-script-src.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/worker-set-timeout-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/xsl-blocked-expected.png": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/xsl-unaffected-by-style-src-1-expected.png": [ - [ - {} - ] - ], - "content-security-policy/child-src/child-src-about-blank-allowed-by-default.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/child-src/child-src-about-blank-allowed-by-scheme.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/child-src/child-src-allowed.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/child-src/child-src-blocked.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/child-src/child-src-conflicting-frame-src.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/child-src/child-src-cross-origin-load.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/child-src/child-src-redirect-blocked.sub.html.sub.headers": [ + "content-security-policy/connect-src/support/worker-make-xhr.sub.js": [ [ {} ] @@ -205616,6 +205239,11 @@ {} ] ], + "content-security-policy/form-action/form-action-src-javascript-blocked.sub.html.sub.headers": [ + [ + {} + ] + ], "content-security-policy/frame-ancestors/support/frame-ancestors-and-x-frame-options.sub.html": [ [ {} @@ -205671,192 +205299,187 @@ {} ] ], - "content-security-policy/generic/generic-0_1-img-src.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/generic/generic-0_1-script-src.html.sub.headers": [ + "content-security-policy/generic/negativeTests.js": [ [ {} ] ], - "content-security-policy/generic/generic-0_10.html.sub.headers": [ + "content-security-policy/generic/no-default-src.sub.html.sub.headers": [ [ {} ] ], - "content-security-policy/generic/generic-0_10_1.sub.html.sub.headers": [ + "content-security-policy/generic/pass-0_1.js": [ [ {} ] ], - "content-security-policy/generic/generic-0_2.html.sub.headers": [ + "content-security-policy/generic/positiveTest.js": [ [ {} ] ], - "content-security-policy/generic/generic-0_2_2.sub.html.sub.headers": [ + "content-security-policy/generic/support/log-pass.html": [ [ {} ] ], - "content-security-policy/generic/generic-0_2_3.html.sub.headers": [ + "content-security-policy/generic/support/sandboxed-eval.sub.html": [ [ {} ] ], - "content-security-policy/generic/generic-0_8.html.sub.headers": [ + "content-security-policy/generic/support/sandboxed-eval.sub.html.sub.headers": [ [ {} ] ], - "content-security-policy/generic/generic-0_8_1.sub.html.sub.headers": [ + "content-security-policy/generic/unreached.js": [ [ {} ] ], - "content-security-policy/generic/generic-0_9.sub.html.sub.headers": [ + "content-security-policy/generic/wildcardHostTest.js": [ [ {} ] ], - "content-security-policy/generic/negativeTests.js": [ + "content-security-policy/generic/wildcardHostTestFailure.js": [ [ {} ] ], - "content-security-policy/generic/no-default-src.sub.html.sub.headers": [ + "content-security-policy/generic/wildcardHostTestSuceeds.js": [ [ {} ] ], - "content-security-policy/generic/pass-0_1.js": [ + "content-security-policy/generic/wildcardPortTest.js": [ [ {} ] ], - "content-security-policy/generic/positiveTest.js": [ + "content-security-policy/generic/wildcardPortTestSuceeds.js": [ [ {} ] ], - "content-security-policy/generic/unreached.js": [ + "content-security-policy/inside-worker/support/connect-src-allow.sub.js": [ [ {} ] ], - "content-security-policy/generic/wildcardHostTest.js": [ + "content-security-policy/inside-worker/support/connect-src-self.sub.js": [ [ {} ] ], - "content-security-policy/generic/wildcardHostTestFailure.js": [ + "content-security-policy/inside-worker/support/script-src-allow.sub.js": [ [ {} ] ], - "content-security-policy/generic/wildcardHostTestSuceeds.js": [ + "content-security-policy/inside-worker/support/script-src-self.sub.js": [ [ {} ] ], - "content-security-policy/generic/wildcardPortTest.js": [ + "content-security-policy/meta/combine-header-and-meta-policies.sub.html.sub.headers": [ [ {} ] ], - "content-security-policy/generic/wildcardPortTestSuceeds.js": [ + "content-security-policy/meta/meta-outside-head.sub.html.sub.headers": [ [ {} ] ], - "content-security-policy/inside-worker/support/connect-src-allow.sub.js": [ + "content-security-policy/meta/support/metaHelper.js": [ [ {} ] ], - "content-security-policy/inside-worker/support/connect-src-self.sub.js": [ + "content-security-policy/navigation/support/test_csp_self_window.sub.html": [ [ {} ] ], - "content-security-policy/inside-worker/support/script-src-allow.sub.js": [ + "content-security-policy/navigation/support/test_csp_self_window.sub.html.sub.headers": [ [ {} ] ], - "content-security-policy/inside-worker/support/script-src-self.sub.js": [ + "content-security-policy/nonce-hiding/script-nonces-hidden.tentative.html.headers": [ [ {} ] ], - "content-security-policy/media-src/media-src-7_1.html.sub.headers": [ + "content-security-policy/nonce-hiding/svgscript-nonces-hidden.tentative.html.headers": [ [ {} ] ], - "content-security-policy/media-src/media-src-7_1_2.sub.html.sub.headers": [ + "content-security-policy/object-src/object-src-2_1.html.sub.headers": [ [ {} ] ], - "content-security-policy/media-src/media-src-7_2.html.sub.headers": [ + "content-security-policy/object-src/object-src-2_2.html.sub.headers": [ [ {} ] ], - "content-security-policy/media-src/media-src-7_2_2.sub.html.sub.headers": [ + "content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html.sub.headers": [ [ {} ] ], - "content-security-policy/media-src/media-src-7_3.sub.html.sub.headers": [ + "content-security-policy/reporting/reporting-api-report-only-sends-reports-on-violation.https.sub.html.sub.headers": [ [ {} ] ], - "content-security-policy/media-src/media-src-7_3_2.sub.html.sub.headers": [ + "content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-1.https.sub.html.sub.headers": [ [ {} ] ], - "content-security-policy/media-src/media-src-blocked.sub.html.sub.headers": [ + "content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-2.https.sub.html.sub.headers": [ [ {} ] ], - "content-security-policy/media-src/media-src-redir-bug.sub.html.sub.headers": [ + "content-security-policy/reporting/reporting-api-sends-reports-on-violation.https.sub.html.sub.headers": [ [ {} ] ], - "content-security-policy/navigation/support/test_csp_self_window.sub.html": [ + "content-security-policy/sandbox/support/sandboxed-data-iframe.sub.html": [ [ {} ] ], - "content-security-policy/navigation/support/test_csp_self_window.sub.html.sub.headers": [ + "content-security-policy/sandbox/support/sandboxed-data-iframe.sub.html.sub.headers": [ [ {} ] ], - "content-security-policy/nonce-hiding/script-nonces-hidden.tentative.html.headers": [ + "content-security-policy/sandbox/support/sandboxed-eval.sub.html": [ [ {} ] ], - "content-security-policy/nonce-hiding/svgscript-nonces-hidden.tentative.html.headers": [ + "content-security-policy/sandbox/support/sandboxed-eval.sub.html.sub.headers": [ [ {} ] ], - "content-security-policy/object-src/object-src-2_1.html.sub.headers": [ + "content-security-policy/sandbox/support/sandboxed-post-message-to-parent.sub.html": [ [ {} ] ], - "content-security-policy/object-src/object-src-2_2.html.sub.headers": [ + "content-security-policy/sandbox/support/sandboxed-post-message-to-parent.sub.html.sub.headers": [ [ {} ] @@ -205911,157 +205534,162 @@ {} ] ], - "content-security-policy/script-src/script-src-1_1.html.sub.headers": [ + "content-security-policy/script-src/script-src-multiple-policies-multiple-hashing-algorithms.html.sub.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-1_10.html.sub.headers": [ + "content-security-policy/script-src/script-src-multiple-policies-one-using-hashing-algorithms.html.sub.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-1_10_1.html.sub.headers": [ + "content-security-policy/script-src/script-src-report-only-policy-works-with-external-hash-policy.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/script-src/script-src-report-only-policy-works-with-hash-policy.html.sub.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-1_2.html.sub.headers": [ + "content-security-policy/script-src/script-src-sri_hash.sub.html.sub.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-1_2_1.html.sub.headers": [ + "content-security-policy/script-src/script-src-strict_dynamic_and_unsafe_eval_eval.html.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-1_3.html.sub.headers": [ + "content-security-policy/script-src/script-src-strict_dynamic_and_unsafe_eval_new_function.html.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-1_4.html.sub.headers": [ + "content-security-policy/script-src/script-src-strict_dynamic_discard_whitelist.html.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-1_4_1.html.sub.headers": [ + "content-security-policy/script-src/script-src-strict_dynamic_double_policy_different_nonce.html.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-1_4_2.html.sub.headers": [ + "content-security-policy/script-src/script-src-strict_dynamic_double_policy_honor_whitelist.sub.html.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-multiple-policies-multiple-hashing-algorithms.html.sub.headers": [ + "content-security-policy/script-src/script-src-strict_dynamic_double_policy_report_only.html.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-multiple-policies-one-using-hashing-algorithms.html.sub.headers": [ + "content-security-policy/script-src/script-src-strict_dynamic_eval.html.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-report-only-policy-works-with-external-hash-policy.html.sub.headers": [ + "content-security-policy/script-src/script-src-strict_dynamic_hashes.html.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-report-only-policy-works-with-hash-policy.html.sub.headers": [ + "content-security-policy/script-src/script-src-strict_dynamic_in_img-src.html.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-sri_hash.sub.html.sub.headers": [ + "content-security-policy/script-src/script-src-strict_dynamic_javascript_uri.html.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-strict_dynamic_and_unsafe_eval_eval.html.headers": [ + "content-security-policy/script-src/script-src-strict_dynamic_meta_tag.html.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-strict_dynamic_and_unsafe_eval_new_function.html.headers": [ + "content-security-policy/script-src/script-src-strict_dynamic_new_function.html.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-strict_dynamic_discard_whitelist.html.headers": [ + "content-security-policy/script-src/script-src-strict_dynamic_non_parser_inserted.html.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-strict_dynamic_double_policy_different_nonce.html.headers": [ + "content-security-policy/script-src/script-src-strict_dynamic_non_parser_inserted_incorrect_nonce.html.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-strict_dynamic_double_policy_honor_whitelist.sub.html.headers": [ + "content-security-policy/script-src/script-src-strict_dynamic_parser_inserted.html.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-strict_dynamic_double_policy_report_only.html.headers": [ + "content-security-policy/script-src/script-src-strict_dynamic_parser_inserted_correct_nonce.html.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-strict_dynamic_eval.html.headers": [ + "content-security-policy/script-src/simpleSourcedScript.js": [ [ {} ] ], - "content-security-policy/script-src/script-src-strict_dynamic_hashes.html.headers": [ + "content-security-policy/script-src/support/inject-script.js": [ [ {} ] ], - "content-security-policy/script-src/script-src-strict_dynamic_in_img-src.html.headers": [ + "content-security-policy/script-src/support/post-message.js": [ [ {} ] ], - "content-security-policy/script-src/script-src-strict_dynamic_javascript_uri.html.headers": [ + "content-security-policy/script-src/support/worker-eval.js": [ [ {} ] ], - "content-security-policy/script-src/script-src-strict_dynamic_meta_tag.html.headers": [ + "content-security-policy/script-src/support/worker-eval.js.sub.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-strict_dynamic_new_function.html.headers": [ + "content-security-policy/script-src/support/worker-function-function.js": [ [ {} ] ], - "content-security-policy/script-src/script-src-strict_dynamic_non_parser_inserted.html.headers": [ + "content-security-policy/script-src/support/worker-function-function.js.sub.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-strict_dynamic_non_parser_inserted_incorrect_nonce.html.headers": [ + "content-security-policy/script-src/support/worker-importscripts.js": [ [ {} ] ], - "content-security-policy/script-src/script-src-strict_dynamic_parser_inserted.html.headers": [ + "content-security-policy/script-src/support/worker-importscripts.js.sub.headers": [ [ {} ] ], - "content-security-policy/script-src/script-src-strict_dynamic_parser_inserted_correct_nonce.html.headers": [ + "content-security-policy/script-src/support/worker-set-timeout.js": [ [ {} ] ], - "content-security-policy/script-src/simpleSourcedScript.js": [ + "content-security-policy/script-src/support/worker-set-timeout.js.sub.headers": [ [ {} ] @@ -206091,6 +205719,11 @@ {} ] ], + "content-security-policy/style-src/resources/allowed.css": [ + [ + {} + ] + ], "content-security-policy/style-src/resources/style-src-import.sub.css": [ [ {} @@ -206111,6 +205744,11 @@ {} ] ], + "content-security-policy/style-src/support/inject-style.js": [ + [ + {} + ] + ], "content-security-policy/support/alert-pass.js": [ [ {} @@ -206126,6 +205764,11 @@ {} ] ], + "content-security-policy/support/document-write-alert-fail.js": [ + [ + {} + ] + ], "content-security-policy/support/echo-policy.py": [ [ {} @@ -206171,6 +205814,11 @@ {} ] ], + "content-security-policy/support/manifest.json": [ + [ + {} + ] + ], "content-security-policy/support/media/flash.swf": [ [ {} @@ -206246,11 +205894,6 @@ {} ] ], - "content-security-policy/svg/svg-inline.sub.html.sub.headers": [ - [ - {} - ] - ], "cookies/path/echo-cookie.html": [ [ {} @@ -230561,11 +230204,6 @@ {} ] ], - "css/css-flexbox-1/support/check-layout-th.js": [ - [ - {} - ] - ], "css/css-flexbox-1/support/flexbox.css": [ [ {} @@ -230806,6 +230444,36 @@ {} ] ], + "css/css-fonts-3/font-stretch-pass-ref.html": [ + [ + {} + ] + ], + "css/css-fonts-3/font-synthesis-01-ref.html": [ + [ + {} + ] + ], + "css/css-fonts-3/font-synthesis-02-ref.html": [ + [ + {} + ] + ], + "css/css-fonts-3/font-synthesis-03-ref.html": [ + [ + {} + ] + ], + "css/css-fonts-3/font-synthesis-04-ref.html": [ + [ + {} + ] + ], + "css/css-fonts-3/font-synthesis-05-ref.html": [ + [ + {} + ] + ], "css/css-fonts-3/font-variant-01-ref.html": [ [ {} @@ -231281,6 +230949,26 @@ {} ] ], + "css/css-fonts-3/support/fonts/Exo-DemiBold.otf": [ + [ + {} + ] + ], + "css/css-fonts-3/support/fonts/Exo2-SemiBold.otf": [ + [ + {} + ] + ], + "css/css-fonts-3/support/fonts/Exo2-SemiBoldCondensed.otf": [ + [ + {} + ] + ], + "css/css-fonts-3/support/fonts/Exo2-SemiBoldExpanded.otf": [ + [ + {} + ] + ], "css/css-fonts-3/support/fonts/FontWithFancyFeatures.otf": [ [ {} @@ -231316,6 +231004,11 @@ {} ] ], + "css/css-fonts-3/support/fonts/fail.woff": [ + [ + {} + ] + ], "css/css-fonts-3/support/fonts/font-feature-settings-rendering-2-expected.html": [ [ {} @@ -238566,6 +238259,11 @@ {} ] ], + "css/css-fonts-3/support/fonts/pass.woff": [ + [ + {} + ] + ], "css/css-fonts-3/support/green15x15.png": [ [ {} @@ -238901,6 +238599,16 @@ {} ] ], + "css/css-grid-1/grid-definition/grid-template-columns-fit-content-001-ref.html": [ + [ + {} + ] + ], + "css/css-grid-1/grid-definition/grid-template-rows-fit-content-001-ref.html": [ + [ + {} + ] + ], "css/css-grid-1/grid-definition/support/testing-utils.js": [ [ {} @@ -239021,11 +238729,6 @@ {} ] ], - "css/css-grid-1/support/check-layout-th.js": [ - [ - {} - ] - ], "css/css-grid-1/support/grid-alignment.css": [ [ {} @@ -239071,6 +238774,11 @@ {} ] ], + "css/css-images-3/gradients-with-transparent-ref.html": [ + [ + {} + ] + ], "css/css-images-3/linear-gradient-ref.html": [ [ {} @@ -242716,11 +242424,6 @@ {} ] ], - "css/css-tables-3/support/check-layout-th.js": [ - [ - {} - ] - ], "css/css-tables-3/tools/markup-generator.html": [ [ {} @@ -252356,6 +252059,11 @@ {} ] ], + "css/css3-color/t44-currentcolor-inherited-c-ref.xht": [ + [ + {} + ] + ], "css/css3-selectors/CHANGES": [ [ {} @@ -254191,6 +253899,11 @@ {} ] ], + "css/filter-effects-1/parsing/resources/parsing-testcommon.js": [ + [ + {} + ] + ], "css/filter-effects-1/reference/filters-opacity-001-ref.html": [ [ {} @@ -262311,6 +262024,11 @@ {} ] ], + "fetch/api/resources/keepalive-iframe.html": [ + [ + {} + ] + ], "fetch/api/resources/method.py": [ [ {} @@ -269731,6 +269449,11 @@ {} ] ], + "html/editing/focus/processing-model/support/preventScroll-helper.html": [ + [ + {} + ] + ], "html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/.gitkeep": [ [ {} @@ -272771,6 +272494,16 @@ {} ] ], + "html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-dependent.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-root.js": [ + [ + {} + ] + ], "html/semantics/scripting-1/the-script-element/module/import-something-namespace.js": [ [ {} @@ -272961,6 +272694,16 @@ {} ] ], + "html/semantics/scripting-1/the-script-element/module/resources/404-but-js.asis": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/resources/500-but-js.asis": [ + [ + {} + ] + ], "html/semantics/scripting-1/the-script-element/module/resources/check-cookie.py": [ [ {} @@ -272996,6 +272739,21 @@ {} ] ], + "html/semantics/scripting-1/the-script-element/module/resources/imports-404-but-js.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/resources/imports-500-but-js.js": [ + [ + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/resources/imports-b-cross-origin.sub.js": [ + [ + {} + ] + ], "html/semantics/scripting-1/the-script-element/module/set-currentScript-on-window.js": [ [ {} @@ -274496,6 +274254,11 @@ {} ] ], + "interfaces/ambient-light.idl": [ + [ + {} + ] + ], "interfaces/clipboard.idl": [ [ {} @@ -274576,6 +274339,11 @@ {} ] ], + "interfaces/wake-lock.idl": [ + [ + {} + ] + ], "interfaces/web-share.idl": [ [ {} @@ -274666,6 +274434,11 @@ {} ] ], + "longtask-timing/shared-renderer/resources/frame-with-longtask.html": [ + [ + {} + ] + ], "magnetometer/OWNERS": [ [ {} @@ -275306,657 +275079,577 @@ {} ] ], - "mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/keep-scheme-redirect/allowed.https.html.headers": [ - [ - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/no-redirect/allowed.https.html.headers": [ - [ - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/fetch-request/top-level/keep-scheme-redirect/allowed.https.html.headers": [ - [ - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/fetch-request/top-level/no-redirect/allowed.https.html.headers": [ - [ - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/form-tag/top-level/keep-scheme-redirect/allowed.https.html.headers": [ - [ - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/form-tag/top-level/no-redirect/allowed.https.html.headers": [ - [ - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/iframe-tag/top-level/keep-scheme-redirect/allowed.https.html.headers": [ - [ - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/iframe-tag/top-level/no-redirect/allowed.https.html.headers": [ - [ - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/img-tag/top-level/keep-scheme-redirect/allowed.https.html.headers": [ - [ - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/img-tag/top-level/no-redirect/allowed.https.html.headers": [ - [ - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/link-css-tag/top-level/keep-scheme-redirect/allowed.https.html.headers": [ - [ - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/link-css-tag/top-level/no-redirect/allowed.https.html.headers": [ - [ - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/link-prefetch-tag/top-level/keep-scheme-redirect/allowed.https.html.headers": [ - [ - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/link-prefetch-tag/top-level/no-redirect/allowed.https.html.headers": [ - [ - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/object-tag/top-level/keep-scheme-redirect/allowed.https.html.headers": [ + "mixed-content/audio-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/allowed/http-csp/same-host-https/object-tag/top-level/no-redirect/allowed.https.html.headers": [ + "mixed-content/audio-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/allowed/http-csp/same-host-https/picture-tag/top-level/keep-scheme-redirect/allowed.https.html.headers": [ + "mixed-content/audio-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/allowed/http-csp/same-host-https/picture-tag/top-level/no-redirect/allowed.https.html.headers": [ + "mixed-content/audio-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/allowed/http-csp/same-host-https/script-tag/top-level/keep-scheme-redirect/allowed.https.html.headers": [ + "mixed-content/audio-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/allowed/http-csp/same-host-https/script-tag/top-level/no-redirect/allowed.https.html.headers": [ + "mixed-content/audio-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/allowed/http-csp/same-host-https/video-tag/top-level/keep-scheme-redirect/allowed.https.html.headers": [ + "mixed-content/audio-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ [ {} ] ], - "mixed-content/allowed/http-csp/same-host-https/video-tag/top-level/no-redirect/allowed.https.html.headers": [ + "mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ [ {} ] ], - "mixed-content/allowed/http-csp/same-host-https/worker-request/top-level/keep-scheme-redirect/allowed.https.html.headers": [ + "mixed-content/fetch-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/allowed/http-csp/same-host-https/worker-request/top-level/no-redirect/allowed.https.html.headers": [ + "mixed-content/fetch-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/allowed/http-csp/same-host-https/xhr-request/top-level/keep-scheme-redirect/allowed.https.html.headers": [ + "mixed-content/fetch-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/allowed/http-csp/same-host-https/xhr-request/top-level/no-redirect/allowed.https.html.headers": [ + "mixed-content/fetch-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/allowed/http-csp/same-host-wss/websocket-request/top-level/keep-scheme-redirect/websocket-allowed.https.html.headers": [ + "mixed-content/fetch-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/allowed/http-csp/same-host-wss/websocket-request/top-level/no-redirect/websocket-allowed.https.html.headers": [ + "mixed-content/fetch-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/fetch-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/fetch-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ - [ - {} - ] - ], - "mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ - [ - {} - ] - ], - "mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/generic/common.js": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/generic/expect.py": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/generic/mixed-content-test-case.js": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/generic/sanity-checker.js": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/generic/template/disclaimer.template": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/generic/template/spec_json.js.template": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/generic/template/test.debug.html.template": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/generic/template/test.js.template": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/generic/template/test.release.html.template": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/generic/template/test_description.template": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/generic/tools/__init__.py": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/generic/tools/clean.py": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/generic/tools/common_paths.py": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/generic/tools/generate.py": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/generic/tools/regenerate": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/generic/tools/spec_validator.py": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/generic/worker.js": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/img-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/img-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/img-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/img-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/img-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/img-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html.headers": [ + "mixed-content/img-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html.headers": [ + "mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html.headers": [ + "mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-css-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-css-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-css-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-css-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-css-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/object-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/object-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/object-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/object-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/object-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/object-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/object-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/object-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/picture-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/picture-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/picture-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/picture-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html.headers": [ + "mixed-content/picture-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html.headers": [ + "mixed-content/picture-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html.headers": [ + "mixed-content/picture-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ [ {} ] ], - "mixed-content/generic/common.js": [ + "mixed-content/picture-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ [ {} ] ], - "mixed-content/generic/expect.py": [ + "mixed-content/script-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/generic/mixed-content-test-case.js": [ + "mixed-content/script-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/generic/sanity-checker.js": [ + "mixed-content/script-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/generic/template/disclaimer.template": [ + "mixed-content/script-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/generic/template/spec_json.js.template": [ + "mixed-content/script-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/generic/template/test.debug.html.template": [ + "mixed-content/script-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/generic/template/test.js.template": [ + "mixed-content/script-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ [ {} ] ], - "mixed-content/generic/template/test.release.html.template": [ + "mixed-content/script-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ [ {} ] ], - "mixed-content/generic/template/test_description.template": [ + "mixed-content/spec.src.json": [ [ {} ] ], - "mixed-content/generic/tools/__init__.py": [ + "mixed-content/spec_json.js": [ [ {} ] ], - "mixed-content/generic/tools/clean.py": [ + "mixed-content/video-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/generic/tools/common_paths.py": [ + "mixed-content/video-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/generic/tools/generate.py": [ + "mixed-content/video-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/generic/tools/regenerate": [ + "mixed-content/video-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/generic/tools/spec_validator.py": [ + "mixed-content/video-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/generic/worker.js": [ + "mixed-content/video-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/video-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/video-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/websocket-request/http-csp/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/websocket-request/http-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/websocket-request/http-csp/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/websocket-request/http-csp/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/websocket-request/http-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/worker-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/worker-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/worker-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/worker-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/worker-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/worker-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/worker-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/worker-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/xhr-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/xhr-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/xhr-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/xhr-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/xhr-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/xhr-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ [ {} ] ], - "mixed-content/spec.src.json": [ + "mixed-content/xhr-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ [ {} ] ], - "mixed-content/spec_json.js": [ + "mixed-content/xhr-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ [ {} ] @@ -279436,16 +279129,6 @@ {} ] ], - "security/support/window-name-navigation.sub.html": [ - [ - {} - ] - ], - "security/support/window-name-test.sub.html": [ - [ - {} - ] - ], "selection/OWNERS": [ [ {} @@ -280731,16 +280414,6 @@ {} ] ], - "service-workers/service-worker/resources/request-body-blob-iframe.html": [ - [ - {} - ] - ], - "service-workers/service-worker/resources/request-body-blob-worker.js": [ - [ - {} - ] - ], "service-workers/service-worker/resources/request-end-to-end-worker.js": [ [ {} @@ -282191,7 +281864,12 @@ {} ] ], - "viewport/viewport_support.js": [ + "visual-viewport/OWNERS": [ + [ + {} + ] + ], + "visual-viewport/viewport_support.js": [ [ {} ] @@ -282226,6 +281904,11 @@ {} ] ], + "wake-lock/OWNERS": [ + [ + {} + ] + ], "wasm/compile_worker.js": [ [ {} @@ -282356,6 +282039,26 @@ {} ] ], + "webaudio/chrome/resources/audioparam-testing.js": [ + [ + {} + ] + ], + "webaudio/chrome/resources/audit-util.js": [ + [ + {} + ] + ], + "webaudio/chrome/resources/audit.js": [ + [ + {} + ] + ], + "webaudio/chrome/resources/start-stop-exceptions.js": [ + [ + {} + ] + ], "webaudio/js/buffer-loader.js": [ [ {} @@ -282596,6 +282299,11 @@ {} ] ], + "webdriver/tests/sessions/new_session/support/__init__.py": [ + [ + {} + ] + ], "webdriver/tests/sessions/new_session/support/create.py": [ [ {} @@ -293891,11 +293599,31 @@ {} ] ], + "worklets/resources/referrer-tests.js": [ + [ + {} + ] + ], + "worklets/resources/referrer-window.html": [ + [ + {} + ] + ], + "worklets/resources/referrer.py": [ + [ + {} + ] + ], "worklets/resources/throwing-worklet-script.js": [ [ {} ] ], + "worklets/resources/worklet-test-utils.js": [ + [ + {} + ] + ], "x-frame-options/support/helper.js": [ [ {} @@ -298999,6 +298727,12 @@ {} ] ], + "IndexedDB/idbcursor-request-source.html": [ + [ + "/IndexedDB/idbcursor-request-source.html", + {} + ] + ], "IndexedDB/idbcursor-reused.htm": [ [ "/IndexedDB/idbcursor-reused.htm", @@ -299761,6 +299495,12 @@ } ] ], + "IndexedDB/idbindex-request-source.html": [ + [ + "/IndexedDB/idbindex-request-source.html", + {} + ] + ], "IndexedDB/idbindex_count.htm": [ [ "/IndexedDB/idbindex_count.htm", @@ -300027,6 +299767,12 @@ } ] ], + "IndexedDB/idbobjectstore-request-source.html": [ + [ + "/IndexedDB/idbobjectstore-request-source.html", + {} + ] + ], "IndexedDB/idbobjectstore-transaction-SameObject.html": [ [ "/IndexedDB/idbobjectstore-transaction-SameObject.html", @@ -303777,747 +303523,189 @@ {} ] ], - "content-security-policy/blink-contrib-2/base-uri-allow.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/base-uri-allow.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/base-uri-deny.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/base-uri-deny.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/form-action-src-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/form-action-src-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/form-action-src-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/form-action-src-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/form-action-src-default-ignored.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/form-action-src-default-ignored.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/form-action-src-get-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/form-action-src-get-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/form-action-src-get-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/form-action-src-get-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/form-action-src-javascript-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/form-action-src-javascript-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/form-action-src-redirect-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/form-action-src-redirect-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/meta-outside-head.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/meta-outside-head.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/plugintypes-mismatched-data.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/plugintypes-mismatched-data.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/plugintypes-mismatched-url.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/plugintypes-mismatched-url.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/plugintypes-notype-data.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/plugintypes-notype-data.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/plugintypes-notype-url.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/plugintypes-notype-url.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/plugintypes-nourl-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/plugintypes-nourl-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/plugintypes-nourl-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/plugintypes-nourl-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/script-src-wildcards-disallowed.html": [ - [ - "/content-security-policy/blink-contrib-2/script-src-wildcards-disallowed.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/scripthash-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/scripthash-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/scripthash-basic-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/scripthash-basic-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/scripthash-default-src.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/scripthash-default-src.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/scripthash-ignore-unsafeinline.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/scripthash-ignore-unsafeinline.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/scripthash-unicode-normalization.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/scripthash-unicode-normalization.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/scriptnonce-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/scriptnonce-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/scriptnonce-and-scripthash.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/scriptnonce-and-scripthash.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/scriptnonce-basic-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/scriptnonce-basic-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/scriptnonce-ignore-unsafeinline.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/scriptnonce-ignore-unsafeinline.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/scriptnonce-redirect.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/scriptnonce-redirect.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/securitypolicyviolation-block-cross-origin-image-from-script.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/securitypolicyviolation-block-cross-origin-image-from-script.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/securitypolicyviolation-block-cross-origin-image.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/securitypolicyviolation-block-cross-origin-image.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/securitypolicyviolation-block-image-from-script.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/securitypolicyviolation-block-image-from-script.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/securitypolicyviolation-block-image.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/securitypolicyviolation-block-image.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/stylehash-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/stylehash-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/stylehash-basic-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/stylehash-basic-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/stylehash-default-src.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/stylehash-default-src.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/stylenonce-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/stylenonce-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib-2/stylenonce-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib-2/stylenonce-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/blob-urls-do-not-match-self.sub.html": [ - [ - "/content-security-policy/blink-contrib/blob-urls-do-not-match-self.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/blob-urls-match-blob.sub.html": [ - [ - "/content-security-policy/blink-contrib/blob-urls-match-blob.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/combine-header-and-meta-policies.sub.html": [ - [ - "/content-security-policy/blink-contrib/combine-header-and-meta-policies.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/connect-src-beacon-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib/connect-src-beacon-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/connect-src-beacon-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib/connect-src-beacon-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/connect-src-beacon-redirect-to-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib/connect-src-beacon-redirect-to-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/connect-src-eventsource-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib/connect-src-eventsource-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/connect-src-eventsource-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib/connect-src-eventsource-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/connect-src-eventsource-redirect-to-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib/connect-src-eventsource-redirect-to-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/connect-src-websocket-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib/connect-src-websocket-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/connect-src-websocket-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib/connect-src-websocket-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/connect-src-xmlhttprequest-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib/connect-src-xmlhttprequest-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/connect-src-xmlhttprequest-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib/connect-src-xmlhttprequest-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/connect-src-xmlhttprequest-redirect-to-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib/connect-src-xmlhttprequest-redirect-to-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/default-src-inline-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib/default-src-inline-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/default-src-inline-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib/default-src-inline-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/duplicate-directive.sub.html": [ - [ - "/content-security-policy/blink-contrib/duplicate-directive.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/eval-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib/eval-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/eval-blocked-and-sends-report.sub.html": [ + "content-security-policy/blob/blob-urls-do-not-match-self.sub.html": [ [ - "/content-security-policy/blink-contrib/eval-blocked-and-sends-report.sub.html", + "/content-security-policy/blob/blob-urls-do-not-match-self.sub.html", {} ] ], - "content-security-policy/blink-contrib/eval-blocked.sub.html": [ + "content-security-policy/blob/blob-urls-match-blob.sub.html": [ [ - "/content-security-policy/blink-contrib/eval-blocked.sub.html", + "/content-security-policy/blob/blob-urls-match-blob.sub.html", {} ] ], - "content-security-policy/blink-contrib/eval-scripts-setInterval-allowed.sub.html": [ + "content-security-policy/blob/self-doesnt-match-blob.sub.html": [ [ - "/content-security-policy/blink-contrib/eval-scripts-setInterval-allowed.sub.html", + "/content-security-policy/blob/self-doesnt-match-blob.sub.html", {} ] ], - "content-security-policy/blink-contrib/eval-scripts-setInterval-blocked.sub.html": [ + "content-security-policy/blob/star-doesnt-match-blob.sub.html": [ [ - "/content-security-policy/blink-contrib/eval-scripts-setInterval-blocked.sub.html", + "/content-security-policy/blob/star-doesnt-match-blob.sub.html", {} ] ], - "content-security-policy/blink-contrib/eval-scripts-setTimeout-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib/eval-scripts-setTimeout-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/eval-scripts-setTimeout-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib/eval-scripts-setTimeout-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/filesystem-urls-do-not-match-self.sub.html": [ - [ - "/content-security-policy/blink-contrib/filesystem-urls-do-not-match-self.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/filesystem-urls-match-filesystem.sub.html": [ - [ - "/content-security-policy/blink-contrib/filesystem-urls-match-filesystem.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/frame-src-about-blank-allowed-by-default.sub.html": [ - [ - "/content-security-policy/blink-contrib/frame-src-about-blank-allowed-by-default.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/frame-src-about-blank-allowed-by-scheme.sub.html": [ - [ - "/content-security-policy/blink-contrib/frame-src-about-blank-allowed-by-scheme.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/frame-src-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib/frame-src-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/frame-src-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib/frame-src-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/frame-src-cross-origin-load.sub.html": [ - [ - "/content-security-policy/blink-contrib/frame-src-cross-origin-load.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/function-constructor-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib/function-constructor-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/function-constructor-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib/function-constructor-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/image-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib/image-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/image-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib/image-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/image-full-host-wildcard-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib/image-full-host-wildcard-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/injected-inline-script-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib/injected-inline-script-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/injected-inline-script-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib/injected-inline-script-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/injected-inline-style-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib/injected-inline-style-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/injected-inline-style-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib/injected-inline-style-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/inline-style-allowed-while-cloning-objects.sub.html": [ - [ - "/content-security-policy/blink-contrib/inline-style-allowed-while-cloning-objects.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/inline-style-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib/inline-style-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/inline-style-attribute-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib/inline-style-attribute-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/inline-style-attribute-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib/inline-style-attribute-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/inline-style-attribute-on-html.sub.html": [ - [ - "/content-security-policy/blink-contrib/inline-style-attribute-on-html.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/inline-style-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib/inline-style-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/media-src-track-block.sub.html": [ - [ - "/content-security-policy/blink-contrib/media-src-track-block.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/object-in-svg-foreignobject.sub.html": [ - [ - "/content-security-policy/blink-contrib/object-in-svg-foreignobject.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/object-src-no-url-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib/object-src-no-url-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/object-src-no-url-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib/object-src-no-url-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/object-src-url-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib/object-src-url-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/object-src-url-blocked.sub.html": [ - [ - "/content-security-policy/blink-contrib/object-src-url-blocked.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/report-blocked-data-uri.sub.html": [ - [ - "/content-security-policy/blink-contrib/report-blocked-data-uri.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/report-cross-origin-no-cookies.sub.html": [ - [ - "/content-security-policy/blink-contrib/report-cross-origin-no-cookies.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/report-disallowed-from-meta.sub.html": [ - [ - "/content-security-policy/blink-contrib/report-disallowed-from-meta.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/report-same-origin-with-cookies.sub.html": [ - [ - "/content-security-policy/blink-contrib/report-same-origin-with-cookies.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/report-uri-from-inline-javascript.sub.html": [ - [ - "/content-security-policy/blink-contrib/report-uri-from-inline-javascript.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/report-uri-from-javascript.sub.html": [ - [ - "/content-security-policy/blink-contrib/report-uri-from-javascript.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/script-src-overrides-default-src.sub.html": [ - [ - "/content-security-policy/blink-contrib/script-src-overrides-default-src.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/self-doesnt-match-blob.sub.html": [ - [ - "/content-security-policy/blink-contrib/self-doesnt-match-blob.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/shared-worker-connect-src-allowed.sub.html": [ - [ - "/content-security-policy/blink-contrib/shared-worker-connect-src-allowed.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/shared-worker-connect-src-blocked.sub.html": [ + "content-security-policy/child-src/child-src-about-blank-allowed-by-default.sub.html": [ [ - "/content-security-policy/blink-contrib/shared-worker-connect-src-blocked.sub.html", + "/content-security-policy/child-src/child-src-about-blank-allowed-by-default.sub.html", {} ] ], - "content-security-policy/blink-contrib/source-list-parsing-paths-03.sub.html": [ + "content-security-policy/child-src/child-src-about-blank-allowed-by-scheme.sub.html": [ [ - "/content-security-policy/blink-contrib/source-list-parsing-paths-03.sub.html", + "/content-security-policy/child-src/child-src-about-blank-allowed-by-scheme.sub.html", {} ] ], - "content-security-policy/blink-contrib/srcdoc-doesnt-bypass-script-src.sub.html": [ + "content-security-policy/child-src/child-src-allowed.sub.html": [ [ - "/content-security-policy/blink-contrib/srcdoc-doesnt-bypass-script-src.sub.html", + "/content-security-policy/child-src/child-src-allowed.sub.html", {} ] ], - "content-security-policy/blink-contrib/star-doesnt-match-blob.sub.html": [ + "content-security-policy/child-src/child-src-blocked.sub.html": [ [ - "/content-security-policy/blink-contrib/star-doesnt-match-blob.sub.html", + "/content-security-policy/child-src/child-src-blocked.sub.html", {} ] ], - "content-security-policy/blink-contrib/style-allowed.sub.html": [ + "content-security-policy/child-src/child-src-conflicting-frame-src.sub.html": [ [ - "/content-security-policy/blink-contrib/style-allowed.sub.html", + "/content-security-policy/child-src/child-src-conflicting-frame-src.sub.html", {} ] ], - "content-security-policy/blink-contrib/style-blocked.sub.html": [ + "content-security-policy/child-src/child-src-cross-origin-load.sub.html": [ [ - "/content-security-policy/blink-contrib/style-blocked.sub.html", + "/content-security-policy/child-src/child-src-cross-origin-load.sub.html", {} ] ], - "content-security-policy/blink-contrib/worker-connect-src-allowed.sub.html": [ + "content-security-policy/child-src/child-src-redirect-blocked.sub.html": [ [ - "/content-security-policy/blink-contrib/worker-connect-src-allowed.sub.html", + "/content-security-policy/child-src/child-src-redirect-blocked.sub.html", {} ] ], - "content-security-policy/blink-contrib/worker-connect-src-blocked.sub.html": [ + "content-security-policy/child-src/child-src-worker-allowed.sub.html": [ [ - "/content-security-policy/blink-contrib/worker-connect-src-blocked.sub.html", + "/content-security-policy/child-src/child-src-worker-allowed.sub.html", {} ] ], - "content-security-policy/blink-contrib/worker-eval-blocked.sub.html": [ + "content-security-policy/child-src/child-src-worker-blocked.sub.html": [ [ - "/content-security-policy/blink-contrib/worker-eval-blocked.sub.html", + "/content-security-policy/child-src/child-src-worker-blocked.sub.html", {} ] ], - "content-security-policy/blink-contrib/worker-from-guid.sub.html": [ + "content-security-policy/connect-src/connect-src-beacon-allowed.sub.html": [ [ - "/content-security-policy/blink-contrib/worker-from-guid.sub.html", + "/content-security-policy/connect-src/connect-src-beacon-allowed.sub.html", {} ] ], - "content-security-policy/blink-contrib/worker-function-function-blocked.sub.html": [ + "content-security-policy/connect-src/connect-src-beacon-blocked.sub.html": [ [ - "/content-security-policy/blink-contrib/worker-function-function-blocked.sub.html", + "/content-security-policy/connect-src/connect-src-beacon-blocked.sub.html", {} ] ], - "content-security-policy/blink-contrib/worker-importscripts-blocked.sub.html": [ + "content-security-policy/connect-src/connect-src-beacon-redirect-to-blocked.sub.html": [ [ - "/content-security-policy/blink-contrib/worker-importscripts-blocked.sub.html", + "/content-security-policy/connect-src/connect-src-beacon-redirect-to-blocked.sub.html", {} ] ], - "content-security-policy/blink-contrib/worker-script-src.sub.html": [ + "content-security-policy/connect-src/connect-src-eventsource-allowed.sub.html": [ [ - "/content-security-policy/blink-contrib/worker-script-src.sub.html", + "/content-security-policy/connect-src/connect-src-eventsource-allowed.sub.html", {} ] ], - "content-security-policy/blink-contrib/worker-set-timeout-blocked.sub.html": [ + "content-security-policy/connect-src/connect-src-eventsource-blocked.sub.html": [ [ - "/content-security-policy/blink-contrib/worker-set-timeout-blocked.sub.html", + "/content-security-policy/connect-src/connect-src-eventsource-blocked.sub.html", {} ] ], - "content-security-policy/child-src/child-src-about-blank-allowed-by-default.sub.html": [ + "content-security-policy/connect-src/connect-src-eventsource-redirect-to-blocked.sub.html": [ [ - "/content-security-policy/child-src/child-src-about-blank-allowed-by-default.sub.html", + "/content-security-policy/connect-src/connect-src-eventsource-redirect-to-blocked.sub.html", {} ] ], - "content-security-policy/child-src/child-src-about-blank-allowed-by-scheme.sub.html": [ + "content-security-policy/connect-src/connect-src-websocket-allowed.sub.html": [ [ - "/content-security-policy/child-src/child-src-about-blank-allowed-by-scheme.sub.html", + "/content-security-policy/connect-src/connect-src-websocket-allowed.sub.html", {} ] ], - "content-security-policy/child-src/child-src-allowed.sub.html": [ + "content-security-policy/connect-src/connect-src-websocket-blocked.sub.html": [ [ - "/content-security-policy/child-src/child-src-allowed.sub.html", + "/content-security-policy/connect-src/connect-src-websocket-blocked.sub.html", {} ] ], - "content-security-policy/child-src/child-src-blocked.sub.html": [ + "content-security-policy/connect-src/connect-src-xmlhttprequest-allowed.sub.html": [ [ - "/content-security-policy/child-src/child-src-blocked.sub.html", + "/content-security-policy/connect-src/connect-src-xmlhttprequest-allowed.sub.html", {} ] ], - "content-security-policy/child-src/child-src-conflicting-frame-src.sub.html": [ + "content-security-policy/connect-src/connect-src-xmlhttprequest-blocked.sub.html": [ [ - "/content-security-policy/child-src/child-src-conflicting-frame-src.sub.html", + "/content-security-policy/connect-src/connect-src-xmlhttprequest-blocked.sub.html", {} ] ], - "content-security-policy/child-src/child-src-cross-origin-load.sub.html": [ + "content-security-policy/connect-src/connect-src-xmlhttprequest-redirect-to-blocked.sub.html": [ [ - "/content-security-policy/child-src/child-src-cross-origin-load.sub.html", + "/content-security-policy/connect-src/connect-src-xmlhttprequest-redirect-to-blocked.sub.html", {} ] ], - "content-security-policy/child-src/child-src-redirect-blocked.sub.html": [ + "content-security-policy/connect-src/shared-worker-connect-src-allowed.sub.html": [ [ - "/content-security-policy/child-src/child-src-redirect-blocked.sub.html", + "/content-security-policy/connect-src/shared-worker-connect-src-allowed.sub.html", {} ] ], - "content-security-policy/child-src/child-src-worker-allowed.sub.html": [ + "content-security-policy/connect-src/shared-worker-connect-src-blocked.sub.html": [ [ - "/content-security-policy/child-src/child-src-worker-allowed.sub.html", + "/content-security-policy/connect-src/shared-worker-connect-src-blocked.sub.html", {} ] ], - "content-security-policy/child-src/child-src-worker-blocked.sub.html": [ + "content-security-policy/connect-src/worker-connect-src-allowed.sub.html": [ [ - "/content-security-policy/child-src/child-src-worker-blocked.sub.html", + "/content-security-policy/connect-src/worker-connect-src-allowed.sub.html", {} ] ], - "content-security-policy/connect-src/connect-src-beacon-blocked.sub.html": [ + "content-security-policy/connect-src/worker-connect-src-blocked.sub.html": [ [ - "/content-security-policy/connect-src/connect-src-beacon-blocked.sub.html", + "/content-security-policy/connect-src/worker-connect-src-blocked.sub.html", {} ] ], - "content-security-policy/connect-src/connect-src-eventsource-blocked.sub.html": [ + "content-security-policy/connect-src/worker-from-guid.sub.html": [ [ - "/content-security-policy/connect-src/connect-src-eventsource-blocked.sub.html", + "/content-security-policy/connect-src/worker-from-guid.sub.html", {} ] ], - "content-security-policy/connect-src/connect-src-websocket-blocked.sub.html": [ + "content-security-policy/default-src/default-src-inline-allowed.sub.html": [ [ - "/content-security-policy/connect-src/connect-src-websocket-blocked.sub.html", + "/content-security-policy/default-src/default-src-inline-allowed.sub.html", {} ] ], - "content-security-policy/connect-src/connect-src-xmlhttprequest-blocked.sub.html": [ + "content-security-policy/default-src/default-src-inline-blocked.sub.html": [ [ - "/content-security-policy/connect-src/connect-src-xmlhttprequest-blocked.sub.html", + "/content-security-policy/default-src/default-src-inline-blocked.sub.html", {} ] ], @@ -304647,6 +303835,48 @@ {} ] ], + "content-security-policy/form-action/form-action-src-allowed.sub.html": [ + [ + "/content-security-policy/form-action/form-action-src-allowed.sub.html", + {} + ] + ], + "content-security-policy/form-action/form-action-src-blocked.sub.html": [ + [ + "/content-security-policy/form-action/form-action-src-blocked.sub.html", + {} + ] + ], + "content-security-policy/form-action/form-action-src-default-ignored.sub.html": [ + [ + "/content-security-policy/form-action/form-action-src-default-ignored.sub.html", + {} + ] + ], + "content-security-policy/form-action/form-action-src-get-allowed.sub.html": [ + [ + "/content-security-policy/form-action/form-action-src-get-allowed.sub.html", + {} + ] + ], + "content-security-policy/form-action/form-action-src-get-blocked.sub.html": [ + [ + "/content-security-policy/form-action/form-action-src-get-blocked.sub.html", + {} + ] + ], + "content-security-policy/form-action/form-action-src-javascript-blocked.sub.html": [ + [ + "/content-security-policy/form-action/form-action-src-javascript-blocked.sub.html", + {} + ] + ], + "content-security-policy/form-action/form-action-src-redirect-blocked.sub.html": [ + [ + "/content-security-policy/form-action/form-action-src-redirect-blocked.sub.html", + {} + ] + ], "content-security-policy/frame-ancestors/frame-ancestors-nested-cross-in-cross-none-block.html": [ [ "/content-security-policy/frame-ancestors/frame-ancestors-nested-cross-in-cross-none-block.html", @@ -304821,6 +304051,36 @@ {} ] ], + "content-security-policy/frame-src/frame-src-about-blank-allowed-by-default.sub.html": [ + [ + "/content-security-policy/frame-src/frame-src-about-blank-allowed-by-default.sub.html", + {} + ] + ], + "content-security-policy/frame-src/frame-src-about-blank-allowed-by-scheme.sub.html": [ + [ + "/content-security-policy/frame-src/frame-src-about-blank-allowed-by-scheme.sub.html", + {} + ] + ], + "content-security-policy/frame-src/frame-src-allowed.sub.html": [ + [ + "/content-security-policy/frame-src/frame-src-allowed.sub.html", + {} + ] + ], + "content-security-policy/frame-src/frame-src-blocked.sub.html": [ + [ + "/content-security-policy/frame-src/frame-src-blocked.sub.html", + {} + ] + ], + "content-security-policy/frame-src/frame-src-cross-origin-load.sub.html": [ + [ + "/content-security-policy/frame-src/frame-src-cross-origin-load.sub.html", + {} + ] + ], "content-security-policy/frame-src/frame-src-redirect.html": [ [ "/content-security-policy/frame-src/frame-src-redirect.html", @@ -304833,6 +304093,24 @@ {} ] ], + "content-security-policy/generic/duplicate-directive.sub.html": [ + [ + "/content-security-policy/generic/duplicate-directive.sub.html", + {} + ] + ], + "content-security-policy/generic/filesystem-urls-do-not-match-self.sub.html": [ + [ + "/content-security-policy/generic/filesystem-urls-do-not-match-self.sub.html", + {} + ] + ], + "content-security-policy/generic/filesystem-urls-match-filesystem.sub.html": [ + [ + "/content-security-policy/generic/filesystem-urls-match-filesystem.sub.html", + {} + ] + ], "content-security-policy/generic/generic-0_1-img-src.html": [ [ "/content-security-policy/generic/generic-0_1-img-src.html", @@ -304875,9 +304153,9 @@ {} ] ], - "content-security-policy/generic/generic-0_8.html": [ + "content-security-policy/generic/generic-0_8.sub.html": [ [ - "/content-security-policy/generic/generic-0_8.html", + "/content-security-policy/generic/generic-0_8.sub.html", {} ] ], @@ -304899,6 +304177,24 @@ {} ] ], + "content-security-policy/generic/policy-does-not-affect-child.sub.html": [ + [ + "/content-security-policy/generic/policy-does-not-affect-child.sub.html", + {} + ] + ], + "content-security-policy/img-src/icon-allowed.sub.html": [ + [ + "/content-security-policy/img-src/icon-allowed.sub.html", + {} + ] + ], + "content-security-policy/img-src/icon-blocked.sub.html": [ + [ + "/content-security-policy/img-src/icon-blocked.sub.html", + {} + ] + ], "content-security-policy/img-src/img-src-4_1.sub.html": [ [ "/content-security-policy/img-src/img-src-4_1.sub.html", @@ -304941,6 +304237,12 @@ {} ] ], + "content-security-policy/img-src/report-blocked-data-uri.sub.html": [ + [ + "/content-security-policy/img-src/report-blocked-data-uri.sub.html", + {} + ] + ], "content-security-policy/inheritance/iframe.html": [ [ "/content-security-policy/inheritance/iframe.html", @@ -304986,9 +304288,7 @@ "content-security-policy/media-src/media-src-7_1_2.sub.html": [ [ "/content-security-policy/media-src/media-src-7_1_2.sub.html", - { - "timeout": "long" - } + {} ] ], "content-security-policy/media-src/media-src-7_2.html": [ @@ -305000,9 +304300,7 @@ "content-security-policy/media-src/media-src-7_2_2.sub.html": [ [ "/content-security-policy/media-src/media-src-7_2_2.sub.html", - { - "timeout": "long" - } + {} ] ], "content-security-policy/media-src/media-src-7_3.sub.html": [ @@ -305020,9 +304318,7 @@ "content-security-policy/media-src/media-src-blocked.sub.html": [ [ "/content-security-policy/media-src/media-src-blocked.sub.html", - { - "timeout": "long" - } + {} ] ], "content-security-policy/media-src/media-src-redir-bug.sub.html": [ @@ -305031,6 +304327,12 @@ {} ] ], + "content-security-policy/meta/combine-header-and-meta-policies.sub.html": [ + [ + "/content-security-policy/meta/combine-header-and-meta-policies.sub.html", + {} + ] + ], "content-security-policy/meta/meta-img-src.html": [ [ "/content-security-policy/meta/meta-img-src.html", @@ -305043,6 +304345,12 @@ {} ] ], + "content-security-policy/meta/meta-outside-head.sub.html": [ + [ + "/content-security-policy/meta/meta-outside-head.sub.html", + {} + ] + ], "content-security-policy/navigation/javascript-url-navigation-inherits-csp.html": [ [ "/content-security-policy/navigation/javascript-url-navigation-inherits-csp.html", @@ -305101,12 +304409,146 @@ } ] ], + "content-security-policy/object-src/object-src-no-url-allowed.sub.html": [ + [ + "/content-security-policy/object-src/object-src-no-url-allowed.sub.html", + {} + ] + ], + "content-security-policy/object-src/object-src-no-url-blocked.sub.html": [ + [ + "/content-security-policy/object-src/object-src-no-url-blocked.sub.html", + {} + ] + ], + "content-security-policy/object-src/object-src-url-allowed.sub.html": [ + [ + "/content-security-policy/object-src/object-src-url-allowed.sub.html", + {} + ] + ], + "content-security-policy/object-src/object-src-url-blocked.sub.html": [ + [ + "/content-security-policy/object-src/object-src-url-blocked.sub.html", + {} + ] + ], + "content-security-policy/plugin-types/plugintypes-mismatched-data.sub.html": [ + [ + "/content-security-policy/plugin-types/plugintypes-mismatched-data.sub.html", + {} + ] + ], + "content-security-policy/plugin-types/plugintypes-mismatched-url.sub.html": [ + [ + "/content-security-policy/plugin-types/plugintypes-mismatched-url.sub.html", + {} + ] + ], + "content-security-policy/plugin-types/plugintypes-notype-data.sub.html": [ + [ + "/content-security-policy/plugin-types/plugintypes-notype-data.sub.html", + {} + ] + ], + "content-security-policy/plugin-types/plugintypes-notype-url.sub.html": [ + [ + "/content-security-policy/plugin-types/plugintypes-notype-url.sub.html", + {} + ] + ], + "content-security-policy/plugin-types/plugintypes-nourl-allowed.sub.html": [ + [ + "/content-security-policy/plugin-types/plugintypes-nourl-allowed.sub.html", + {} + ] + ], + "content-security-policy/plugin-types/plugintypes-nourl-blocked.sub.html": [ + [ + "/content-security-policy/plugin-types/plugintypes-nourl-blocked.sub.html", + {} + ] + ], + "content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html": [ + [ + "/content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html", + {} + ] + ], + "content-security-policy/reporting/reporting-api-report-only-sends-reports-on-violation.https.sub.html": [ + [ + "/content-security-policy/reporting/reporting-api-report-only-sends-reports-on-violation.https.sub.html", + {} + ] + ], + "content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-1.https.sub.html": [ + [ + "/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-1.https.sub.html", + {} + ] + ], + "content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-2.https.sub.html": [ + [ + "/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-2.https.sub.html", + { + "timeout": "long" + } + ] + ], + "content-security-policy/reporting/reporting-api-sends-reports-on-violation.https.sub.html": [ + [ + "/content-security-policy/reporting/reporting-api-sends-reports-on-violation.https.sub.html", + {} + ] + ], "content-security-policy/reporting/securitypolicyviolation-idl.html": [ [ "/content-security-policy/reporting/securitypolicyviolation-idl.html", {} ] ], + "content-security-policy/sandbox/iframe-inside-csp.sub.html": [ + [ + "/content-security-policy/sandbox/iframe-inside-csp.sub.html", + {} + ] + ], + "content-security-policy/sandbox/sandbox-allow-scripts-subframe.sub.html": [ + [ + "/content-security-policy/sandbox/sandbox-allow-scripts-subframe.sub.html", + {} + ] + ], + "content-security-policy/sandbox/sandbox-allow-scripts.sub.html": [ + [ + "/content-security-policy/sandbox/sandbox-allow-scripts.sub.html", + {} + ] + ], + "content-security-policy/sandbox/sandbox-empty-subframe.sub.html": [ + [ + "/content-security-policy/sandbox/sandbox-empty-subframe.sub.html", + {} + ] + ], + "content-security-policy/sandbox/sandbox-empty.sub.html": [ + [ + "/content-security-policy/sandbox/sandbox-empty.sub.html", + {} + ] + ], + "content-security-policy/script-src/injected-inline-script-allowed.sub.html": [ + [ + "/content-security-policy/script-src/injected-inline-script-allowed.sub.html", + {} + ] + ], + "content-security-policy/script-src/injected-inline-script-blocked.sub.html": [ + [ + "/content-security-policy/script-src/injected-inline-script-blocked.sub.html", + {} + ] + ], "content-security-policy/script-src/javascript-window-open-blocked.html": [ [ "/content-security-policy/script-src/javascript-window-open-blocked.html", @@ -305179,6 +304621,12 @@ {} ] ], + "content-security-policy/script-src/script-src-overrides-default-src.sub.html": [ + [ + "/content-security-policy/script-src/script-src-overrides-default-src.sub.html", + {} + ] + ], "content-security-policy/script-src/script-src-report-only-policy-works-with-external-hash-policy.html": [ [ "/content-security-policy/script-src/script-src-report-only-policy-works-with-external-hash-policy.html", @@ -305305,6 +304753,108 @@ {} ] ], + "content-security-policy/script-src/script-src-wildcards-disallowed.html": [ + [ + "/content-security-policy/script-src/script-src-wildcards-disallowed.html", + {} + ] + ], + "content-security-policy/script-src/scripthash-allowed.sub.html": [ + [ + "/content-security-policy/script-src/scripthash-allowed.sub.html", + {} + ] + ], + "content-security-policy/script-src/scripthash-basic-blocked.sub.html": [ + [ + "/content-security-policy/script-src/scripthash-basic-blocked.sub.html", + {} + ] + ], + "content-security-policy/script-src/scripthash-default-src.sub.html": [ + [ + "/content-security-policy/script-src/scripthash-default-src.sub.html", + {} + ] + ], + "content-security-policy/script-src/scripthash-ignore-unsafeinline.sub.html": [ + [ + "/content-security-policy/script-src/scripthash-ignore-unsafeinline.sub.html", + {} + ] + ], + "content-security-policy/script-src/scripthash-unicode-normalization.sub.html": [ + [ + "/content-security-policy/script-src/scripthash-unicode-normalization.sub.html", + {} + ] + ], + "content-security-policy/script-src/scriptnonce-allowed.sub.html": [ + [ + "/content-security-policy/script-src/scriptnonce-allowed.sub.html", + {} + ] + ], + "content-security-policy/script-src/scriptnonce-and-scripthash.sub.html": [ + [ + "/content-security-policy/script-src/scriptnonce-and-scripthash.sub.html", + {} + ] + ], + "content-security-policy/script-src/scriptnonce-basic-blocked.sub.html": [ + [ + "/content-security-policy/script-src/scriptnonce-basic-blocked.sub.html", + {} + ] + ], + "content-security-policy/script-src/scriptnonce-ignore-unsafeinline.sub.html": [ + [ + "/content-security-policy/script-src/scriptnonce-ignore-unsafeinline.sub.html", + {} + ] + ], + "content-security-policy/script-src/scriptnonce-redirect.sub.html": [ + [ + "/content-security-policy/script-src/scriptnonce-redirect.sub.html", + {} + ] + ], + "content-security-policy/script-src/srcdoc-doesnt-bypass-script-src.sub.html": [ + [ + "/content-security-policy/script-src/srcdoc-doesnt-bypass-script-src.sub.html", + {} + ] + ], + "content-security-policy/script-src/worker-eval-blocked.sub.html": [ + [ + "/content-security-policy/script-src/worker-eval-blocked.sub.html", + {} + ] + ], + "content-security-policy/script-src/worker-function-function-blocked.sub.html": [ + [ + "/content-security-policy/script-src/worker-function-function-blocked.sub.html", + {} + ] + ], + "content-security-policy/script-src/worker-importscripts-blocked.sub.html": [ + [ + "/content-security-policy/script-src/worker-importscripts-blocked.sub.html", + {} + ] + ], + "content-security-policy/script-src/worker-script-src.sub.html": [ + [ + "/content-security-policy/script-src/worker-script-src.sub.html", + {} + ] + ], + "content-security-policy/script-src/worker-set-timeout-blocked.sub.html": [ + [ + "/content-security-policy/script-src/worker-set-timeout-blocked.sub.html", + {} + ] + ], "content-security-policy/securitypolicyviolation/blockeduri-eval.html": [ [ "/content-security-policy/securitypolicyviolation/blockeduri-eval.html", @@ -305407,6 +304957,66 @@ {} ] ], + "content-security-policy/style-src/injected-inline-style-allowed.sub.html": [ + [ + "/content-security-policy/style-src/injected-inline-style-allowed.sub.html", + {} + ] + ], + "content-security-policy/style-src/injected-inline-style-blocked.sub.html": [ + [ + "/content-security-policy/style-src/injected-inline-style-blocked.sub.html", + {} + ] + ], + "content-security-policy/style-src/inline-style-allowed-while-cloning-objects.sub.html": [ + [ + "/content-security-policy/style-src/inline-style-allowed-while-cloning-objects.sub.html", + {} + ] + ], + "content-security-policy/style-src/inline-style-allowed.sub.html": [ + [ + "/content-security-policy/style-src/inline-style-allowed.sub.html", + {} + ] + ], + "content-security-policy/style-src/inline-style-attribute-allowed.sub.html": [ + [ + "/content-security-policy/style-src/inline-style-attribute-allowed.sub.html", + {} + ] + ], + "content-security-policy/style-src/inline-style-attribute-blocked.sub.html": [ + [ + "/content-security-policy/style-src/inline-style-attribute-blocked.sub.html", + {} + ] + ], + "content-security-policy/style-src/inline-style-attribute-on-html.sub.html": [ + [ + "/content-security-policy/style-src/inline-style-attribute-on-html.sub.html", + {} + ] + ], + "content-security-policy/style-src/inline-style-blocked.sub.html": [ + [ + "/content-security-policy/style-src/inline-style-blocked.sub.html", + {} + ] + ], + "content-security-policy/style-src/style-allowed.sub.html": [ + [ + "/content-security-policy/style-src/style-allowed.sub.html", + {} + ] + ], + "content-security-policy/style-src/style-blocked.sub.html": [ + [ + "/content-security-policy/style-src/style-blocked.sub.html", + {} + ] + ], "content-security-policy/style-src/style-src-error-event-fires.html": [ [ "/content-security-policy/style-src/style-src-error-event-fires.html", @@ -305539,6 +305149,36 @@ {} ] ], + "content-security-policy/style-src/stylehash-allowed.sub.html": [ + [ + "/content-security-policy/style-src/stylehash-allowed.sub.html", + {} + ] + ], + "content-security-policy/style-src/stylehash-basic-blocked.sub.html": [ + [ + "/content-security-policy/style-src/stylehash-basic-blocked.sub.html", + {} + ] + ], + "content-security-policy/style-src/stylehash-default-src.sub.html": [ + [ + "/content-security-policy/style-src/stylehash-default-src.sub.html", + {} + ] + ], + "content-security-policy/style-src/stylenonce-allowed.sub.html": [ + [ + "/content-security-policy/style-src/stylenonce-allowed.sub.html", + {} + ] + ], + "content-security-policy/style-src/stylenonce-blocked.sub.html": [ + [ + "/content-security-policy/style-src/stylenonce-blocked.sub.html", + {} + ] + ], "content-security-policy/svg/object-in-svg-foreignobject.sub.html": [ [ "/content-security-policy/svg/object-in-svg-foreignobject.sub.html", @@ -305569,6 +305209,66 @@ {} ] ], + "content-security-policy/unsafe-eval/eval-allowed.sub.html": [ + [ + "/content-security-policy/unsafe-eval/eval-allowed.sub.html", + {} + ] + ], + "content-security-policy/unsafe-eval/eval-blocked-and-sends-report.sub.html": [ + [ + "/content-security-policy/unsafe-eval/eval-blocked-and-sends-report.sub.html", + {} + ] + ], + "content-security-policy/unsafe-eval/eval-blocked-in-about-blank-iframe.sub.html": [ + [ + "/content-security-policy/unsafe-eval/eval-blocked-in-about-blank-iframe.sub.html", + {} + ] + ], + "content-security-policy/unsafe-eval/eval-blocked.sub.html": [ + [ + "/content-security-policy/unsafe-eval/eval-blocked.sub.html", + {} + ] + ], + "content-security-policy/unsafe-eval/eval-scripts-setInterval-allowed.sub.html": [ + [ + "/content-security-policy/unsafe-eval/eval-scripts-setInterval-allowed.sub.html", + {} + ] + ], + "content-security-policy/unsafe-eval/eval-scripts-setInterval-blocked.sub.html": [ + [ + "/content-security-policy/unsafe-eval/eval-scripts-setInterval-blocked.sub.html", + {} + ] + ], + "content-security-policy/unsafe-eval/eval-scripts-setTimeout-allowed.sub.html": [ + [ + "/content-security-policy/unsafe-eval/eval-scripts-setTimeout-allowed.sub.html", + {} + ] + ], + "content-security-policy/unsafe-eval/eval-scripts-setTimeout-blocked.sub.html": [ + [ + "/content-security-policy/unsafe-eval/eval-scripts-setTimeout-blocked.sub.html", + {} + ] + ], + "content-security-policy/unsafe-eval/function-constructor-allowed.sub.html": [ + [ + "/content-security-policy/unsafe-eval/function-constructor-allowed.sub.html", + {} + ] + ], + "content-security-policy/unsafe-eval/function-constructor-blocked.sub.html": [ + [ + "/content-security-policy/unsafe-eval/function-constructor-blocked.sub.html", + {} + ] + ], "content-security-policy/unsafe-hashed-attributes/script_event_handlers_allowed.html": [ [ "/content-security-policy/unsafe-hashed-attributes/script_event_handlers_allowed.html", @@ -307409,6 +307109,12 @@ {} ] ], + "css/css-grid-1/grid-definition/grid-change-fit-content-argument-001.html": [ + [ + "/css/css-grid-1/grid-definition/grid-change-fit-content-argument-001.html", + {} + ] + ], "css/css-grid-1/grid-definition/grid-inline-support-flexible-lengths-001.html": [ [ "/css/css-grid-1/grid-definition/grid-inline-support-flexible-lengths-001.html", @@ -307499,6 +307205,12 @@ {} ] ], + "css/css-grid-1/grid-model/grid-box-sizing-001.html": [ + [ + "/css/css-grid-1/grid-model/grid-box-sizing-001.html", + {} + ] + ], "css/css-grid-1/grid-model/grid-computed-value-display-floated-items-001.html": [ [ "/css/css-grid-1/grid-model/grid-computed-value-display-floated-items-001.html", @@ -310679,6 +310391,42 @@ {} ] ], + "css/filter-effects-1/parsing/color-interpolation-filters-parsing-invalid.html": [ + [ + "/css/filter-effects-1/parsing/color-interpolation-filters-parsing-invalid.html", + {} + ] + ], + "css/filter-effects-1/parsing/color-interpolation-filters-parsing-valid.html": [ + [ + "/css/filter-effects-1/parsing/color-interpolation-filters-parsing-valid.html", + {} + ] + ], + "css/filter-effects-1/parsing/filter-parsing-invalid.html": [ + [ + "/css/filter-effects-1/parsing/filter-parsing-invalid.html", + {} + ] + ], + "css/filter-effects-1/parsing/filter-parsing-valid.html": [ + [ + "/css/filter-effects-1/parsing/filter-parsing-valid.html", + {} + ] + ], + "css/filter-effects-1/parsing/lighting-color-parsing-invalid.html": [ + [ + "/css/filter-effects-1/parsing/lighting-color-parsing-invalid.html", + {} + ] + ], + "css/filter-effects-1/parsing/lighting-color-parsing-valid.html": [ + [ + "/css/filter-effects-1/parsing/lighting-color-parsing-valid.html", + {} + ] + ], "css/geometry-1/DOMMatrix-001.html": [ [ "/css/geometry-1/DOMMatrix-001.html", @@ -315957,6 +315705,12 @@ {} ] ], + "fetch/api/basic/keepalive.html": [ + [ + "/fetch/api/basic/keepalive.html", + {} + ] + ], "fetch/api/basic/mode-no-cors-worker.html": [ [ "/fetch/api/basic/mode-no-cors-worker.html", @@ -316677,6 +316431,12 @@ } ] ], + "fetch/api/request/request-keepalive.html": [ + [ + "/fetch/api/request/request-keepalive.html", + {} + ] + ], "fetch/api/request/request-structure.html": [ [ "/fetch/api/request/request-structure.html", @@ -316979,9 +316739,9 @@ {} ] ], - "generic-sensor/SensorErrorEvent-constructor.html": [ + "generic-sensor/SensorErrorEvent-constructor.https.html": [ [ - "/generic-sensor/SensorErrorEvent-constructor.html", + "/generic-sensor/SensorErrorEvent-constructor.https.html", {} ] ], @@ -320193,6 +319953,12 @@ {} ] ], + "html/editing/focus/processing-model/preventScroll.html": [ + [ + "/html/editing/focus/processing-model/preventScroll.html", + {} + ] + ], "html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-default-value.html": [ [ "/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-default-value.html", @@ -324481,18 +324247,36 @@ {} ] ], + "html/semantics/interactive-elements/the-dialog-element/dialog-enabled.html": [ + [ + "/html/semantics/interactive-elements/the-dialog-element/dialog-enabled.html", + {} + ] + ], "html/semantics/interactive-elements/the-dialog-element/dialog-open.html": [ [ "/html/semantics/interactive-elements/the-dialog-element/dialog-open.html", {} ] ], + "html/semantics/interactive-elements/the-dialog-element/dialog-return-value.html": [ + [ + "/html/semantics/interactive-elements/the-dialog-element/dialog-return-value.html", + {} + ] + ], "html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html": [ [ "/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html", {} ] ], + "html/semantics/interactive-elements/the-dialog-element/show-modal-focusing-steps.html": [ + [ + "/html/semantics/interactive-elements/the-dialog-element/show-modal-focusing-steps.html", + {} + ] + ], "html/semantics/interactive-elements/the-summary-element/activation-behavior.html": [ [ "/html/semantics/interactive-elements/the-summary-element/activation-behavior.html", @@ -325597,9 +325381,15 @@ {} ] ], - "html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-error.html": [ + "html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-fetch-error.sub.html": [ + [ + "/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-fetch-error.sub.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-script-error.html": [ [ - "/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-error.html", + "/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-script-error.html", {} ] ], @@ -325719,6 +325509,12 @@ {} ] ], + "html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-url.html": [ + [ + "/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-url.html", + {} + ] + ], "html/semantics/scripting-1/the-script-element/module/import-subgraph-404.html": [ [ "/html/semantics/scripting-1/the-script-element/module/import-subgraph-404.html", @@ -328889,6 +328685,12 @@ {} ] ], + "longtask-timing/shared-renderer/longtask-in-new-window.html": [ + [ + "/longtask-timing/shared-renderer/longtask-in-new-window.html", + {} + ] + ], "magnetometer/Magnetometer.https.html": [ [ "/magnetometer/Magnetometer.https.html", @@ -329555,9 +329357,9 @@ {} ] ], - "mediacapture-streams/MediaStream-default-feature-policy.https.sub.html": [ + "mediacapture-streams/MediaStream-default-feature-policy.https.html": [ [ - "/mediacapture-streams/MediaStream-default-feature-policy.https.sub.html", + "/mediacapture-streams/MediaStream-default-feature-policy.https.html", {} ] ], @@ -329615,6 +329417,12 @@ {} ] ], + "mediacapture-streams/MediaStreamTrack-idl.https.html": [ + [ + "/mediacapture-streams/MediaStreamTrack-idl.https.html", + {} + ] + ], "mediacapture-streams/MediaStreamTrack-init.https.html": [ [ "/mediacapture-streams/MediaStreamTrack-init.https.html", @@ -329657,1605 +329465,1377 @@ {} ] ], - "mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/keep-scheme-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/no-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/no-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/fetch-request/top-level/keep-scheme-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/http-csp/same-host-https/fetch-request/top-level/keep-scheme-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/fetch-request/top-level/no-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/http-csp/same-host-https/fetch-request/top-level/no-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/form-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/http-csp/same-host-https/form-tag/top-level/keep-scheme-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/form-tag/top-level/no-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/http-csp/same-host-https/form-tag/top-level/no-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/iframe-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/http-csp/same-host-https/iframe-tag/top-level/keep-scheme-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/iframe-tag/top-level/no-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/http-csp/same-host-https/iframe-tag/top-level/no-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/img-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/http-csp/same-host-https/img-tag/top-level/keep-scheme-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/img-tag/top-level/no-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/http-csp/same-host-https/img-tag/top-level/no-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/link-css-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/http-csp/same-host-https/link-css-tag/top-level/keep-scheme-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/link-css-tag/top-level/no-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/http-csp/same-host-https/link-css-tag/top-level/no-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/link-prefetch-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/http-csp/same-host-https/link-prefetch-tag/top-level/keep-scheme-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/link-prefetch-tag/top-level/no-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/http-csp/same-host-https/link-prefetch-tag/top-level/no-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/object-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/http-csp/same-host-https/object-tag/top-level/keep-scheme-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/object-tag/top-level/no-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/http-csp/same-host-https/object-tag/top-level/no-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/picture-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/http-csp/same-host-https/picture-tag/top-level/keep-scheme-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/picture-tag/top-level/no-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/http-csp/same-host-https/picture-tag/top-level/no-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/script-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/http-csp/same-host-https/script-tag/top-level/keep-scheme-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/script-tag/top-level/no-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/http-csp/same-host-https/script-tag/top-level/no-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/video-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/http-csp/same-host-https/video-tag/top-level/keep-scheme-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/http-csp/same-host-https/video-tag/top-level/no-redirect/allowed.https.html": [ + "mixed-content/audio-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/allowed/http-csp/same-host-https/video-tag/top-level/no-redirect/allowed.https.html", + "/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/allowed/http-csp/same-host-https/worker-request/top-level/keep-scheme-redirect/allowed.https.html": [ + "mixed-content/audio-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/allowed/http-csp/same-host-https/worker-request/top-level/keep-scheme-redirect/allowed.https.html", + "/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/allowed/http-csp/same-host-https/worker-request/top-level/no-redirect/allowed.https.html": [ + "mixed-content/audio-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/allowed/http-csp/same-host-https/worker-request/top-level/no-redirect/allowed.https.html", + "/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/allowed/http-csp/same-host-https/xhr-request/top-level/keep-scheme-redirect/allowed.https.html": [ + "mixed-content/audio-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/allowed/http-csp/same-host-https/xhr-request/top-level/keep-scheme-redirect/allowed.https.html", + "/mixed-content/audio-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/allowed/http-csp/same-host-https/xhr-request/top-level/no-redirect/allowed.https.html": [ + "mixed-content/audio-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/allowed/http-csp/same-host-https/xhr-request/top-level/no-redirect/allowed.https.html", + "/mixed-content/audio-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/allowed/http-csp/same-host-wss/websocket-request/top-level/keep-scheme-redirect/websocket-allowed.https.html": [ + "mixed-content/audio-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/allowed/http-csp/same-host-wss/websocket-request/top-level/keep-scheme-redirect/websocket-allowed.https.html", + "/mixed-content/audio-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/allowed/http-csp/same-host-wss/websocket-request/top-level/no-redirect/websocket-allowed.https.html": [ + "mixed-content/audio-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/allowed/http-csp/same-host-wss/websocket-request/top-level/no-redirect/websocket-allowed.https.html", + "/mixed-content/audio-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/allowed/meta-csp/same-host-https/audio-tag/top-level/no-redirect/allowed.https.html": [ + "mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/allowed/meta-csp/same-host-https/audio-tag/top-level/no-redirect/allowed.https.html", + "/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/allowed/meta-csp/same-host-https/fetch-request/top-level/no-redirect/allowed.https.html": [ + "mixed-content/audio-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/allowed/meta-csp/same-host-https/fetch-request/top-level/no-redirect/allowed.https.html", + "/mixed-content/audio-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/allowed/meta-csp/same-host-https/form-tag/top-level/no-redirect/allowed.https.html": [ + "mixed-content/audio-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/allowed/meta-csp/same-host-https/form-tag/top-level/no-redirect/allowed.https.html", + "/mixed-content/audio-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/allowed/meta-csp/same-host-https/iframe-tag/top-level/no-redirect/allowed.https.html": [ + "mixed-content/audio-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/allowed/meta-csp/same-host-https/iframe-tag/top-level/no-redirect/allowed.https.html", + "/mixed-content/audio-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/allowed/meta-csp/same-host-https/img-tag/top-level/no-redirect/allowed.https.html": [ + "mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/allowed/meta-csp/same-host-https/img-tag/top-level/no-redirect/allowed.https.html", + "/mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/allowed/meta-csp/same-host-https/link-css-tag/top-level/no-redirect/allowed.https.html": [ + "mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/allowed/meta-csp/same-host-https/link-css-tag/top-level/no-redirect/allowed.https.html", + "/mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/allowed/meta-csp/same-host-https/link-prefetch-tag/top-level/no-redirect/allowed.https.html": [ + "mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/allowed/meta-csp/same-host-https/link-prefetch-tag/top-level/no-redirect/allowed.https.html", + "/mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/allowed/meta-csp/same-host-https/object-tag/top-level/no-redirect/allowed.https.html": [ + "mixed-content/audio-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/allowed/meta-csp/same-host-https/object-tag/top-level/no-redirect/allowed.https.html", + "/mixed-content/audio-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/allowed/meta-csp/same-host-https/picture-tag/top-level/no-redirect/allowed.https.html": [ + "mixed-content/audio-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/allowed/meta-csp/same-host-https/picture-tag/top-level/no-redirect/allowed.https.html", + "/mixed-content/audio-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/allowed/meta-csp/same-host-https/script-tag/top-level/no-redirect/allowed.https.html": [ + "mixed-content/audio-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/allowed/meta-csp/same-host-https/script-tag/top-level/no-redirect/allowed.https.html", + "/mixed-content/audio-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/allowed/meta-csp/same-host-https/video-tag/top-level/no-redirect/allowed.https.html": [ + "mixed-content/audio-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/allowed/meta-csp/same-host-https/video-tag/top-level/no-redirect/allowed.https.html", + "/mixed-content/audio-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/allowed/meta-csp/same-host-https/worker-request/top-level/no-redirect/allowed.https.html": [ + "mixed-content/audio-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/allowed/meta-csp/same-host-https/worker-request/top-level/no-redirect/allowed.https.html", + "/mixed-content/audio-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/allowed/meta-csp/same-host-https/xhr-request/top-level/no-redirect/allowed.https.html": [ + "mixed-content/fetch-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/allowed/meta-csp/same-host-https/xhr-request/top-level/no-redirect/allowed.https.html", + "/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/allowed/meta-csp/same-host-wss/websocket-request/top-level/no-redirect/websocket-allowed.https.html": [ + "mixed-content/fetch-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/allowed/meta-csp/same-host-wss/websocket-request/top-level/no-redirect/websocket-allowed.https.html", + "/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/allowed/no-opt-in/same-host-https/audio-tag/top-level/keep-scheme-redirect/allowed.https.html": [ + "mixed-content/fetch-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/allowed/no-opt-in/same-host-https/audio-tag/top-level/keep-scheme-redirect/allowed.https.html", + "/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/allowed/no-opt-in/same-host-https/audio-tag/top-level/no-redirect/allowed.https.html": [ + "mixed-content/fetch-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/allowed/no-opt-in/same-host-https/audio-tag/top-level/no-redirect/allowed.https.html", + "/mixed-content/fetch-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/allowed/no-opt-in/same-host-https/fetch-request/top-level/keep-scheme-redirect/allowed.https.html": [ + "mixed-content/fetch-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/allowed/no-opt-in/same-host-https/fetch-request/top-level/keep-scheme-redirect/allowed.https.html", + "/mixed-content/fetch-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/allowed/no-opt-in/same-host-https/fetch-request/top-level/no-redirect/allowed.https.html": [ + "mixed-content/fetch-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/allowed/no-opt-in/same-host-https/fetch-request/top-level/no-redirect/allowed.https.html", + "/mixed-content/fetch-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/allowed/no-opt-in/same-host-https/form-tag/top-level/keep-scheme-redirect/allowed.https.html": [ + "mixed-content/fetch-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/allowed/no-opt-in/same-host-https/form-tag/top-level/keep-scheme-redirect/allowed.https.html", + "/mixed-content/fetch-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/allowed/no-opt-in/same-host-https/form-tag/top-level/no-redirect/allowed.https.html": [ + "mixed-content/fetch-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/allowed/no-opt-in/same-host-https/form-tag/top-level/no-redirect/allowed.https.html", + "/mixed-content/fetch-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/allowed/no-opt-in/same-host-https/iframe-tag/top-level/keep-scheme-redirect/allowed.https.html": [ + "mixed-content/fetch-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/allowed/no-opt-in/same-host-https/iframe-tag/top-level/keep-scheme-redirect/allowed.https.html", + "/mixed-content/fetch-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/allowed/no-opt-in/same-host-https/iframe-tag/top-level/no-redirect/allowed.https.html": [ + "mixed-content/fetch-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/allowed/no-opt-in/same-host-https/iframe-tag/top-level/no-redirect/allowed.https.html", + "/mixed-content/fetch-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/allowed/no-opt-in/same-host-https/img-tag/top-level/keep-scheme-redirect/allowed.https.html": [ + "mixed-content/fetch-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/allowed/no-opt-in/same-host-https/img-tag/top-level/keep-scheme-redirect/allowed.https.html", + "/mixed-content/fetch-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/allowed/no-opt-in/same-host-https/img-tag/top-level/no-redirect/allowed.https.html": [ + "mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/allowed/no-opt-in/same-host-https/img-tag/top-level/no-redirect/allowed.https.html", + "/mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/allowed/no-opt-in/same-host-https/link-css-tag/top-level/keep-scheme-redirect/allowed.https.html": [ + "mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/allowed/no-opt-in/same-host-https/link-css-tag/top-level/keep-scheme-redirect/allowed.https.html", + "/mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/allowed/no-opt-in/same-host-https/link-css-tag/top-level/no-redirect/allowed.https.html": [ + "mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/allowed/no-opt-in/same-host-https/link-css-tag/top-level/no-redirect/allowed.https.html", + "/mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/allowed/no-opt-in/same-host-https/link-prefetch-tag/top-level/keep-scheme-redirect/allowed.https.html": [ + "mixed-content/fetch-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/allowed/no-opt-in/same-host-https/link-prefetch-tag/top-level/keep-scheme-redirect/allowed.https.html", + "/mixed-content/fetch-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/allowed/no-opt-in/same-host-https/link-prefetch-tag/top-level/no-redirect/allowed.https.html": [ + "mixed-content/fetch-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/allowed/no-opt-in/same-host-https/link-prefetch-tag/top-level/no-redirect/allowed.https.html", + "/mixed-content/fetch-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/allowed/no-opt-in/same-host-https/object-tag/top-level/keep-scheme-redirect/allowed.https.html": [ + "mixed-content/fetch-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/allowed/no-opt-in/same-host-https/object-tag/top-level/keep-scheme-redirect/allowed.https.html", + "/mixed-content/fetch-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/allowed/no-opt-in/same-host-https/object-tag/top-level/no-redirect/allowed.https.html": [ + "mixed-content/fetch-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/allowed/no-opt-in/same-host-https/object-tag/top-level/no-redirect/allowed.https.html", + "/mixed-content/fetch-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/allowed/no-opt-in/same-host-https/picture-tag/top-level/keep-scheme-redirect/allowed.https.html": [ + "mixed-content/fetch-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/allowed/no-opt-in/same-host-https/picture-tag/top-level/keep-scheme-redirect/allowed.https.html", + "/mixed-content/fetch-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/allowed/no-opt-in/same-host-https/picture-tag/top-level/no-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/no-opt-in/same-host-https/picture-tag/top-level/no-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/no-opt-in/same-host-https/script-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/no-opt-in/same-host-https/script-tag/top-level/keep-scheme-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/no-opt-in/same-host-https/script-tag/top-level/no-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/no-opt-in/same-host-https/script-tag/top-level/no-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/no-opt-in/same-host-https/video-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/no-opt-in/same-host-https/video-tag/top-level/keep-scheme-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/no-opt-in/same-host-https/video-tag/top-level/no-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/no-opt-in/same-host-https/video-tag/top-level/no-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/no-opt-in/same-host-https/worker-request/top-level/keep-scheme-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/no-opt-in/same-host-https/worker-request/top-level/keep-scheme-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/no-opt-in/same-host-https/worker-request/top-level/no-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/no-opt-in/same-host-https/worker-request/top-level/no-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/no-opt-in/same-host-https/xhr-request/top-level/keep-scheme-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/no-opt-in/same-host-https/xhr-request/top-level/keep-scheme-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/no-opt-in/same-host-https/xhr-request/top-level/no-redirect/allowed.https.html": [ - [ - "/mixed-content/allowed/no-opt-in/same-host-https/xhr-request/top-level/no-redirect/allowed.https.html", - {} - ] - ], - "mixed-content/allowed/no-opt-in/same-host-wss/websocket-request/top-level/keep-scheme-redirect/websocket-allowed.https.html": [ - [ - "/mixed-content/allowed/no-opt-in/same-host-wss/websocket-request/top-level/keep-scheme-redirect/websocket-allowed.https.html", - {} - ] - ], - "mixed-content/allowed/no-opt-in/same-host-wss/websocket-request/top-level/no-redirect/websocket-allowed.https.html": [ - [ - "/mixed-content/allowed/no-opt-in/same-host-wss/websocket-request/top-level/no-redirect/websocket-allowed.https.html", - {} - ] - ], - "mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - [ - "/mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html", - {} - ] - ], - "mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html": [ - [ - "/mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html", - {} - ] - ], - "mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - [ - "/mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html", - {} - ] - ], - "mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - [ - "/mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html", - {} - ] - ], - "mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - [ - "/mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html", - {} - ] - ], - "mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - [ - "/mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html", - {} - ] - ], - "mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/imageset.https.sub.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/imageset.https.sub.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/img-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/img-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/img-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/img-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/img-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/img-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/img-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/img-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/img-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/img-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/img-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/img-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/img-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/img-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/img-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/img-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/img-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/img-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/img-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/img-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/img-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/img-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/img-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/img-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/img-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/img-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/img-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/img-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/img-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/img-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html": [ + "mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html", + "/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html": [ + "mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html", + "/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html": [ + "mixed-content/link-css-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html", + "/mixed-content/link-css-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-css-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/link-css-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-css-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/link-css-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-css-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/link-css-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-css-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/link-css-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-css-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/link-css-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-css-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/link-css-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-css-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/link-css-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-css-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/link-css-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-css-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/link-css-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-prefetch-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/link-prefetch-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-prefetch-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/link-prefetch-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-prefetch-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/link-prefetch-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html": [ + "mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html", + "/mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html": [ + "mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html", + "/mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html": [ + "mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html", + "/mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/blockable/meta-csp/cross-origin-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/blockable/meta-csp/cross-origin-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/blockable/meta-csp/cross-origin-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/blockable/meta-csp/cross-origin-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/blockable/meta-csp/cross-origin-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-prefetch-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/meta-csp/cross-origin-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/link-prefetch-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/meta-csp/cross-origin-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/link-prefetch-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/meta-csp/cross-origin-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/link-prefetch-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/meta-csp/cross-origin-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/object-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/meta-csp/cross-origin-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/object-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/meta-csp/cross-origin-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/object-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/meta-csp/cross-origin-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/object-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/meta-csp/cross-origin-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/object-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/meta-csp/cross-origin-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/object-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/meta-csp/cross-origin-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/object-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/meta-csp/cross-origin-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/object-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/meta-csp/cross-origin-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/object-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/meta-csp/cross-origin-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/object-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/meta-csp/cross-origin-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html": [ + "mixed-content/object-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/meta-csp/cross-origin-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html", + "/mixed-content/object-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/meta-csp/same-host-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/object-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/meta-csp/same-host-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/object-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/meta-csp/same-host-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/object-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/meta-csp/same-host-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/object-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/meta-csp/same-host-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/object-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/meta-csp/same-host-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/object-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/meta-csp/same-host-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/object-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/meta-csp/same-host-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/object-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/meta-csp/same-host-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/object-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/meta-csp/same-host-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/object-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/meta-csp/same-host-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/meta-csp/same-host-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/meta-csp/same-host-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/meta-csp/same-host-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/meta-csp/same-host-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/meta-csp/same-host-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/meta-csp/same-host-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/object-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/meta-csp/same-host-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/object-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/meta-csp/same-host-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html": [ + "mixed-content/object-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/meta-csp/same-host-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html", + "/mixed-content/object-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/fetch-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/object-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/fetch-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/object-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/fetch-request/top-level/no-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/object-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/fetch-request/top-level/no-redirect/no-opt-in-blocks.https.html", + "/mixed-content/object-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/fetch-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/object-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/fetch-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/object-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/form-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/picture-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/form-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/form-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/picture-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/form-tag/top-level/no-redirect/no-opt-in-blocks.https.html", + "/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/form-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/picture-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/form-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/iframe-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/picture-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/iframe-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/picture-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/iframe-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/picture-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/iframe-tag/top-level/no-redirect/no-opt-in-blocks.https.html", + "/mixed-content/picture-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/iframe-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/picture-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/iframe-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/picture-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/link-css-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/picture-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/link-css-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/picture-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/link-css-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/picture-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/link-css-tag/top-level/no-redirect/no-opt-in-blocks.https.html", + "/mixed-content/picture-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/link-css-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/picture-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/link-css-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/picture-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/object-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/picture-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/object-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/picture-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/object-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/picture-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/object-tag/top-level/no-redirect/no-opt-in-blocks.https.html", + "/mixed-content/picture-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/object-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/object-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/picture-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/picture-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/picture-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/picture-tag/top-level/no-redirect/no-opt-in-blocks.https.html", + "/mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/picture-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/picture-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/picture-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/picture-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/script-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/picture-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/script-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/picture-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/script-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/picture-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/script-tag/top-level/no-redirect/no-opt-in-blocks.https.html", + "/mixed-content/picture-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/script-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/picture-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/script-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/picture-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/worker-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/picture-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/worker-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/picture-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/worker-request/top-level/no-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/script-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/worker-request/top-level/no-redirect/no-opt-in-blocks.https.html", + "/mixed-content/script-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/worker-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/script-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/worker-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/script-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/xhr-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/script-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/xhr-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/script-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/xhr-request/top-level/no-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/script-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/xhr-request/top-level/no-redirect/no-opt-in-blocks.https.html", + "/mixed-content/script-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-http/xhr-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/script-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-http/xhr-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/script-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html": [ + "mixed-content/script-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html", + "/mixed-content/script-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html": [ + "mixed-content/script-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html", + "/mixed-content/script-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/cross-origin-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html": [ + "mixed-content/script-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/no-opt-in/cross-origin-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html", + "/mixed-content/script-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/fetch-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/script-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/fetch-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/script-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/fetch-request/top-level/no-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/script-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/fetch-request/top-level/no-redirect/no-opt-in-blocks.https.html", + "/mixed-content/script-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/fetch-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/script-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/fetch-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/script-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/form-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/form-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/form-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/form-tag/top-level/no-redirect/no-opt-in-blocks.https.html", + "/mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/form-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/form-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/iframe-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/script-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/iframe-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/script-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/iframe-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/script-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/iframe-tag/top-level/no-redirect/no-opt-in-blocks.https.html", + "/mixed-content/script-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/iframe-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/script-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/iframe-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/script-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/link-css-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/script-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/link-css-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/script-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/link-css-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/script-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/link-css-tag/top-level/no-redirect/no-opt-in-blocks.https.html", + "/mixed-content/script-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/link-css-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/video-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/link-css-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/video-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/object-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/video-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/object-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/video-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/object-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/video-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/object-tag/top-level/no-redirect/no-opt-in-blocks.https.html", + "/mixed-content/video-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/object-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/video-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/object-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/video-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/picture-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/video-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/picture-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/video-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/picture-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/video-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/picture-tag/top-level/no-redirect/no-opt-in-blocks.https.html", + "/mixed-content/video-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/picture-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/video-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/picture-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/video-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/script-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/video-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/script-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/video-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/script-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/video-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/script-tag/top-level/no-redirect/no-opt-in-blocks.https.html", + "/mixed-content/video-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/script-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/video-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/script-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/video-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/worker-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/video-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/worker-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/video-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/worker-request/top-level/no-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/worker-request/top-level/no-redirect/no-opt-in-blocks.https.html", + "/mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/worker-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/worker-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/xhr-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/xhr-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/xhr-request/top-level/no-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/video-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/xhr-request/top-level/no-redirect/no-opt-in-blocks.https.html", + "/mixed-content/video-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-http/xhr-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/video-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-http/xhr-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html", + "/mixed-content/video-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html": [ + "mixed-content/video-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html", + "/mixed-content/video-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html": [ + "mixed-content/video-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html", + "/mixed-content/video-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/blockable/no-opt-in/same-host-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html": [ + "mixed-content/video-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/blockable/no-opt-in/same-host-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html", + "/mixed-content/video-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/imageset.https.sub.html": [ + "mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html": [ [ - "/mixed-content/imageset.https.sub.html", + "/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/websocket-request/http-csp/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/websocket-request/http-csp/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/websocket-request/http-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/websocket-request/http-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/websocket-request/http-csp/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/websocket-request/http-csp/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/websocket-request/http-csp/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/websocket-request/http-csp/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/websocket-request/http-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/websocket-request/http-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/websocket-request/meta-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/websocket-request/meta-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/websocket-request/meta-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/websocket-request/meta-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/websocket-request/meta-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/websocket-request/meta-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/websocket-request/no-opt-in/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/websocket-request/no-opt-in/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/websocket-request/no-opt-in/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/websocket-request/no-opt-in/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/worker-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/worker-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/worker-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/worker-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/worker-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/worker-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/worker-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/worker-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/worker-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/worker-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/worker-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html", + "/mixed-content/worker-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/meta-csp/cross-origin-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/worker-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/optionally-blockable/meta-csp/cross-origin-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/worker-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/optionally-blockable/meta-csp/cross-origin-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/worker-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/optionally-blockable/meta-csp/cross-origin-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/worker-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/optionally-blockable/meta-csp/cross-origin-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/worker-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/meta-csp/cross-origin-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/worker-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/meta-csp/cross-origin-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/worker-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/meta-csp/cross-origin-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/worker-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/meta-csp/same-host-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/worker-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/optionally-blockable/meta-csp/same-host-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/worker-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/optionally-blockable/meta-csp/same-host-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/meta-csp/same-host-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/meta-csp/same-host-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/meta-csp/same-host-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/meta-csp/same-host-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/meta-csp/same-host-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html", + "/mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/audio-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html": [ + "mixed-content/worker-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/audio-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html", + "/mixed-content/worker-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/audio-tag/top-level/no-redirect/no-opt-in-allows.https.html": [ + "mixed-content/worker-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/audio-tag/top-level/no-redirect/no-opt-in-allows.https.html", + "/mixed-content/worker-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/audio-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html": [ + "mixed-content/worker-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/audio-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html", + "/mixed-content/worker-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/img-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html": [ + "mixed-content/worker-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/img-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html", + "/mixed-content/worker-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/img-tag/top-level/no-redirect/no-opt-in-allows.https.html": [ + "mixed-content/worker-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/img-tag/top-level/no-redirect/no-opt-in-allows.https.html", + "/mixed-content/worker-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/img-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html": [ + "mixed-content/xhr-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/img-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html", + "/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/link-prefetch-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html": [ + "mixed-content/xhr-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/link-prefetch-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html", + "/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/link-prefetch-tag/top-level/no-redirect/no-opt-in-allows.https.html": [ + "mixed-content/xhr-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/link-prefetch-tag/top-level/no-redirect/no-opt-in-allows.https.html", + "/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/link-prefetch-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html": [ + "mixed-content/xhr-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/link-prefetch-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html", + "/mixed-content/xhr-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/video-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html": [ + "mixed-content/xhr-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/video-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html", + "/mixed-content/xhr-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/video-tag/top-level/no-redirect/no-opt-in-allows.https.html": [ + "mixed-content/xhr-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/video-tag/top-level/no-redirect/no-opt-in-allows.https.html", + "/mixed-content/xhr-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/video-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html": [ + "mixed-content/xhr-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/video-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html", + "/mixed-content/xhr-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/audio-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html": [ + "mixed-content/xhr-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/same-host-http/audio-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html", + "/mixed-content/xhr-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/audio-tag/top-level/no-redirect/no-opt-in-allows.https.html": [ + "mixed-content/xhr-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/same-host-http/audio-tag/top-level/no-redirect/no-opt-in-allows.https.html", + "/mixed-content/xhr-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/audio-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html": [ + "mixed-content/xhr-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/same-host-http/audio-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html", + "/mixed-content/xhr-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/img-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html": [ + "mixed-content/xhr-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/same-host-http/img-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html", + "/mixed-content/xhr-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/img-tag/top-level/no-redirect/no-opt-in-allows.https.html": [ + "mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/same-host-http/img-tag/top-level/no-redirect/no-opt-in-allows.https.html", + "/mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/img-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html": [ + "mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/same-host-http/img-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html", + "/mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/link-prefetch-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html": [ + "mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/same-host-http/link-prefetch-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html", + "/mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/link-prefetch-tag/top-level/no-redirect/no-opt-in-allows.https.html": [ + "mixed-content/xhr-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/same-host-http/link-prefetch-tag/top-level/no-redirect/no-opt-in-allows.https.html", + "/mixed-content/xhr-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/link-prefetch-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html": [ + "mixed-content/xhr-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/same-host-http/link-prefetch-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html", + "/mixed-content/xhr-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/video-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html": [ + "mixed-content/xhr-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/same-host-http/video-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html", + "/mixed-content/xhr-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/video-tag/top-level/no-redirect/no-opt-in-allows.https.html": [ + "mixed-content/xhr-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/same-host-http/video-tag/top-level/no-redirect/no-opt-in-allows.https.html", + "/mixed-content/xhr-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html", {} ] ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/video-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html": [ + "mixed-content/xhr-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ [ - "/mixed-content/optionally-blockable/no-opt-in/same-host-http/video-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html", + "/mixed-content/xhr-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html", {} ] ], @@ -341153,6 +340733,12 @@ {} ] ], + "referrer-policy/generic/iframe-inheritance.html": [ + [ + "/referrer-policy/generic/iframe-inheritance.html", + {} + ] + ], "referrer-policy/generic/link-rel-prefetch.html": [ [ "/referrer-policy/generic/link-rel-prefetch.html", @@ -349229,9 +348815,9 @@ {} ] ], - "requestidlecallback/callback-timeout-with-raf.html": [ + "requestidlecallback/callback-timeout-when-busy.html": [ [ - "/requestidlecallback/callback-timeout-with-raf.html", + "/requestidlecallback/callback-timeout-when-busy.html", {} ] ], @@ -349471,42 +349057,6 @@ {} ] ], - "security/window-name-after-cross-origin-aux-frame-navigation.sub.html": [ - [ - "/security/window-name-after-cross-origin-aux-frame-navigation.sub.html", - {} - ] - ], - "security/window-name-after-cross-origin-main-frame-navigation.sub.html": [ - [ - "/security/window-name-after-cross-origin-main-frame-navigation.sub.html", - {} - ] - ], - "security/window-name-after-cross-origin-sub-frame-navigation.sub.html": [ - [ - "/security/window-name-after-cross-origin-sub-frame-navigation.sub.html", - {} - ] - ], - "security/window-name-after-same-origin-aux-frame-navigation.sub.html": [ - [ - "/security/window-name-after-same-origin-aux-frame-navigation.sub.html", - {} - ] - ], - "security/window-name-after-same-origin-main-frame-navigation.sub.html": [ - [ - "/security/window-name-after-same-origin-main-frame-navigation.sub.html", - {} - ] - ], - "security/window-name-after-same-origin-sub-frame-navigation.sub.html": [ - [ - "/security/window-name-after-same-origin-sub-frame-navigation.sub.html", - {} - ] - ], "selection/Document-open.html": [ [ "/selection/Document-open.html", @@ -350899,12 +350449,6 @@ {} ] ], - "service-workers/service-worker/request-body-blob.https.html": [ - [ - "/service-workers/service-worker/request-body-blob.https.html", - {} - ] - ], "service-workers/service-worker/request-end-to-end.https.html": [ [ "/service-workers/service-worker/request-end-to-end.https.html", @@ -353309,75 +352853,81 @@ {} ] ], - "viewport/viewport-no-resize-event-on-overflow-recalc.html": [ + "visual-viewport/viewport-no-resize-event-on-overflow-recalc.html": [ + [ + "/visual-viewport/viewport-no-resize-event-on-overflow-recalc.html", + {} + ] + ], + "visual-viewport/viewport-read-size-causes-layout.html": [ [ - "/viewport/viewport-no-resize-event-on-overflow-recalc.html", + "/visual-viewport/viewport-read-size-causes-layout.html", {} ] ], - "viewport/viewport-read-size-causes-layout.html": [ + "visual-viewport/viewport-read-size-in-iframe-causes-layout.html": [ [ - "/viewport/viewport-read-size-causes-layout.html", + "/visual-viewport/viewport-read-size-in-iframe-causes-layout.html", {} ] ], - "viewport/viewport-read-size-in-iframe-causes-layout.html": [ + "visual-viewport/viewport-resize-event-on-load-overflowing-page.html": [ [ - "/viewport/viewport-read-size-in-iframe-causes-layout.html", + "/visual-viewport/viewport-resize-event-on-load-overflowing-page.html", {} ] ], - "viewport/viewport-resize-event-on-load-overflowing-page.html": [ + "visual-viewport/viewport-scrollbars-cause-resize.html": [ [ - "/viewport/viewport-resize-event-on-load-overflowing-page.html", + "/visual-viewport/viewport-scrollbars-cause-resize.html", {} ] ], - "viewport/viewport-scrollbars-cause-resize.html": [ + "visual-viewport/viewport-type.html": [ [ - "/viewport/viewport-scrollbars-cause-resize.html", + "/visual-viewport/viewport-type.html", {} ] ], - "viewport/viewport-type.html": [ + "visual-viewport/viewport-unscaled-scale-iframe.html": [ [ - "/viewport/viewport-type.html", + "/visual-viewport/viewport-unscaled-scale-iframe.html", {} ] ], - "viewport/viewport-unscaled-scale-iframe.html": [ + "visual-viewport/viewport-unscaled-scale.html": [ [ - "/viewport/viewport-unscaled-scale-iframe.html", + "/visual-viewport/viewport-unscaled-scale.html", {} ] ], - "viewport/viewport-unscaled-scale.html": [ + "visual-viewport/viewport-unscaled-scroll-iframe.html": [ [ - "/viewport/viewport-unscaled-scale.html", + "/visual-viewport/viewport-unscaled-scroll-iframe.html", {} ] ], - "viewport/viewport-unscaled-scroll-iframe.html": [ + "visual-viewport/viewport-unscaled-scroll.html": [ [ - "/viewport/viewport-unscaled-scroll-iframe.html", + "/visual-viewport/viewport-unscaled-scroll.html", {} ] ], - "viewport/viewport-unscaled-scroll.html": [ + "visual-viewport/viewport-unscaled-size-iframe.html": [ [ - "/viewport/viewport-unscaled-scroll.html", + "/visual-viewport/viewport-unscaled-size-iframe.html", {} ] ], - "viewport/viewport-unscaled-size-iframe.html": [ + "visual-viewport/viewport-unscaled-size.html": [ [ - "/viewport/viewport-unscaled-size-iframe.html", + "/visual-viewport/viewport-unscaled-size.html", {} ] ], - "viewport/viewport-unscaled-size.html": [ + "wake-lock/interfaces.https.html": [ [ - "/viewport/viewport-unscaled-size.html", + "/wake-lock/interfaces.https.html", {} ] ], @@ -353873,6 +353423,24 @@ {} ] ], + "webaudio/chrome/the-constantsourcenode-interface/constant-source-basic.html": [ + [ + "/webaudio/chrome/the-constantsourcenode-interface/constant-source-basic.html", + {} + ] + ], + "webaudio/chrome/the-constantsourcenode-interface/constant-source-onended.html": [ + [ + "/webaudio/chrome/the-constantsourcenode-interface/constant-source-onended.html", + {} + ] + ], + "webaudio/chrome/the-constantsourcenode-interface/constant-source-output.html": [ + [ + "/webaudio/chrome/the-constantsourcenode-interface/constant-source-output.html", + {} + ] + ], "webaudio/historical.html": [ [ "/webaudio/historical.html", @@ -358139,6 +357707,12 @@ {} ] ], + "webmessaging/Channel_postMessage_Blob.htm": [ + [ + "/webmessaging/Channel_postMessage_Blob.htm", + {} + ] + ], "webmessaging/Channel_postMessage_DataCloneErr.htm": [ [ "/webmessaging/Channel_postMessage_DataCloneErr.htm", @@ -359011,6 +358585,12 @@ {} ] ], + "webrtc/RTCPeerConnection-setRemoteDescription-tracks.https.html": [ + [ + "/webrtc/RTCPeerConnection-setRemoteDescription-tracks.https.html", + {} + ] + ], "webrtc/RTCPeerConnection-setRemoteDescription.html": [ [ "/webrtc/RTCPeerConnection-setRemoteDescription.html", @@ -359161,9 +358741,9 @@ {} ] ], - "webrtc/interfaces.html": [ + "webrtc/interfaces.https.html": [ [ - "/webrtc/interfaces.html", + "/webrtc/interfaces.https.html", {} ] ], @@ -362785,12 +362365,24 @@ {} ] ], + "worklets/animation-worklet-referrer.html": [ + [ + "/worklets/animation-worklet-referrer.html", + {} + ] + ], "worklets/paint-worklet-import.html": [ [ "/worklets/paint-worklet-import.html", {} ] ], + "worklets/paint-worklet-referrer.html": [ + [ + "/worklets/paint-worklet-referrer.html", + {} + ] + ], "x-frame-options/deny.sub.html": [ [ "/x-frame-options/deny.sub.html", @@ -382071,6 +381663,18 @@ {} ] ], + "css/css-fonts-3/font-variant-position-02.html": [ + [ + "/css/css-fonts-3/font-variant-position-02.html", + {} + ] + ], + "css/css-fonts-3/font-variant-position-03.html": [ + [ + "/css/css-fonts-3/font-variant-position-03.html", + {} + ] + ], "css/css-fonts-3/language-specific-01.html": [ [ "/css/css-fonts-3/language-specific-01.html", @@ -383067,12 +382671,6 @@ {} ] ], - "css/css3-color/t44-currentcolor-inherited-c.xht": [ - [ - "/css/css3-color/t44-currentcolor-inherited-c.xht", - {} - ] - ], "css/css3-color/t451-system-colors-a.xht": [ [ "/css/css3-color/t451-system-colors-a.xht", @@ -383385,7 +382983,7 @@ "support" ], "./.travis.yml": [ - "1e5af7c585f3789659d7a614cfbed060f763f3ad", + "54adee7fb83a554a18793883baf382a3ec534f62", "support" ], "./CONTRIBUTING.md": [ @@ -383413,7 +383011,7 @@ "support" ], "./lint.whitelist": [ - "f23ed9721b92ce719c42f53e682eb774743a0643", + "c6d3de79e373520c12e55fc71d1bc556dade9569", "support" ], "./serve.py": [ @@ -387904,6 +387502,10 @@ "03f52693e44c77add3d3be21b0e9232425b750b2", "testharness" ], + "IndexedDB/idbcursor-request-source.html": [ + "98bcafdf7facb08f0a10ae23cfee0c547d689328", + "testharness" + ], "IndexedDB/idbcursor-reused.htm": [ "2462c58f442407b1168751cc447076dc39e3c1ee", "testharness" @@ -388408,6 +388010,10 @@ "9d994ad6a23181b113947e5714ddbe3592619540", "testharness" ], + "IndexedDB/idbindex-request-source.html": [ + "0101dd82175ea14b0b887d645b13c0e76166e33b", + "testharness" + ], "IndexedDB/idbindex_count.htm": [ "2e44015e473ef424160ebef828a4e1925cf1b480", "testharness" @@ -388584,6 +388190,10 @@ "7b276a866c669890d42b47a66ad5111e32e3d1f9", "testharness" ], + "IndexedDB/idbobjectstore-request-source.html": [ + "9fb6d377349ba0919572d9725e2a98772fc66b9a", + "testharness" + ], "IndexedDB/idbobjectstore-transaction-SameObject.html": [ "f8fe684bf65950e534b269413620339819191abb", "testharness" @@ -391689,7 +391299,7 @@ "testharness" ], "accelerometer/Accelerometer_insecure_context.html": [ - "62c0fdfe1ee0752956b4c68e877cd7f47ac887a1", + "da374eab5cbc963d8e5e2f2025d9fb1a94043643", "testharness" ], "accelerometer/Accelerometer_onerror-manual.https.html": [ @@ -391701,15 +391311,131 @@ "support" ], "accelerometer/idlharness.https.html": [ - "a4b5c164268d6742e7da504d15d6b9eeb4cfc6ce", + "27d8177856ad17d372df7f099214df5a8b65fee8", "testharness" ], + "acid/README.md": [ + "76f4f73365670ecc3f97c560141a280a52b46807", + "support" + ], + "acid/acid2/404.html": [ + "34bc78baab77c60aa684ee6813aa86249800eb3b", + "support" + ], + "acid/acid2/reference.html": [ + "61b1dcb8c4675c97727c2ffc1780e2eb5c068dd6", + "support" + ], + "acid/acid2/reference.png": [ + "696764f4391c13a6708d4fe5f23923a6896fd942", + "support" + ], + "acid/acid2/reftest.html": [ + "1ba7784734de3cdef01a60fbe2bdaf604b368fca", + "reftest" + ], + "acid/acid2/test.html": [ + "90dbe7051d6b95cb21e1e1e770a025f8e3aac7fe", + "support" + ], + "acid/acid3/empty.css": [ + "2f6e2814f959b06142ba957b90f4001b5329c3b1", + "support" + ], + "acid/acid3/empty.css.headers": [ + "41e260e7df49e0e4ddb1fc5df11913dbda15edd7", + "support" + ], + "acid/acid3/empty.html": [ + "6fd8f696ff136a0a1122a9e492583e18704c2c73", + "support" + ], + "acid/acid3/empty.png": [ + "670ad8af8896cc966d44bdf8bd943b04e9d2a5b3", + "support" + ], + "acid/acid3/empty.txt": [ + "96a0d315fb0f04f8de929e81a02c71c411e7132b", + "support" + ], + "acid/acid3/empty.xml": [ + "66e1301c2bd8ba5281f6ffddf8bfa69877c73bd6", + "support" + ], + "acid/acid3/empty.xml.headers": [ + "0bd5f6529278b256fbf88df3b8ff4e196f254152", + "support" + ], + "acid/acid3/favicon.ico": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], + "acid/acid3/favicon.ico.headers": [ + "2c51b95bd2032c76dcc7a1c54e197756159a7e4b", + "support" + ], + "acid/acid3/reference.png": [ + "2bd47f247ce1328013d2ade5c7e4b5b03f5a0eda", + "support" + ], + "acid/acid3/reference.sub.html": [ + "764c07c1072c831cb69719372aca734fa49d827a", + "support" + ], + "acid/acid3/support-a.png": [ + "036a26be37f2ecd1ee92ffc580a02390af99a660", + "support" + ], + "acid/acid3/support-b.png": [ + "4772d37737a3379db3fae1faf13aeaa272c7e8b3", + "support" + ], + "acid/acid3/support-b.png.headers": [ + "eace94f752c631a4785b9e1f52fa6f298b8924e0", + "support" + ], + "acid/acid3/svg.xml": [ + "bd09818b36af3acdc711836b7163c7f79f4db349", + "support" + ], + "acid/acid3/svg.xml.headers": [ + "700fd6e4cb3f0c4069d02e09bcead4206fe9ca67", + "support" + ], + "acid/acid3/test.html": [ + "1822fb86b9af47dd384398e56afb6d8ed2f0565b", + "reftest" + ], + "acid/acid3/xhtml.1": [ + "2bd66b61cf28d08ddd4a262785b953b6a5f9982c", + "support" + ], + "acid/acid3/xhtml.1.headers": [ + "889fd09853f091aba8fea3b45cfeb36437be1c2b", + "support" + ], + "acid/acid3/xhtml.2": [ + "15a61290a2a1ea306de755501d820815f4a45a88", + "support" + ], + "acid/acid3/xhtml.2.headers": [ + "889fd09853f091aba8fea3b45cfeb36437be1c2b", + "support" + ], + "acid/acid3/xhtml.3": [ + "a3ede89b3b94bc5c02c39bb0c26075a5a2bf6396", + "support" + ], + "acid/acid3/xhtml.3.headers": [ + "889fd09853f091aba8fea3b45cfeb36437be1c2b", + "support" + ], "ambient-light/AmbientLightSensor.https.html": [ "86a1f84e2e034d58b2a7f6fc01880028b444c7cd", "testharness" ], "ambient-light/AmbientLightSensor_insecure_context.html": [ - "9267bca8016bdde90ba2e5e866e9989db7c045dd", + "f6d9e5bd6d1ce6705835f15498ddbb5a5b82fb88", "testharness" ], "ambient-light/AmbientLightSensor_onerror-manual.https.html": [ @@ -391721,7 +391447,7 @@ "support" ], "ambient-light/idlharness.https.html": [ - "f48a58b450fa15e820bef6d9c6f5dac834d8d6fb", + "e28ad30d7611438c7b3e884ef4160cf3a096ea85", "testharness" ], "annotation-model/.editorconfig": [ @@ -393777,7 +393503,7 @@ "testharness" ], "background-fetch/mixed-content-and-allowed-schemes.https.window.js": [ - "13873d861416a40d831026a88f864f13a9447c7f", + "a285388a7d275f50444079b9549797ed29b27fd3", "testharness" ], "background-fetch/port-blocking.https.window.js": [ @@ -411968,1220 +411694,160 @@ "19d2027dc8784a479722b7f405fee31973808e2f", "testharness" ], - "content-security-policy/blink-contrib-2/allowed.css": [ - "4477032f6a7347c932c71f9737f3f5e8d244c7d3", - "support" - ], - "content-security-policy/blink-contrib-2/base-uri-allow.sub.html": [ - "8a557e111738324c510f48e1a2030933caa33087", - "testharness" - ], - "content-security-policy/blink-contrib-2/base-uri-allow.sub.html.sub.headers": [ - "6205a5bbb5290f29b462bfe2395450ac31772550", - "support" - ], - "content-security-policy/blink-contrib-2/base-uri-deny.sub.html": [ - "b9661979aa2ffda1bb4923bef096962ad632c6e3", - "testharness" - ], - "content-security-policy/blink-contrib-2/base-uri-deny.sub.html.sub.headers": [ - "ccfc66c70082010f33917cc245fbc30affc46798", - "support" - ], - "content-security-policy/blink-contrib-2/form-action-src-allowed.sub.html": [ - "83ebd7d64b5746989f8bdd9c5103ffc11aa93f36", - "testharness" - ], - "content-security-policy/blink-contrib-2/form-action-src-allowed.sub.html.sub.headers": [ - "c74c11f68173073c6759d3a170c0684920078f95", - "support" - ], - "content-security-policy/blink-contrib-2/form-action-src-blocked.sub.html": [ - "757d2535beddbac6fdd8efaa5d0cb84afaf28235", - "testharness" - ], - "content-security-policy/blink-contrib-2/form-action-src-blocked.sub.html.sub.headers": [ - "7222d1f514ab8f7f7bff52bab4a190f95bc20315", - "support" - ], - "content-security-policy/blink-contrib-2/form-action-src-default-ignored.sub.html": [ - "840c122d2a7063848064402c7d76f2d65abfde39", - "testharness" - ], - "content-security-policy/blink-contrib-2/form-action-src-default-ignored.sub.html.sub.headers": [ - "525c9c57c7e2f0bfc15cf7c5af7b32db5eba125b", - "support" - ], - "content-security-policy/blink-contrib-2/form-action-src-get-allowed.sub.html": [ - "cc54ab08c93d54539891369e9ff1b293c3365286", - "testharness" - ], - "content-security-policy/blink-contrib-2/form-action-src-get-allowed.sub.html.sub.headers": [ - "546dc51d2d91e73b3cb23c8d995fedaadc16a628", - "support" - ], - "content-security-policy/blink-contrib-2/form-action-src-get-blocked.sub.html": [ - "ad6e0052bde40225c42d044301a860433d572fe2", - "testharness" - ], - "content-security-policy/blink-contrib-2/form-action-src-get-blocked.sub.html.sub.headers": [ - "5e34b41789ee898312b915dcd2f4ed3f03085dca", - "support" - ], - "content-security-policy/blink-contrib-2/form-action-src-javascript-blocked.sub.html": [ - "cf1d1a761cd6119698d44a10e42e79bd4a476707", - "testharness" - ], - "content-security-policy/blink-contrib-2/form-action-src-javascript-blocked.sub.html.sub.headers": [ - "3dc9196bfb5e76f30e4b7585f74c73ad6d6ebca8", - "support" - ], - "content-security-policy/blink-contrib-2/form-action-src-redirect-blocked.sub.html": [ - "51a8da18c3e10220c8080ea33e10e7d7d8abcb07", - "testharness" - ], - "content-security-policy/blink-contrib-2/form-action-src-redirect-blocked.sub.html.sub.headers": [ - "3a3b24785f4fea78703818933b0476896e959545", - "support" - ], - "content-security-policy/blink-contrib-2/meta-outside-head.sub.html": [ - "68f74fa0c400ca45ddf0281d373da2630f03b8f2", - "testharness" - ], - "content-security-policy/blink-contrib-2/meta-outside-head.sub.html.sub.headers": [ - "3693f04b4221fac51e2074e5ab29d09394fe3b43", - "support" - ], - "content-security-policy/blink-contrib-2/metaHelper.js": [ - "ff614bd9c4e37c02c8027c6b38fc615c0ade6883", - "support" - ], - "content-security-policy/blink-contrib-2/plugintypes-mismatched-data.sub.html": [ - "898041d9b67c26e17e346b76c5d74eb7f1aa84a9", - "testharness" - ], - "content-security-policy/blink-contrib-2/plugintypes-mismatched-data.sub.html.sub.headers": [ - "670e8a07d47244eb5cc339ffbd84c21f64116370", - "support" - ], - "content-security-policy/blink-contrib-2/plugintypes-mismatched-url.sub.html": [ - "2013babc6dd58142e92c57df92f0435035bf1ed1", - "testharness" - ], - "content-security-policy/blink-contrib-2/plugintypes-mismatched-url.sub.html.sub.headers": [ - "dda5601b7a82a0c74c72546211b6342a6a1649c1", - "support" - ], - "content-security-policy/blink-contrib-2/plugintypes-notype-data.sub.html": [ - "c63a410659d4e310c49c7d801164631d0182df67", - "testharness" - ], - "content-security-policy/blink-contrib-2/plugintypes-notype-data.sub.html.sub.headers": [ - "c57954b107555b24a8533c9761e325804b0a361a", - "support" - ], - "content-security-policy/blink-contrib-2/plugintypes-notype-url.sub.html": [ - "a41d08e25b47576b9cfdcf4fcc455cb08c2fbf34", - "testharness" - ], - "content-security-policy/blink-contrib-2/plugintypes-notype-url.sub.html.sub.headers": [ - "4689f895bf0571659932e078ae5c515b206dbb50", - "support" - ], - "content-security-policy/blink-contrib-2/plugintypes-nourl-allowed.sub.html": [ - "75d812278e01f876069ccf40ad2e8d776cfe0ddf", + "content-security-policy/blob/blob-urls-do-not-match-self.sub.html": [ + "8fb0231ccaff9062464119096a4ae89c04216b42", "testharness" ], - "content-security-policy/blink-contrib-2/plugintypes-nourl-allowed.sub.html.sub.headers": [ - "23cd8eaa18002d63739cedfb7fae8e609d74df4f", - "support" - ], - "content-security-policy/blink-contrib-2/plugintypes-nourl-blocked.sub.html": [ - "519c94f700d87a69dc9c89ce5670112a5024cd61", + "content-security-policy/blob/blob-urls-match-blob.sub.html": [ + "ed1190f47cbdc174364d1e40b842acc0b2320b0a", "testharness" ], - "content-security-policy/blink-contrib-2/plugintypes-nourl-blocked.sub.html.sub.headers": [ - "c5f88b1987a74cad08d716600963b572786684ea", - "support" - ], - "content-security-policy/blink-contrib-2/script-src-wildcards-disallowed.html": [ - "f37a26072dda19784f9a8b1a5cd19908641addb4", - "testharness" - ], - "content-security-policy/blink-contrib-2/script-src-wildcards-disallowed.html.sub.headers": [ - "489ccab66c926e96b8d8e63fc570bbcbc9be914d", - "support" - ], - "content-security-policy/blink-contrib-2/scripthash-allowed.sub.html": [ - "504d8fcd9a506bc26ec62f4013be4c932b51b7be", + "content-security-policy/blob/self-doesnt-match-blob.sub.html": [ + "ecf7854c6d8a895cde255d3eb27316f22473373a", "testharness" ], - "content-security-policy/blink-contrib-2/scripthash-allowed.sub.html.sub.headers": [ - "efa78236077151c9db3131dc4012d313be14d2cf", - "support" - ], - "content-security-policy/blink-contrib-2/scripthash-basic-blocked.sub.html": [ - "60327c2ed7fafd20d6856c64a58d5a45f57edd59", - "testharness" - ], - "content-security-policy/blink-contrib-2/scripthash-basic-blocked.sub.html.sub.headers": [ - "bd797393705ef8e94c38d3901c9875b17a12cda7", - "support" - ], - "content-security-policy/blink-contrib-2/scripthash-default-src.sub.html": [ - "f68fd0d2c9f32ac979b89c74262c09d2ff350052", - "testharness" - ], - "content-security-policy/blink-contrib-2/scripthash-default-src.sub.html.sub.headers": [ - "fbd7e70e5242a6e9dc49392ee3ac94b07a809f12", - "support" - ], - "content-security-policy/blink-contrib-2/scripthash-ignore-unsafeinline.sub.html": [ - "4c820472cd10c61bc4ee2b4fcd3f7166bc4eed63", - "testharness" - ], - "content-security-policy/blink-contrib-2/scripthash-ignore-unsafeinline.sub.html.sub.headers": [ - "d2653014b0a2ef8fa8ac48f487ac0190b0322491", - "support" - ], - "content-security-policy/blink-contrib-2/scripthash-unicode-normalization.sub.html": [ - "19e9ba394da26e22112d5259da9f687e15dad71d", - "testharness" - ], - "content-security-policy/blink-contrib-2/scripthash-unicode-normalization.sub.html.sub.headers": [ - "2846f1df6ad40681e3da12e73cc835211787368a", - "support" - ], - "content-security-policy/blink-contrib-2/scriptnonce-allowed.sub.html": [ - "db7030d465c87d5820389ddefb43e5023e5d3f22", - "testharness" - ], - "content-security-policy/blink-contrib-2/scriptnonce-allowed.sub.html.sub.headers": [ - "8b1cea5e0795626976e9fb99b1207d91125006f7", - "support" - ], - "content-security-policy/blink-contrib-2/scriptnonce-and-scripthash.sub.html": [ - "727b7acbfdec17f3740bfdc86df33a8bcb608a10", - "testharness" - ], - "content-security-policy/blink-contrib-2/scriptnonce-and-scripthash.sub.html.sub.headers": [ - "ebf7b1a5fb3f003f86977876a163715a01c3627b", - "support" - ], - "content-security-policy/blink-contrib-2/scriptnonce-basic-blocked.sub.html": [ - "768b314d977b5b23af218b7a004502d3c444938b", - "testharness" - ], - "content-security-policy/blink-contrib-2/scriptnonce-basic-blocked.sub.html.sub.headers": [ - "6dac27cec2673d7b8c0f4c8cbc37b502469c143d", - "support" - ], - "content-security-policy/blink-contrib-2/scriptnonce-ignore-unsafeinline.sub.html": [ - "fa1c716c2e68cbc805796d7ec223fe84a51978c9", - "testharness" - ], - "content-security-policy/blink-contrib-2/scriptnonce-ignore-unsafeinline.sub.html.sub.headers": [ - "5eb2dece8f120e0db6980bc26e6b6c9bc9d46e7a", - "support" - ], - "content-security-policy/blink-contrib-2/scriptnonce-redirect.sub.html": [ - "30befb75a19b8111c23a97ce7f4f60db4d24d493", - "testharness" - ], - "content-security-policy/blink-contrib-2/scriptnonce-redirect.sub.html.sub.headers": [ - "10f81ddd4bf6cd9a3d9c47f686162cd8d68b8aea", - "support" - ], - "content-security-policy/blink-contrib-2/securitypolicyviolation-block-cross-origin-image-from-script.sub.html": [ - "f9dd2b59f8dbdd8ba9eb60265e10cf095a1fb147", - "testharness" - ], - "content-security-policy/blink-contrib-2/securitypolicyviolation-block-cross-origin-image-from-script.sub.html.sub.headers": [ - "93fc40dfbce27b0aeefcad22a111ad060fd696e4", - "support" - ], - "content-security-policy/blink-contrib-2/securitypolicyviolation-block-cross-origin-image.sub.html": [ - "d2d4c75e332b4e64314572aa64fa173463a9f017", - "testharness" - ], - "content-security-policy/blink-contrib-2/securitypolicyviolation-block-cross-origin-image.sub.html.sub.headers": [ - "b0f6577c04f6ed4fcdb502353d1d54ed9bfc8cb7", - "support" - ], - "content-security-policy/blink-contrib-2/securitypolicyviolation-block-image-from-script.sub.html": [ - "40170584f1f4e64dde81a6223a60b73d8e8d03ad", - "testharness" - ], - "content-security-policy/blink-contrib-2/securitypolicyviolation-block-image-from-script.sub.html.sub.headers": [ - "992e5a67c57e895c77f4dd792c2a6d1e5eea541c", - "support" - ], - "content-security-policy/blink-contrib-2/securitypolicyviolation-block-image.sub.html": [ - "3ea03b1451627610c5efc7cad3917d6872a0fae1", - "testharness" - ], - "content-security-policy/blink-contrib-2/securitypolicyviolation-block-image.sub.html.sub.headers": [ - "1cc03dde82f7d1526d65b30528252e5b796ae511", - "support" - ], - "content-security-policy/blink-contrib-2/stylehash-allowed.sub.html": [ - "5e13fc8c91c0226bf65acb509f8bb8df5a5ba4a5", - "testharness" - ], - "content-security-policy/blink-contrib-2/stylehash-allowed.sub.html.sub.headers": [ - "061e9277db484d4f644e4accef00192c9efcdc33", - "support" - ], - "content-security-policy/blink-contrib-2/stylehash-basic-blocked.sub.html": [ - "c19d049605cefc84354daaf26226d97549fd1c62", - "testharness" - ], - "content-security-policy/blink-contrib-2/stylehash-basic-blocked.sub.html.sub.headers": [ - "f81ca255119107540a3f21637ea33c808d084bdd", - "support" - ], - "content-security-policy/blink-contrib-2/stylehash-default-src.sub.html": [ - "5fe5655682b353ff9b708cf25d5b2b789e2060df", - "testharness" - ], - "content-security-policy/blink-contrib-2/stylehash-default-src.sub.html.sub.headers": [ - "2570aa3a9ca93ae4229ab94b7db01e8c15c54dea", - "support" - ], - "content-security-policy/blink-contrib-2/stylenonce-allowed.sub.html": [ - "248fe8cfb2653de13b284856d45b64ecaeaf05c7", - "testharness" - ], - "content-security-policy/blink-contrib-2/stylenonce-allowed.sub.html.sub.headers": [ - "a8709c0fe8a6157a8c5b8f204b2e2c2dc5d54d94", - "support" - ], - "content-security-policy/blink-contrib-2/stylenonce-blocked.sub.html": [ - "b3818c2571c2842eb41e592972787ea6253e1cda", - "testharness" - ], - "content-security-policy/blink-contrib-2/stylenonce-blocked.sub.html.sub.headers": [ - "4853d89a7fd9a143088489503a6fd40597aaa048", - "support" - ], - "content-security-policy/blink-contrib/blob-urls-do-not-match-self.sub.html": [ - "24c5d49b3581311e5fc1ecb571bc5954986caf8c", - "testharness" - ], - "content-security-policy/blink-contrib/blob-urls-do-not-match-self.sub.html.sub.headers": [ - "102b595589378313916db4d8ee8deffed78de386", - "support" - ], - "content-security-policy/blink-contrib/blob-urls-match-blob.sub.html": [ - "bfa1efe4f4781b85f170645fa5a85cc65c42b085", - "testharness" - ], - "content-security-policy/blink-contrib/blob-urls-match-blob.sub.html.sub.headers": [ - "cc3a099cb7177060f656b543de60beecd469f378", - "support" - ], - "content-security-policy/blink-contrib/combine-header-and-meta-policies.sub.html": [ - "d92daf8146437e2d95bd8179b9b868dc67c59385", - "testharness" - ], - "content-security-policy/blink-contrib/combine-header-and-meta-policies.sub.html.sub.headers": [ - "f2603d3d846366364be454c45fb2b81b1be6ac67", - "support" - ], - "content-security-policy/blink-contrib/combine-multiple-header-policies.html.asis": [ - "6ff2a399547ec42c3e7e0eae7096fb4987ccaa14", - "support" - ], - "content-security-policy/blink-contrib/connect-src-beacon-allowed.sub.html": [ - "85d842357335ecd60168eabac0f43ff9febfcc6a", - "testharness" - ], - "content-security-policy/blink-contrib/connect-src-beacon-allowed.sub.html.sub.headers": [ - "0f8ec34cff2a3a5bf3587c476b31938ddc046c2a", - "support" - ], - "content-security-policy/blink-contrib/connect-src-beacon-blocked.sub.html": [ - "5f55cfa4f5495b4f9b27ca5e900faa42048864c7", - "testharness" - ], - "content-security-policy/blink-contrib/connect-src-beacon-blocked.sub.html.sub.headers": [ - "813cd9544dc5666f87112e7da1ae3a36a291271d", - "support" - ], - "content-security-policy/blink-contrib/connect-src-beacon-redirect-to-blocked.sub.html": [ - "8e55b1117a947edfafdc6ffaa1670ebafd536066", - "testharness" - ], - "content-security-policy/blink-contrib/connect-src-beacon-redirect-to-blocked.sub.html.sub.headers": [ - "28e08f4f4251ee5a9fcc9594cecc70bd14060228", - "support" - ], - "content-security-policy/blink-contrib/connect-src-eventsource-allowed.sub.html": [ - "7b3f0331c46f70747f957e280083d309003e437f", - "testharness" - ], - "content-security-policy/blink-contrib/connect-src-eventsource-allowed.sub.html.sub.headers": [ - "ec13e2fdc5fb56dc3dee8a0995719d96a4bba405", - "support" - ], - "content-security-policy/blink-contrib/connect-src-eventsource-blocked.sub.html": [ - "821efa8a9a464068112eedceab309bd6c775910a", - "testharness" - ], - "content-security-policy/blink-contrib/connect-src-eventsource-blocked.sub.html.sub.headers": [ - "21f6758a1b449188bb2adfe948018c5b0a7bf064", - "support" - ], - "content-security-policy/blink-contrib/connect-src-eventsource-redirect-to-blocked.sub.html": [ - "f54d3fd58c36d4424168ff29556d888314b58fcb", - "testharness" - ], - "content-security-policy/blink-contrib/connect-src-eventsource-redirect-to-blocked.sub.html.sub.headers": [ - "294a04ecb2f88b1a0d27b52066736b263379ece4", - "support" - ], - "content-security-policy/blink-contrib/connect-src-websocket-allowed.sub.html": [ - "a83fb905d187a31c088241a12764f2c5aa3ae831", - "testharness" - ], - "content-security-policy/blink-contrib/connect-src-websocket-allowed.sub.html.sub.headers": [ - "b28a1e116ffca21860a6c86a0fd82d2ce2a0d3f3", - "support" - ], - "content-security-policy/blink-contrib/connect-src-websocket-blocked.sub.html": [ - "178a2db4e5ca568b277d112334aff2602b037d68", - "testharness" - ], - "content-security-policy/blink-contrib/connect-src-websocket-blocked.sub.html.sub.headers": [ - "a1053d5f59cb43aa04827e67fc8b905fdf3ab650", - "support" - ], - "content-security-policy/blink-contrib/connect-src-xmlhttprequest-allowed.sub.html": [ - "4297111d8a845cdf03360b0ec11c30b156e89491", - "testharness" - ], - "content-security-policy/blink-contrib/connect-src-xmlhttprequest-allowed.sub.html.sub.headers": [ - "325045d838e6ff7cb6e3f5631bc07d908bdab11f", - "support" - ], - "content-security-policy/blink-contrib/connect-src-xmlhttprequest-blocked.sub.html": [ - "2c2433996296ffe187d68530fdc6d68788c3a3f4", - "testharness" - ], - "content-security-policy/blink-contrib/connect-src-xmlhttprequest-blocked.sub.html.sub.headers": [ - "54fcb5239bf6142d0f7e49d892eb31a1a8de2247", - "support" - ], - "content-security-policy/blink-contrib/connect-src-xmlhttprequest-redirect-to-blocked.sub.html": [ - "e47c7d9becb9a1684a6691c69ebe2becd1716919", - "testharness" - ], - "content-security-policy/blink-contrib/connect-src-xmlhttprequest-redirect-to-blocked.sub.html.sub.headers": [ - "c163d71619fd06a3d73fe20ab90cb8f9438ac4e1", - "support" - ], - "content-security-policy/blink-contrib/default-src-inline-allowed.sub.html": [ - "f46a2203104183e875ff951e00dcd23a35a8f3f4", - "testharness" - ], - "content-security-policy/blink-contrib/default-src-inline-allowed.sub.html.sub.headers": [ - "14f88f9af278c73a82d65c1a9672dfba68b56f33", - "support" - ], - "content-security-policy/blink-contrib/default-src-inline-blocked.sub.html": [ - "b3252eacf28189f2ecc0722000c329e0e36a2c30", - "testharness" - ], - "content-security-policy/blink-contrib/default-src-inline-blocked.sub.html.sub.headers": [ - "eb81acca81e2785a5fda4c415668c6701472b111", - "support" - ], - "content-security-policy/blink-contrib/duplicate-directive.sub.html": [ - "aa6f1ae3a705c2aa8f0d89a1837964b68ff4fd98", - "testharness" - ], - "content-security-policy/blink-contrib/duplicate-directive.sub.html.sub.headers": [ - "3545a979a8c0616c6ca51c310787ee8962e62d52", - "support" - ], - "content-security-policy/blink-contrib/eval-allowed.sub.html": [ - "a08c6e53cd847d2b196de9689de194d84a7d6808", + "content-security-policy/blob/star-doesnt-match-blob.sub.html": [ + "6b0e38bd3eecc061772515d651386a155a0905fe", "testharness" ], - "content-security-policy/blink-contrib/eval-allowed.sub.html.sub.headers": [ - "62c0917fb937946cacd3e57b72178fd0fe1a1b48", - "support" - ], - "content-security-policy/blink-contrib/eval-blocked-and-sends-report.sub.html": [ - "abe7966831e16489f9e055a8d7ea7bf3426c1bdd", - "testharness" - ], - "content-security-policy/blink-contrib/eval-blocked-and-sends-report.sub.html.sub.headers": [ - "7e3372b1a4d99483c5e7270e60dfa5a63743a2e9", - "support" - ], - "content-security-policy/blink-contrib/eval-blocked-in-about-blank-iframe.sub.html": [ - "f0abdbd1904ed3bf999140fa7e945d65c7de8cc9", - "support" - ], - "content-security-policy/blink-contrib/eval-blocked-in-about-blank-iframe.sub.html.sub.headers": [ - "2639828fc734a229e94f624db55dce1dad78a738", - "support" - ], - "content-security-policy/blink-contrib/eval-blocked.sub.html": [ - "df5c83f290327658fc4ed01e8a0298409af87d5f", - "testharness" - ], - "content-security-policy/blink-contrib/eval-blocked.sub.html.sub.headers": [ - "10a3b9f5e926f5f24dc9dbac58e881b16279d02e", - "support" - ], - "content-security-policy/blink-contrib/eval-scripts-setInterval-allowed.sub.html": [ - "80aa58cf370623245fc81f607d6788410def2035", - "testharness" - ], - "content-security-policy/blink-contrib/eval-scripts-setInterval-allowed.sub.html.sub.headers": [ - "179a7fad9090c3a4cee7dc0663864f75bd56e5e1", - "support" - ], - "content-security-policy/blink-contrib/eval-scripts-setInterval-blocked.sub.html": [ - "f9d5f72018bea3569fbee2187ef0087fc7b019f8", - "testharness" - ], - "content-security-policy/blink-contrib/eval-scripts-setInterval-blocked.sub.html.sub.headers": [ - "730a7c9e70ba80203d6ec1a4987b2d635c6dcdd3", - "support" - ], - "content-security-policy/blink-contrib/eval-scripts-setTimeout-allowed.sub.html": [ - "30e88830998f0a5519c0092dcd4b61eb815b180f", - "testharness" - ], - "content-security-policy/blink-contrib/eval-scripts-setTimeout-allowed.sub.html.sub.headers": [ - "64dd67576b23144bd94b0d6f10de9b0d70068b5c", - "support" - ], - "content-security-policy/blink-contrib/eval-scripts-setTimeout-blocked.sub.html": [ - "0bcd585a7ea4cd2521d4462579766dfe4c346d22", - "testharness" - ], - "content-security-policy/blink-contrib/eval-scripts-setTimeout-blocked.sub.html.sub.headers": [ - "f1271aaed9988929e1ce84e5ee3a92be0d6279fa", - "support" - ], - "content-security-policy/blink-contrib/filesystem-urls-do-not-match-self.sub.html": [ - "a63e65f32c0e703f1a012da6f6743948b118bd7e", - "testharness" - ], - "content-security-policy/blink-contrib/filesystem-urls-do-not-match-self.sub.html.sub.headers": [ - "4825d6a31d28f76dec815089ef7ca470515690b2", - "support" - ], - "content-security-policy/blink-contrib/filesystem-urls-match-filesystem.sub.html": [ - "9680e354c42e579be95716e0b14981cb0ce2914b", - "testharness" - ], - "content-security-policy/blink-contrib/filesystem-urls-match-filesystem.sub.html.sub.headers": [ - "055354047a28465a85243b96a7496e2c9f18133c", - "support" - ], - "content-security-policy/blink-contrib/frame-src-about-blank-allowed-by-default.sub.html": [ - "af2613be64e555706774100db1684d6403960741", - "testharness" - ], - "content-security-policy/blink-contrib/frame-src-about-blank-allowed-by-default.sub.html.sub.headers": [ - "5b7a4395122e2b71eeb3fb102a09eeddf5a18207", - "support" - ], - "content-security-policy/blink-contrib/frame-src-about-blank-allowed-by-scheme.sub.html": [ - "51e485a3618cfd5901eedc8ef4a82a6e92f6b3c7", - "testharness" - ], - "content-security-policy/blink-contrib/frame-src-about-blank-allowed-by-scheme.sub.html.sub.headers": [ - "8197c90f60c1be3904f2959b894c7e3633ed613a", - "support" - ], - "content-security-policy/blink-contrib/frame-src-allowed.sub.html": [ - "9741e0aa95e1769427f49956fcaaeb09491d053e", - "testharness" - ], - "content-security-policy/blink-contrib/frame-src-allowed.sub.html.sub.headers": [ - "23043a49f48b67cedbd02f3558935f86f935bd02", - "support" - ], - "content-security-policy/blink-contrib/frame-src-blocked.sub.html": [ - "deb6fb388cef5a43a5e6c409fce2223cbc90e71a", - "testharness" - ], - "content-security-policy/blink-contrib/frame-src-blocked.sub.html.sub.headers": [ - "5f032c02128b6f0343161eee6727393719e467e4", - "support" - ], - "content-security-policy/blink-contrib/frame-src-cross-origin-load.sub.html": [ - "7b83244696dd971872c64b135638cddd00d662f5", - "testharness" - ], - "content-security-policy/blink-contrib/frame-src-cross-origin-load.sub.html.sub.headers": [ - "1ee2ef92b2f77485862e3e79d9a32d489edbf992", - "support" - ], - "content-security-policy/blink-contrib/function-constructor-allowed.sub.html": [ - "10232e7325a194daec21704022a2954f37011bac", - "testharness" - ], - "content-security-policy/blink-contrib/function-constructor-allowed.sub.html.sub.headers": [ - "ba914f7cb6147b068218ea5c7793e3af823e130c", - "support" - ], - "content-security-policy/blink-contrib/function-constructor-blocked.sub.html": [ - "5b564654f8bf198bfc12aff6aa8980d7337dd8fb", - "testharness" - ], - "content-security-policy/blink-contrib/function-constructor-blocked.sub.html.sub.headers": [ - "8475eb49eeecd0869f5065083164642c7c2d8957", - "support" - ], - "content-security-policy/blink-contrib/icon-allowed.sub.html": [ - "2cb38da88b77339f6d4b8dae71ce1379349a90b4", - "support" - ], - "content-security-policy/blink-contrib/icon-allowed.sub.html.sub.headers": [ - "2c8be4fa14cd1df33d7fc0aee621bc702c9cdb1e", - "support" - ], - "content-security-policy/blink-contrib/icon-blocked.sub.html": [ - "80c5296a3091d56f655280b2ade55d841cf5dc7d", - "support" - ], - "content-security-policy/blink-contrib/icon-blocked.sub.html.sub.headers": [ - "b97148dfba843d1a9f2230660647a73f6c56708f", - "support" - ], - "content-security-policy/blink-contrib/iframe-inside-csp.sub.html": [ - "fb56541d51e38ec0e9d3a5c8c374292c25c6e0c6", - "support" - ], - "content-security-policy/blink-contrib/iframe-inside-csp.sub.html.sub.headers": [ - "5389749903edb42152560eda2c1108496da7c428", - "support" - ], - "content-security-policy/blink-contrib/image-allowed.sub.html": [ - "ec80b700f1add010d31619c4e2e6db92694dbde4", - "testharness" - ], - "content-security-policy/blink-contrib/image-allowed.sub.html.sub.headers": [ - "fa9826115d5cd10837e86f8655032ca0e8dd08bb", - "support" - ], - "content-security-policy/blink-contrib/image-blocked.sub.html": [ - "c4b8906a19de0cf2b6a87de1d27a623752cff028", + "content-security-policy/child-src/child-src-about-blank-allowed-by-default.sub.html": [ + "aaaca916f886f938cba52da4763b49a82f2b6ef8", "testharness" ], - "content-security-policy/blink-contrib/image-blocked.sub.html.sub.headers": [ - "ae212fe4eef305ad278165bd1857dce51ac7b500", - "support" - ], - "content-security-policy/blink-contrib/image-full-host-wildcard-allowed.sub.html": [ - "0ef428649d2af808395ae4ef8873bb67fa5494a3", + "content-security-policy/child-src/child-src-about-blank-allowed-by-scheme.sub.html": [ + "f1b9578036a258488f81a8301b54063feb56d8f0", "testharness" ], - "content-security-policy/blink-contrib/image-full-host-wildcard-allowed.sub.html.sub.headers": [ - "08eb1c33eb15ff0fd49d5a5d6f21059661d702ac", - "support" - ], - "content-security-policy/blink-contrib/injected-inline-script-allowed.sub.html": [ - "502c1a0ec24188bc9ac057fc0649cfaf9df2c586", + "content-security-policy/child-src/child-src-allowed.sub.html": [ + "d1771ab8136386cee64c7f2d83a24b6d797f55f8", "testharness" ], - "content-security-policy/blink-contrib/injected-inline-script-allowed.sub.html.sub.headers": [ - "d339bfe0f34c6681a9a87cc3e000915cd134e7df", - "support" - ], - "content-security-policy/blink-contrib/injected-inline-script-blocked.sub.html": [ - "f081e97f85d1f508a93387e1a6a13fdb8f1ac8af", + "content-security-policy/child-src/child-src-blocked.sub.html": [ + "0441b79da3a4e318b2c20f7b8f89b705dec7804f", "testharness" ], - "content-security-policy/blink-contrib/injected-inline-script-blocked.sub.html.sub.headers": [ - "3231642fae43bbd17c95144c5300c12e7b0dbcbf", - "support" - ], - "content-security-policy/blink-contrib/injected-inline-style-allowed.sub.html": [ - "6d1e44e38d455d808f84e8c768ee2e9463a93394", + "content-security-policy/child-src/child-src-conflicting-frame-src.sub.html": [ + "dfc2e12a25932ba08753c6a960c731e144a0ae12", "testharness" ], - "content-security-policy/blink-contrib/injected-inline-style-allowed.sub.html.sub.headers": [ - "2d9e07d1abb825b2e9cd007fd654ad0813ed585b", - "support" - ], - "content-security-policy/blink-contrib/injected-inline-style-blocked.sub.html": [ - "42a173324a8ac47b6d503af816f761e99ad4f63c", + "content-security-policy/child-src/child-src-cross-origin-load.sub.html": [ + "5e35ab6c4a3384f87d23cfaab6a66ecfdf7dc862", "testharness" ], - "content-security-policy/blink-contrib/injected-inline-style-blocked.sub.html.sub.headers": [ - "1636468fc51e25aea5ce89e74cda44aec4904b50", - "support" - ], - "content-security-policy/blink-contrib/inline-style-allowed-while-cloning-objects.sub.html": [ - "10859486137819559e70f93d9ca14b140a31f268", + "content-security-policy/child-src/child-src-redirect-blocked.sub.html": [ + "97f865df60cc22c3d7ee1888db7dc20be2a7e81a", "testharness" ], - "content-security-policy/blink-contrib/inline-style-allowed-while-cloning-objects.sub.html.sub.headers": [ - "ece1760314594ba10069b299c898886fa4d2dca7", - "support" - ], - "content-security-policy/blink-contrib/inline-style-allowed.sub.html": [ - "4274e277aca415ab8afc2984adbdbcf41b8fbea5", + "content-security-policy/child-src/child-src-worker-allowed.sub.html": [ + "da18b70d2f859c83f1599e5f65bfeb67d1183ee4", "testharness" ], - "content-security-policy/blink-contrib/inline-style-allowed.sub.html.sub.headers": [ - "7cc5d2f15268e4ac5e42c325ca8c8d013c3172e6", - "support" - ], - "content-security-policy/blink-contrib/inline-style-attribute-allowed.sub.html": [ - "654705464184d21c8b3104e5a656b999980e28ca", + "content-security-policy/child-src/child-src-worker-blocked.sub.html": [ + "16fc87d40c7466de1b59674abc4510c29c7d8cd2", "testharness" ], - "content-security-policy/blink-contrib/inline-style-attribute-allowed.sub.html.sub.headers": [ - "7b151b5019f9a42f5490dfcd8762b169df93568f", - "support" - ], - "content-security-policy/blink-contrib/inline-style-attribute-blocked.sub.html": [ - "08bee8596d1b46fb846e2585526365d406b9e443", + "content-security-policy/connect-src/connect-src-beacon-allowed.sub.html": [ + "7970e661ec27a69268f189df30f8fbd3e4574f4a", "testharness" ], - "content-security-policy/blink-contrib/inline-style-attribute-blocked.sub.html.sub.headers": [ - "414ccf7b1fb81533b18d1761568c2b29a3374d05", - "support" - ], - "content-security-policy/blink-contrib/inline-style-attribute-on-html.sub.html": [ - "6bab2dd936f4f0c10d55e5c2c0d77472fae0b962", + "content-security-policy/connect-src/connect-src-beacon-blocked.sub.html": [ + "c9a67e2b0e68c79f95d825552be71452a7786b5d", "testharness" ], - "content-security-policy/blink-contrib/inline-style-attribute-on-html.sub.html.sub.headers": [ - "1491c2deb8c9b434abac7b7477d8342d8d4bc680", - "support" - ], - "content-security-policy/blink-contrib/inline-style-blocked.sub.html": [ - "05051ca8f016b16bbd24ae685ea2ce05be0fa9cc", + "content-security-policy/connect-src/connect-src-beacon-redirect-to-blocked.sub.html": [ + "a264a2a9ff354c8ee4b938e1c1450f0386bfca4e", "testharness" ], - "content-security-policy/blink-contrib/inline-style-blocked.sub.html.sub.headers": [ - "d847dfa9fec3763edd4b8d1e0394e5c991d37524", - "support" - ], - "content-security-policy/blink-contrib/manifest-src-allowed.sub.html.sub.headers": [ - "b8aecfde2a75b6c0a0475e39c38f0802df07b503", - "support" - ], - "content-security-policy/blink-contrib/manifest-src-blocked.sub.html.sub.headers": [ - "903f086b16a9f45d27a6b92345473e1e139b241c", - "support" - ], - "content-security-policy/blink-contrib/media-src-allowed.sub.html": [ - "9b89b4247c6142c8c2d0a998c347af3953a25cc6", - "support" - ], - "content-security-policy/blink-contrib/media-src-allowed.sub.html.sub.headers": [ - "815fb25ca6f00b72fefd852f54553246a06fa703", - "support" - ], - "content-security-policy/blink-contrib/media-src-blocked.sub.html": [ - "da8fb3f95a9cd0290955c0f3d5c6ba16734960df", - "support" - ], - "content-security-policy/blink-contrib/media-src-blocked.sub.html.sub.headers": [ - "8b7e86e63aab33e88135232b750b2aa14c1dd5b1", - "support" - ], - "content-security-policy/blink-contrib/media-src-track-block.sub.html": [ - "eced9662b2c78da18fcf9b5d6f2a152b0c08d0ce", + "content-security-policy/connect-src/connect-src-eventsource-allowed.sub.html": [ + "c81ac8cb24d0865cf4a542f5cb4543cf142e5b91", "testharness" ], - "content-security-policy/blink-contrib/media-src-track-block.sub.html.sub.headers": [ - "bb009d5c24ca8378c2507d11bff795b051314b6f", - "support" - ], - "content-security-policy/blink-contrib/object-in-svg-foreignobject.sub.html": [ - "b190bbe16893d13d25599c2cbb344efc3f61eca8", + "content-security-policy/connect-src/connect-src-eventsource-blocked.sub.html": [ + "bf1ea083a5d5759d2e534d303ab77de143269d72", "testharness" ], - "content-security-policy/blink-contrib/object-in-svg-foreignobject.sub.html.sub.headers": [ - "368845671fc996d39fd6f85c113a26cdaa98ee3e", - "support" - ], - "content-security-policy/blink-contrib/object-src-no-url-allowed.sub.html": [ - "e4cd8d8e7a3150626eea1d6ca7beed13feb6a76c", + "content-security-policy/connect-src/connect-src-eventsource-redirect-to-blocked.sub.html": [ + "b9686b701881c5f21a96b69220a7f5a9b5bc9245", "testharness" ], - "content-security-policy/blink-contrib/object-src-no-url-allowed.sub.html.sub.headers": [ - "45d7467bb741dc0c79dce502b805a5bbd1e9be87", - "support" - ], - "content-security-policy/blink-contrib/object-src-no-url-blocked.sub.html": [ - "d65c0b5836b2de7a08fb0449bb14ddba96cde393", + "content-security-policy/connect-src/connect-src-websocket-allowed.sub.html": [ + "5a6577c1b848b0615a3e7581f53501eedf521d94", "testharness" ], - "content-security-policy/blink-contrib/object-src-no-url-blocked.sub.html.sub.headers": [ - "e44638c408b443834917aff02b682e60173c8e86", - "support" - ], - "content-security-policy/blink-contrib/object-src-url-allowed.sub.html": [ - "3c438e241bf7aaf9bf9b5a0822b86aa53ade410e", + "content-security-policy/connect-src/connect-src-websocket-blocked.sub.html": [ + "43a867fca7a3e067dcd9ca38a334d97707ebfa42", "testharness" ], - "content-security-policy/blink-contrib/object-src-url-allowed.sub.html.sub.headers": [ - "6446f7e9da139fc9767b98f8c386df2d258b904d", - "support" - ], - "content-security-policy/blink-contrib/object-src-url-blocked.sub.html": [ - "46091ded84a3ac6f351748082ede8a794f8eda6a", + "content-security-policy/connect-src/connect-src-xmlhttprequest-allowed.sub.html": [ + "0be3adbd14e0188a5f2c4211b4b4726beee03bf9", "testharness" ], - "content-security-policy/blink-contrib/object-src-url-blocked.sub.html.sub.headers": [ - "7b7b534814bc7e37b9ff9fd9690b279abb311e83", - "support" - ], - "content-security-policy/blink-contrib/policy-does-not-affect-child.sub.html": [ - "f4d819fa1c0ec1e24b0e74a3950c263c76468cfe", - "support" - ], - "content-security-policy/blink-contrib/policy-does-not-affect-child.sub.html.sub.headers": [ - "cb53654fa55c4a9446505ffb1a0a8da7888c6f79", - "support" - ], - "content-security-policy/blink-contrib/report-blocked-data-uri.sub.html": [ - "c56334c6f75ed43062a9cc08fab6526dcdcff80e", - "testharness" - ], - "content-security-policy/blink-contrib/report-blocked-data-uri.sub.html.sub.headers": [ - "120a5c71801a9fa9f7d18a34f03c0bfd6026f845", - "support" - ], - "content-security-policy/blink-contrib/report-cross-origin-no-cookies.sub.html": [ - "90fe967c355bb45e66d4820c36412baf7826ffd0", + "content-security-policy/connect-src/connect-src-xmlhttprequest-blocked.sub.html": [ + "eef23d6c5a7bb3e40cf676bc04c37c2d5d88ba63", "testharness" ], - "content-security-policy/blink-contrib/report-cross-origin-no-cookies.sub.html.sub.headers": [ - "1323d5389e2fe4b68f885dba863e1a21983bbd30", - "support" - ], - "content-security-policy/blink-contrib/report-disallowed-from-meta.sub.html": [ - "ba1cf4795b8b4f315e8b4332fbba794f7cc3ffcb", + "content-security-policy/connect-src/connect-src-xmlhttprequest-redirect-to-blocked.sub.html": [ + "892d95d65e8aeb5ca483be7ddab20574cbb94871", "testharness" ], - "content-security-policy/blink-contrib/report-disallowed-from-meta.sub.html.sub.headers": [ - "a89139c890834d9337f31b93589bed9f34cf2841", + "content-security-policy/connect-src/resources/simple-event-stream": [ + "124e1ac1e4a03b239a0103fde73b55bbbb0855fd", "support" ], - "content-security-policy/blink-contrib/report-same-origin-with-cookies.sub.html": [ - "9f99f0cf234fdab3b75e6ebf5a8930cd4ad85390", - "testharness" - ], - "content-security-policy/blink-contrib/report-same-origin-with-cookies.sub.html.sub.headers": [ - "48214d030a6de451286fdd8a5aa5e3d48dbca195", + "content-security-policy/connect-src/resources/simple-event-stream.headers": [ + "65d9aec1d11f70ba583642485bd29895eaaca147", "support" ], - "content-security-policy/blink-contrib/report-uri-from-inline-javascript.sub.html": [ - "ef8bc915a7f34430a061b35eb3bbcb8bc0613f4d", + "content-security-policy/connect-src/shared-worker-connect-src-allowed.sub.html": [ + "46958a48f8781fd30a4ebf967731a9e3294762ee", "testharness" ], - "content-security-policy/blink-contrib/report-uri-from-inline-javascript.sub.html.sub.headers": [ - "84ceb850c577a075e012a69d339d18768c82ab10", - "support" - ], - "content-security-policy/blink-contrib/report-uri-from-javascript.sub.html": [ - "521054fb46361026aea231ace408c2e0581b54f2", + "content-security-policy/connect-src/shared-worker-connect-src-blocked.sub.html": [ + "189f59ba80a112a6c25c7e86d76d47d6a8531030", "testharness" ], - "content-security-policy/blink-contrib/report-uri-from-javascript.sub.html.sub.headers": [ - "9f7ff73e85e8ad4f5df51ad435444e325302811b", - "support" - ], - "content-security-policy/blink-contrib/report-uri.sub.html": [ - "8ac162de430a5e9881fe83722964de23dcb919f0", - "support" - ], - "content-security-policy/blink-contrib/report-uri.sub.html.sub.headers": [ - "3c601c116f232fe4000799170eae9363fde52bfe", - "support" - ], - "content-security-policy/blink-contrib/resources/alert-fail.html": [ - "87ae3acd155281670e78fbc5d88da940ed124f27", - "support" - ], - "content-security-policy/blink-contrib/resources/alert-pass.html": [ - "98fdc9b90f0e756906f9eede8af29c9ab76f0a65", - "support" - ], - "content-security-policy/blink-contrib/resources/blue.css": [ - "6916730820e3a58647256b75fccc4671dfc138e2", - "support" - ], - "content-security-policy/blink-contrib/resources/document-write-alert-fail.js": [ - "55f9e74adccef83969d5da859a05bf670f711671", - "support" - ], - "content-security-policy/blink-contrib/resources/generate-csp-report.html": [ - "f2a3666c68f716d83706259749cfbf6358d32588", - "support" - ], - "content-security-policy/blink-contrib/resources/go-to-echo-report.js": [ - "cf5a9535e88f5fa1ef702fd67f3abbc66a7707da", - "support" - ], - "content-security-policy/blink-contrib/resources/inject-image.js": [ - "68c6e9555db81c4c5d3fdbae74d6514f651767f7", - "support" - ], - "content-security-policy/blink-contrib/resources/inject-script.js": [ - "fa8c28d7bb4c1235e4485d84cb43181d2183106f", - "support" - ], - "content-security-policy/blink-contrib/resources/inject-style.js": [ - "a48eb434aa6fe0d0a4f664c55e68be03ccd902ed", - "support" - ], - "content-security-policy/blink-contrib/resources/post-message.js": [ - "c957a15a1c7a0c5dffc9e7a13d54da243ca9a93a", - "support" - ], - "content-security-policy/blink-contrib/resources/postmessage-fail.html": [ - "5ccfe2ec548aa6e16649c319c8252e608777fe64", - "support" - ], - "content-security-policy/blink-contrib/resources/postmessage-pass.html": [ - "ddfde964afded9ff5189c8c7554bcb2b1b1e5938", + "content-security-policy/connect-src/support/shared-worker-make-xhr-allowed.sub.js": [ + "82316da6f18de2f6041d5151c63c26b16dc07893", "support" ], - "content-security-policy/blink-contrib/resources/script.js": [ - "2db5164b374d72339c578dc82877625b6cab2b62", + "content-security-policy/connect-src/support/shared-worker-make-xhr-blocked.sub.js": [ + "82316da6f18de2f6041d5151c63c26b16dc07893", "support" ], - "content-security-policy/blink-contrib/resources/set-cookie.js.sub.headers": [ - "ba2f275ccec784515b1b0ac714e7375f9ab4943e", - "support" - ], - "content-security-policy/blink-contrib/resources/shared-worker-make-xhr-allowed.sub.js": [ - "79d7203262e2104394968cbffe92a5510da6d767", - "support" - ], - "content-security-policy/blink-contrib/resources/shared-worker-make-xhr-blocked.sub.js": [ - "79d7203262e2104394968cbffe92a5510da6d767", - "support" - ], - "content-security-policy/blink-contrib/resources/shared-worker-make-xhr-blocked.sub.js.sub.headers": [ + "content-security-policy/connect-src/support/shared-worker-make-xhr-blocked.sub.js.sub.headers": [ "1b73e7e4a8073542b9ac533bca6c67f6166b4c81", "support" ], - "content-security-policy/blink-contrib/resources/simple-event-stream": [ - "f31c8d23fe46adf8964955f6259e5af8a11b5577", - "support" - ], - "content-security-policy/blink-contrib/resources/simple-event-stream.headers": [ - "f7e15b2e1050398ae0a9f734dc84998c4abb459c", - "support" - ], - "content-security-policy/blink-contrib/resources/track.vtt": [ - "bae9efb1eaafa747c0c14735fd4352971562bf50", - "support" - ], - "content-security-policy/blink-contrib/resources/worker-eval.js": [ - "0d60a32731386d26cdbf776812cc5c6f06cf0859", - "support" - ], - "content-security-policy/blink-contrib/resources/worker-eval.js.sub.headers": [ - "6f31a9b9280caefeaafa70ed7c083d66a498fc6b", - "support" - ], - "content-security-policy/blink-contrib/resources/worker-function-function.js": [ - "4f588f68da51c11b8d1cdc7895a1b3abf4a392a3", - "support" - ], - "content-security-policy/blink-contrib/resources/worker-function-function.js.sub.headers": [ - "6f31a9b9280caefeaafa70ed7c083d66a498fc6b", - "support" - ], - "content-security-policy/blink-contrib/resources/worker-importscripts.js": [ - "21f2dac7b379a8e011027853666b623e7651fcc3", - "support" - ], - "content-security-policy/blink-contrib/resources/worker-importscripts.js.sub.headers": [ - "b5f8abd58a13f7ac8f99871fa004d6f1d6ffb014", - "support" - ], - "content-security-policy/blink-contrib/resources/worker-make-xhr-blocked.sub.js": [ + "content-security-policy/connect-src/support/worker-make-xhr-blocked.sub.js": [ "0a292c7941bfc0c141fe810672a798ec598862f3", "support" ], - "content-security-policy/blink-contrib/resources/worker-make-xhr-blocked.sub.js.sub.headers": [ + "content-security-policy/connect-src/support/worker-make-xhr-blocked.sub.js.sub.headers": [ "1b73e7e4a8073542b9ac533bca6c67f6166b4c81", "support" ], - "content-security-policy/blink-contrib/resources/worker-make-xhr.sub.js": [ + "content-security-policy/connect-src/support/worker-make-xhr.sub.js": [ "2001aa4e28ea6a6eb704daa455dd36ebcfc650c9", "support" ], - "content-security-policy/blink-contrib/resources/worker-set-timeout.js": [ - "3f24231bf14cedcc1eb93433e1be60ec74dcb1db", - "support" - ], - "content-security-policy/blink-contrib/resources/worker-set-timeout.js.sub.headers": [ - "b5f8abd58a13f7ac8f99871fa004d6f1d6ffb014", - "support" - ], - "content-security-policy/blink-contrib/sandbox-allow-scripts-subframe.sub.html": [ - "394545e94d4992b3f3dc2ff07809bf7364156d71", - "support" - ], - "content-security-policy/blink-contrib/sandbox-allow-scripts-subframe.sub.html.sub.headers": [ - "107129f8144494de98466a80bc5698bf98b5d154", - "support" - ], - "content-security-policy/blink-contrib/sandbox-allow-scripts.sub.html": [ - "4f0171eeb50c89da6bef7f89e053dfe66653701d", - "support" - ], - "content-security-policy/blink-contrib/sandbox-allow-scripts.sub.html.sub.headers": [ - "24b9465e76a321fae0635bc291a42883560c9bb6", - "support" - ], - "content-security-policy/blink-contrib/sandbox-empty-subframe.sub.html": [ - "673d1963d26261c445bd3f0200f11c43a0d74f4b", - "support" - ], - "content-security-policy/blink-contrib/sandbox-empty-subframe.sub.html.sub.headers": [ - "81542dbc5b3fd7a12431190b2dedd932c8e54384", - "support" - ], - "content-security-policy/blink-contrib/sandbox-empty.sub.html": [ - "405cf86633edc604ff984a136d3567830d76989c", - "support" - ], - "content-security-policy/blink-contrib/sandbox-empty.sub.html.sub.headers": [ - "72e6b6eb50e8b4ba606763405cf00c368a6c147e", - "support" - ], - "content-security-policy/blink-contrib/script-src-overrides-default-src.sub.html": [ - "5173b77a43904cceb3c8ad34bba62888d1516374", - "testharness" - ], - "content-security-policy/blink-contrib/script-src-overrides-default-src.sub.html.sub.headers": [ - "c13f16bca1e71c1fb147c4d6b5d4c97caa76faa9", - "support" - ], - "content-security-policy/blink-contrib/self-doesnt-match-blob.sub.html": [ - "7d8319e40063faa95dbc245b65d01dc33f4ecf71", - "testharness" - ], - "content-security-policy/blink-contrib/self-doesnt-match-blob.sub.html.sub.headers": [ - "6c0fbbd5f1b86e314dd098e9102dfe5debf3b064", - "support" - ], - "content-security-policy/blink-contrib/shared-worker-connect-src-allowed.sub.html": [ - "6b454ec2abc4f1941f33e22ae74000c17231c892", - "testharness" - ], - "content-security-policy/blink-contrib/shared-worker-connect-src-allowed.sub.html.sub.headers": [ - "aac2e7867bf0dd19672d9503f9a279a150f76abe", - "support" - ], - "content-security-policy/blink-contrib/shared-worker-connect-src-blocked.sub.html": [ - "792aaad8429e87cdc97093ba536219ece2c4fa89", - "testharness" - ], - "content-security-policy/blink-contrib/shared-worker-connect-src-blocked.sub.html.sub.headers": [ - "feb17fd60d3ecb3a232acc1d9e4f5cdc0c01b0eb", - "support" - ], - "content-security-policy/blink-contrib/source-list-parsing-paths-03.sub.html": [ - "6ba13cd8288b763b26e5c0244702412d2b3b3b42", - "testharness" - ], - "content-security-policy/blink-contrib/source-list-parsing-paths-03.sub.html.sub.headers": [ - "3cbc8712cb9228623a56ce1095c5b3d9192cddae", - "support" - ], - "content-security-policy/blink-contrib/srcdoc-doesnt-bypass-script-src.sub.html": [ - "40b47ca8cc6759e2401111f14b5b81bfbc9adf9c", - "testharness" - ], - "content-security-policy/blink-contrib/srcdoc-doesnt-bypass-script-src.sub.html.sub.headers": [ - "f273d79bdb6ddae989c536f2115750efc8e3f484", - "support" - ], - "content-security-policy/blink-contrib/star-doesnt-match-blob.sub.html": [ - "614f81d1215fd5d12337f896567268c4e2d0306d", - "testharness" - ], - "content-security-policy/blink-contrib/star-doesnt-match-blob.sub.html.sub.headers": [ - "68ea128df437177266b2e859a6d1f176b4081de4", - "support" - ], - "content-security-policy/blink-contrib/style-allowed.sub.html": [ - "0d28036b42f823784f2ce0e0f95a704e0cdbf598", + "content-security-policy/connect-src/worker-connect-src-allowed.sub.html": [ + "90077f2f139263466c0b54cd7270d166803f53de", "testharness" ], - "content-security-policy/blink-contrib/style-allowed.sub.html.sub.headers": [ - "b6d44e4afb53e1bb48ab2dcdf7a1520d8112e20e", - "support" - ], - "content-security-policy/blink-contrib/style-blocked.sub.html": [ - "73269f72ad540a8941b2a4551845fdd0ba46ee16", - "testharness" - ], - "content-security-policy/blink-contrib/style-blocked.sub.html.sub.headers": [ - "930b756fe90960a4572f591d5e5428c7b756427a", - "support" - ], - "content-security-policy/blink-contrib/worker-connect-src-allowed.sub.html": [ - "2217802bb2adea7dcd2f59b781788c59fd930d91", - "testharness" - ], - "content-security-policy/blink-contrib/worker-connect-src-allowed.sub.html.sub.headers": [ - "d3b258f56374b6963c0c94ab16075dd35042edb3", - "support" - ], - "content-security-policy/blink-contrib/worker-connect-src-blocked.sub.html": [ - "ecf5486a42d7148555fb5169c1a52165d77012ec", + "content-security-policy/connect-src/worker-connect-src-blocked.sub.html": [ + "2a2a9b9f623540830b5706fd775e77c83f3ba204", "testharness" ], - "content-security-policy/blink-contrib/worker-connect-src-blocked.sub.html.sub.headers": [ - "7be08395b88c35b0e588084e1aeaf7333058032d", - "support" - ], - "content-security-policy/blink-contrib/worker-eval-blocked.sub.html": [ - "37ca971b9336a06a2ad31022c779052f1f2b7b9f", + "content-security-policy/connect-src/worker-from-guid.sub.html": [ + "248d6ee42d35b86731241d499da2c4933abf4acd", "testharness" ], - "content-security-policy/blink-contrib/worker-eval-blocked.sub.html.sub.headers": [ - "c694c46c3ee08cc89de943334336dd3f5f0c3232", - "support" - ], - "content-security-policy/blink-contrib/worker-from-guid.sub.html": [ - "1eebc2d6793a0b27b5621b478ed715ebae2fe4b1", + "content-security-policy/default-src/default-src-inline-allowed.sub.html": [ + "ce6bfbbf82e7726ff4fcdc68c825f3b40c4d68a4", "testharness" ], - "content-security-policy/blink-contrib/worker-from-guid.sub.html.sub.headers": [ - "60296b2284ce99f6fbf57719832d3bd153303f7c", - "support" - ], - "content-security-policy/blink-contrib/worker-function-function-blocked.sub.html": [ - "7609e9635b6df0eb15c355806b35a028918eaa44", - "testharness" - ], - "content-security-policy/blink-contrib/worker-function-function-blocked.sub.html.sub.headers": [ - "17281a64ceef272ac327a933c07a1d2a3fcec0fa", - "support" - ], - "content-security-policy/blink-contrib/worker-importscripts-blocked.sub.html": [ - "ddf2a7f8695d439a9bf4d15d08fe48e7655644f2", - "testharness" - ], - "content-security-policy/blink-contrib/worker-importscripts-blocked.sub.html.sub.headers": [ - "daa1f9f28a3878acd695561ab418d5b6b22ffde0", - "support" - ], - "content-security-policy/blink-contrib/worker-script-src.sub.html": [ - "2bfd9cb4ae8c62e1e5a8691b35e9246e711f4929", - "testharness" - ], - "content-security-policy/blink-contrib/worker-script-src.sub.html.sub.headers": [ - "9f62e8f34652d4bf80ac03a527a2bc45b51cc89d", - "support" - ], - "content-security-policy/blink-contrib/worker-set-timeout-blocked.sub.html": [ - "62b2d0c3df164eaa561723e48b66aa3806d383df", - "testharness" - ], - "content-security-policy/blink-contrib/worker-set-timeout-blocked.sub.html.sub.headers": [ - "2aad5ef9a86041edf96af7630eab69b24ae69332", - "support" - ], - "content-security-policy/blink-contrib/xsl-blocked-expected.png": [ - "382f72b9bfaf76ca76bedb643f917700e33e582a", - "support" - ], - "content-security-policy/blink-contrib/xsl-unaffected-by-style-src-1-expected.png": [ - "382f72b9bfaf76ca76bedb643f917700e33e582a", - "support" - ], - "content-security-policy/child-src/child-src-about-blank-allowed-by-default.sub.html": [ - "3cfb06c55ac7dc026170b1ae886beba63cebac57", - "testharness" - ], - "content-security-policy/child-src/child-src-about-blank-allowed-by-default.sub.html.sub.headers": [ - "a042bfb6a20b4dee27d81fe8eda457536a4b09bc", - "support" - ], - "content-security-policy/child-src/child-src-about-blank-allowed-by-scheme.sub.html": [ - "34d092dcdd9d2c2287b1b15b16e6df3d70bcf666", - "testharness" - ], - "content-security-policy/child-src/child-src-about-blank-allowed-by-scheme.sub.html.sub.headers": [ - "66526f2ff5107dee1f999feb96d0ed0b1eea0b20", - "support" - ], - "content-security-policy/child-src/child-src-allowed.sub.html": [ - "8e70e19dbaffa7ca6b45b84b860eb11e343ce630", - "testharness" - ], - "content-security-policy/child-src/child-src-allowed.sub.html.sub.headers": [ - "2fd7d14ff9446ef3208893c0e49c273afcfd8abf", - "support" - ], - "content-security-policy/child-src/child-src-blocked.sub.html": [ - "19fd649af944749546aee5af41fc2b4d7f135aed", - "testharness" - ], - "content-security-policy/child-src/child-src-blocked.sub.html.sub.headers": [ - "da6c31fe646685e11c57558db29d9ba8ee1b697b", - "support" - ], - "content-security-policy/child-src/child-src-conflicting-frame-src.sub.html": [ - "8c903c4be2ccb11bdaff13fc3ae8690fe04ba755", - "testharness" - ], - "content-security-policy/child-src/child-src-conflicting-frame-src.sub.html.sub.headers": [ - "5ac25b74237593f6fc32c87f9a715e1cd99b5f9b", - "support" - ], - "content-security-policy/child-src/child-src-cross-origin-load.sub.html": [ - "51bbb0f02e67722433604c78f54a8619cb498dc0", - "testharness" - ], - "content-security-policy/child-src/child-src-cross-origin-load.sub.html.sub.headers": [ - "a7b058f47360dee56f92e6caa3cc5eab1dc3706f", - "support" - ], - "content-security-policy/child-src/child-src-redirect-blocked.sub.html": [ - "1d7108c31df11379c79181a21a37822a5137fa73", - "testharness" - ], - "content-security-policy/child-src/child-src-redirect-blocked.sub.html.sub.headers": [ - "268d2bc1c16366626596649ea24b776609849f9e", - "support" - ], - "content-security-policy/child-src/child-src-worker-allowed.sub.html": [ - "da18b70d2f859c83f1599e5f65bfeb67d1183ee4", - "testharness" - ], - "content-security-policy/child-src/child-src-worker-blocked.sub.html": [ - "16fc87d40c7466de1b59674abc4510c29c7d8cd2", - "testharness" - ], - "content-security-policy/connect-src/connect-src-beacon-blocked.sub.html": [ - "4d88ea8d1c46369639c32b8301cfface99c0bef2", - "testharness" - ], - "content-security-policy/connect-src/connect-src-eventsource-blocked.sub.html": [ - "24c0dc7a38b3b8f2e7cd6c3e352e8b3c5c401550", - "testharness" - ], - "content-security-policy/connect-src/connect-src-websocket-blocked.sub.html": [ - "09e6da88277b530a139865802daa34036fc939fd", - "testharness" - ], - "content-security-policy/connect-src/connect-src-xmlhttprequest-blocked.sub.html": [ - "2317a621398eb27ba7748481fdb55583a014d95d", + "content-security-policy/default-src/default-src-inline-blocked.sub.html": [ + "641cfd22caf72bf72979780db9ad2c30f6a6dd81", "testharness" ], "content-security-policy/embedded-enforcement/allow_csp_from-header.html": [ @@ -413284,6 +411950,38 @@ "888d3e58d3d094b767067e16494803af432ee057", "testharness" ], + "content-security-policy/form-action/form-action-src-allowed.sub.html": [ + "d0c2dcbb18201b72964f4da5f94b8c200fa02cad", + "testharness" + ], + "content-security-policy/form-action/form-action-src-blocked.sub.html": [ + "79e13ef60248d7e9e8023ea732323b28cb9a759a", + "testharness" + ], + "content-security-policy/form-action/form-action-src-default-ignored.sub.html": [ + "5f58d690b1c34df03eda8fef24a009e445ea8613", + "testharness" + ], + "content-security-policy/form-action/form-action-src-get-allowed.sub.html": [ + "efdb9fbe5f20c3f3bd80652dc00315b1451335a3", + "testharness" + ], + "content-security-policy/form-action/form-action-src-get-blocked.sub.html": [ + "2a4938e17599ff5f13e6d6145e664e20d6f58f94", + "testharness" + ], + "content-security-policy/form-action/form-action-src-javascript-blocked.sub.html": [ + "999961356ce31260c76d5e8e88986c5d8d46ba8c", + "testharness" + ], + "content-security-policy/form-action/form-action-src-javascript-blocked.sub.html.sub.headers": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], + "content-security-policy/form-action/form-action-src-redirect-blocked.sub.html": [ + "81d61061da04d7f1e9f4f64a4bd18734a736ca96", + "testharness" + ], "content-security-policy/frame-ancestors/frame-ancestors-nested-cross-in-cross-none-block.html": [ "e96b19c03463de925f03a666a173e948c0908302", "testharness" @@ -413428,6 +412126,26 @@ "51e1354d16cfa4967e91206be8bd0d8c6ca577af", "support" ], + "content-security-policy/frame-src/frame-src-about-blank-allowed-by-default.sub.html": [ + "91001ba752be5e786acbfc6c57f335ddba16605e", + "testharness" + ], + "content-security-policy/frame-src/frame-src-about-blank-allowed-by-scheme.sub.html": [ + "d976131d2dfbc04755013b2ad4a27ea039736fae", + "testharness" + ], + "content-security-policy/frame-src/frame-src-allowed.sub.html": [ + "c4d9df2e0b97b44c4f2ab074a854a9cf55e26e3c", + "testharness" + ], + "content-security-policy/frame-src/frame-src-blocked.sub.html": [ + "91eaa87b022bc167d9f7fd54a9ca2a5afe8d2d1c", + "testharness" + ], + "content-security-policy/frame-src/frame-src-cross-origin-load.sub.html": [ + "038162daac02409090b2c38ce40b889ee36b5f07", + "testharness" + ], "content-security-policy/frame-src/frame-src-redirect.html": [ "16ac0d81d039fc2514b72a68fa491159ad46f59c", "testharness" @@ -413448,90 +412166,62 @@ "c11acf3aff5ffaf1a581ff8c73f077b7c0ee0a26", "support" ], + "content-security-policy/generic/duplicate-directive.sub.html": [ + "32b30073d40e92a5f37784107666b61c5e366b06", + "testharness" + ], "content-security-policy/generic/fail-0_1.js": [ "357bbab837dcc2794a46fb07e31ea49b16b447cf", "support" ], - "content-security-policy/generic/generic-0_1-img-src.html": [ - "b9e456586e6acc8f56864ab36bea8c9ff67b3959", + "content-security-policy/generic/filesystem-urls-do-not-match-self.sub.html": [ + "3a701ef1c3fd50166c4997857c5140f05d236baa", "testharness" ], - "content-security-policy/generic/generic-0_1-img-src.html.sub.headers": [ - "ab1abd1bbb19ba7993d1d14e361171253224b7cb", - "support" + "content-security-policy/generic/filesystem-urls-match-filesystem.sub.html": [ + "920d9db57ca6129fc91ad08ad91a606c7cf0c92b", + "testharness" ], - "content-security-policy/generic/generic-0_1-script-src.html": [ - "d1d01090fb8ae7f33357d0d4d75e2606d637a881", + "content-security-policy/generic/generic-0_1-img-src.html": [ + "9c9ecb2f935d93d18ecf6175b0645b98f409d595", "testharness" ], - "content-security-policy/generic/generic-0_1-script-src.html.sub.headers": [ - "0596cdfbe4fda423101bb8bea3a7d732903b74cb", - "support" + "content-security-policy/generic/generic-0_1-script-src.html": [ + "cb765191d00459fcdd69c31b9b2a7d7f87bd09b3", + "testharness" ], "content-security-policy/generic/generic-0_10.html": [ - "31f03b4b65e85d07610dd376415eeca43f7f91a2", + "bda8cdc3f50bc52a20a396febb6d305e64b00292", "testharness" ], - "content-security-policy/generic/generic-0_10.html.sub.headers": [ - "16ab2c0e27dcca98ec2546d0e7196961bcbf30e3", - "support" - ], "content-security-policy/generic/generic-0_10_1.sub.html": [ - "631cbab994285429f906832b4a192243bdc19009", + "9c6717bff2355b320c43ea60d01ba1aa0689f818", "testharness" ], - "content-security-policy/generic/generic-0_10_1.sub.html.sub.headers": [ - "a3af477cdf51f8f6848edc913aa7601cf2c6a6b5", - "support" - ], "content-security-policy/generic/generic-0_2.html": [ - "bdad4dc8303926e800159b6548c983a8b6261a74", + "1be199db848a5ce5a80255aa4013dd763c7859cd", "testharness" ], - "content-security-policy/generic/generic-0_2.html.sub.headers": [ - "6e8122bdd2f39fade65c209582bbd7ece84bd627", - "support" - ], "content-security-policy/generic/generic-0_2_2.sub.html": [ - "3ddc5a08c817fdc0d31826e170d08eb0b2261f20", + "8f275f169e1257400cea6e7dff26b0d457f3f82f", "testharness" ], - "content-security-policy/generic/generic-0_2_2.sub.html.sub.headers": [ - "a6707834e433b30a0a31eb5300b6621cd6982583", - "support" - ], "content-security-policy/generic/generic-0_2_3.html": [ - "ad2f16b5c0ac137f2d0c847de0e27ca87e7faaf5", + "c202f424814bb3c4f662c8fbec49031ed3ed405f", "testharness" ], - "content-security-policy/generic/generic-0_2_3.html.sub.headers": [ - "1e3dde6acf0b11c9f2c0f1b56497ea84a879d978", - "support" - ], - "content-security-policy/generic/generic-0_8.html": [ - "e536ca439e419494b32fd5d8c3041b3edc4dd6fb", + "content-security-policy/generic/generic-0_8.sub.html": [ + "6e9aeddf1a5e308036ca1a659d138cc45fd7ea00", "testharness" ], - "content-security-policy/generic/generic-0_8.html.sub.headers": [ - "a589ee90bb6c25f843d155477d281d3fabd9cb73", - "support" - ], "content-security-policy/generic/generic-0_8_1.sub.html": [ - "c8fcd374917a8acd3ae198ddda1b59e150048739", + "e5913fc5feb3e2352172c96e366389e4216c55f3", "testharness" ], - "content-security-policy/generic/generic-0_8_1.sub.html.sub.headers": [ - "e9ebd794d83d50b03f63c1cc97b5cb739490bab4", - "support" - ], "content-security-policy/generic/generic-0_9.sub.html": [ - "b8ccc5ebb8b8f106bd284bb733dc8c808cc72dff", + "5b0adf26a3922c5a596333ea26a4102066e8ff8a", "testharness" ], - "content-security-policy/generic/generic-0_9.sub.html.sub.headers": [ - "0f07964b8a88d54ac34b8f935c21026b43e89280", - "support" - ], "content-security-policy/generic/negativeTests.js": [ "1d2009b245fa9483ad9058e0a587d5873e3578f3", "support" @@ -413548,10 +412238,26 @@ "949851a16fd799f6610bb3e657fa7ab5b7949a90", "support" ], + "content-security-policy/generic/policy-does-not-affect-child.sub.html": [ + "7e092f21440fffed98068f59bd2ddfd09a683515", + "testharness" + ], "content-security-policy/generic/positiveTest.js": [ "92b715fcc3269e189318734739a5e4fb620d9dff", "support" ], + "content-security-policy/generic/support/log-pass.html": [ + "03f6e0aabd03e9fb466e9e2cd4c25b5771c93d6e", + "support" + ], + "content-security-policy/generic/support/sandboxed-eval.sub.html": [ + "9e3166cf823bb833845d79c8113aa7edc579aad5", + "support" + ], + "content-security-policy/generic/support/sandboxed-eval.sub.html.sub.headers": [ + "84ab95803795a77af210cb4d713319b8a9115c81", + "support" + ], "content-security-policy/generic/unreached.js": [ "a008295dfc5bd220f3c5a006b564c8e6c944402c", "support" @@ -413576,6 +412282,14 @@ "4a94d606c13066d1efaee4927d2f6c66492d0965", "support" ], + "content-security-policy/img-src/icon-allowed.sub.html": [ + "acf5d3ccb7f6601996946465d35d8f6db017c25a", + "testharness" + ], + "content-security-policy/img-src/icon-blocked.sub.html": [ + "24dd82f6f491b6a4653d00c05e3b62d3d9061e2e", + "testharness" + ], "content-security-policy/img-src/img-src-4_1.sub.html": [ "d83e0f50e07a493a8040a13b00c8890d16f1ba1e", "testharness" @@ -413604,6 +412318,10 @@ "4114664a54645718ccbb5292f5103dc1942724aa", "testharness" ], + "content-security-policy/img-src/report-blocked-data-uri.sub.html": [ + "f02bba15ec69f160d825ae2698008fb83dda5362", + "testharness" + ], "content-security-policy/inheritance/iframe.html": [ "3121f2277196e721af7d8cd522be148c875c79bd", "testharness" @@ -413645,67 +412363,43 @@ "support" ], "content-security-policy/media-src/media-src-7_1.html": [ - "ce49162aecb9ca292ceeaa65b7a4206d430d21b4", + "dccf6c0e20dc0f109ecd40e59b27e0e37815487d", "testharness" ], - "content-security-policy/media-src/media-src-7_1.html.sub.headers": [ - "4a918e8bcec9726cd388ae1d518d6e1a4d700823", - "support" - ], "content-security-policy/media-src/media-src-7_1_2.sub.html": [ - "0ee3a4df705e1281c16bb0f71d24af881a1f0f60", + "fe5327fdd729fc7b47ad7eb963e22901df1cb692", "testharness" ], - "content-security-policy/media-src/media-src-7_1_2.sub.html.sub.headers": [ - "71308d3aaf2908bb3d40469a64ace31e8eb41c44", - "support" - ], "content-security-policy/media-src/media-src-7_2.html": [ - "b6c8bb9af6530ccd7ab1d1ade214d4b0b6678017", + "23257fa9395dae688804fcefaf4ec44bcb9995d3", "testharness" ], - "content-security-policy/media-src/media-src-7_2.html.sub.headers": [ - "2b3e01914edac2809467daddfe5044030244020c", - "support" - ], "content-security-policy/media-src/media-src-7_2_2.sub.html": [ - "e1cad846ee8e7d42a3ea130427f5b61e863a5836", + "d6dee44a6d82d50693a24e0de6eaab735372b37f", "testharness" ], - "content-security-policy/media-src/media-src-7_2_2.sub.html.sub.headers": [ - "a561247903c77984842c4e4c02459d713c0de5dd", - "support" - ], "content-security-policy/media-src/media-src-7_3.sub.html": [ - "dba52c4be3092a637eb129e626502c93322df44d", + "ff35e0bb1d1cebf81fd12d054960b489f7a088b9", "testharness" ], - "content-security-policy/media-src/media-src-7_3.sub.html.sub.headers": [ - "05bab36a991f04ab8144daaa582e396863276aba", - "support" - ], "content-security-policy/media-src/media-src-7_3_2.sub.html": [ - "7484051e7dc1e270e5251b5684cbb95cb900ccf7", + "401bd857abb420f17a3b548ef49ad0b1545e0144", "testharness" ], - "content-security-policy/media-src/media-src-7_3_2.sub.html.sub.headers": [ - "c7623ee2c025f15eede625064f062d927543803a", - "support" - ], "content-security-policy/media-src/media-src-blocked.sub.html": [ - "d7af07adf3ff35f0067f551c41c74c49d8daaa36", + "e5b408c372c8c2c152dc28ba947c6b41b8429ab9", "testharness" ], - "content-security-policy/media-src/media-src-blocked.sub.html.sub.headers": [ - "e87df4f2889add93d8c50b79a00e830d76309a75", - "support" - ], "content-security-policy/media-src/media-src-redir-bug.sub.html": [ - "581a76348d3c8cc415c2ac109f587a5a0b6ded23", + "c5d7eb88656e3fc0033588ae3c40c42e293c7528", + "testharness" + ], + "content-security-policy/meta/combine-header-and-meta-policies.sub.html": [ + "779f494e1bce17d77c0f8a989de51b6195544563", "testharness" ], - "content-security-policy/media-src/media-src-redir-bug.sub.html.sub.headers": [ - "578cb8e80efdf326dc8bbf43837cc1771c549352", + "content-security-policy/meta/combine-header-and-meta-policies.sub.html.sub.headers": [ + "2d517e1fc03a9f17950cf1e2f5038dc30c4baf3e", "support" ], "content-security-policy/meta/meta-img-src.html": [ @@ -413716,6 +412410,18 @@ "2553698b40d91f95f33bb14e7bd906d665b0381a", "testharness" ], + "content-security-policy/meta/meta-outside-head.sub.html": [ + "fba000a28972d683adaeebc87e5e6d6723877ae2", + "testharness" + ], + "content-security-policy/meta/meta-outside-head.sub.html.sub.headers": [ + "70b00e4a7744eace700e28c2e9bd7a5d5c92438f", + "support" + ], + "content-security-policy/meta/support/metaHelper.js": [ + "ff614bd9c4e37c02c8027c6b38fc615c0ade6883", + "support" + ], "content-security-policy/navigation/javascript-url-navigation-inherits-csp.html": [ "bb01b98b633fe5ffb79b1b4e0943a77b85a11057", "testharness" @@ -413776,20 +412482,144 @@ "1444276d7a28bcb29f4dc5a0c3d2277bf875cf7e", "support" ], + "content-security-policy/object-src/object-src-no-url-allowed.sub.html": [ + "a85443300d2be432fa3025e01d9cc780fe21dabf", + "testharness" + ], + "content-security-policy/object-src/object-src-no-url-blocked.sub.html": [ + "90c4f7a4f961cacaf6afa3c03b604ddd8f9779f3", + "testharness" + ], + "content-security-policy/object-src/object-src-url-allowed.sub.html": [ + "6378b3642e53956c4d8bd77b7ddc8aeac3b94a50", + "testharness" + ], + "content-security-policy/object-src/object-src-url-blocked.sub.html": [ + "c911e6eb2a4cdd98e955670d8a8d093a62a1c9a2", + "testharness" + ], + "content-security-policy/plugin-types/plugintypes-mismatched-data.sub.html": [ + "a60672a9027da15685e9cb7eb5cb5dbd25f2dbf6", + "testharness" + ], + "content-security-policy/plugin-types/plugintypes-mismatched-url.sub.html": [ + "8ba00db9212bc4add15140265fa9e476f09acc25", + "testharness" + ], + "content-security-policy/plugin-types/plugintypes-notype-data.sub.html": [ + "948d73c56633882dbaa7816e066d21a0a17bafaf", + "testharness" + ], + "content-security-policy/plugin-types/plugintypes-notype-url.sub.html": [ + "fa4af21136d56dfe574735da37dbec56909c10bb", + "testharness" + ], + "content-security-policy/plugin-types/plugintypes-nourl-allowed.sub.html": [ + "f353383d7539fbd09c40587181a328571241962a", + "testharness" + ], + "content-security-policy/plugin-types/plugintypes-nourl-blocked.sub.html": [ + "cae24a6958eae450d1b21a47f4e13c407cac33be", + "testharness" + ], + "content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html": [ + "7be3a72eb885841e8ccb674eeae3761f638adf2c", + "testharness" + ], + "content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html.sub.headers": [ + "ddf99f2d2ed8bdfa56f5efbf371b324924c1c286", + "support" + ], + "content-security-policy/reporting/reporting-api-report-only-sends-reports-on-violation.https.sub.html": [ + "19e6a43463fb72a74a0a03e2515d564f2df49234", + "testharness" + ], + "content-security-policy/reporting/reporting-api-report-only-sends-reports-on-violation.https.sub.html.sub.headers": [ + "588c5767e4d7290ea7fd27be8218dd8420982848", + "support" + ], + "content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-1.https.sub.html": [ + "08311936720a8ee3835d029f572e924dd4f45e6e", + "testharness" + ], + "content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-1.https.sub.html.sub.headers": [ + "d0dddb85abb59ded83c36f71b4776881ce626e40", + "support" + ], + "content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-2.https.sub.html": [ + "41f777a06556d6cb4d8110d4d1fe70a6e58c2709", + "testharness" + ], + "content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-2.https.sub.html.sub.headers": [ + "1d58caea3b04f568e837678dbd27136fec73730c", + "support" + ], + "content-security-policy/reporting/reporting-api-sends-reports-on-violation.https.sub.html": [ + "131b261ef9a6b79714eeacd4c9a525bdfafab21c", + "testharness" + ], + "content-security-policy/reporting/reporting-api-sends-reports-on-violation.https.sub.html.sub.headers": [ + "966fcc13016f5980750ad1a4d5acf240762c2e0d", + "support" + ], "content-security-policy/reporting/securitypolicyviolation-idl.html": [ - "ff5ed000c0c33f0e0495493e41ed4330844ec780", + "5f64e7ffb556afda675d52b7f9987f04612dccfd", + "testharness" + ], + "content-security-policy/sandbox/iframe-inside-csp.sub.html": [ + "11e165b77d866a5b62539d5722b18885838448a7", + "testharness" + ], + "content-security-policy/sandbox/sandbox-allow-scripts-subframe.sub.html": [ + "f32084b66483ddcc8a205f889e06b1d43d2b0d2a", + "testharness" + ], + "content-security-policy/sandbox/sandbox-allow-scripts.sub.html": [ + "0acaeda7770b1dd0e0149233cfedf9ecd7db1c5a", "testharness" ], + "content-security-policy/sandbox/sandbox-empty-subframe.sub.html": [ + "a4a3f92312327e36710eb52383509860cdfa0588", + "testharness" + ], + "content-security-policy/sandbox/sandbox-empty.sub.html": [ + "406bf1c6082a4feb86d1b45b16ebc07c23dadfcb", + "testharness" + ], + "content-security-policy/sandbox/support/sandboxed-data-iframe.sub.html": [ + "ce1a3a812631604b26452fac945a87bd0bf9152c", + "support" + ], + "content-security-policy/sandbox/support/sandboxed-data-iframe.sub.html.sub.headers": [ + "f161272e257353dbe121030cbec0de00218757ff", + "support" + ], + "content-security-policy/sandbox/support/sandboxed-eval.sub.html": [ + "9e3166cf823bb833845d79c8113aa7edc579aad5", + "support" + ], + "content-security-policy/sandbox/support/sandboxed-eval.sub.html.sub.headers": [ + "84ab95803795a77af210cb4d713319b8a9115c81", + "support" + ], + "content-security-policy/sandbox/support/sandboxed-post-message-to-parent.sub.html": [ + "e255368c5e546322c63854d59abb48814d36d8b8", + "support" + ], + "content-security-policy/sandbox/support/sandboxed-post-message-to-parent.sub.html.sub.headers": [ + "f161272e257353dbe121030cbec0de00218757ff", + "support" + ], "content-security-policy/script-src/10_1_support_1.js": [ - "bd10b9f495c679323ceeba54bf04a48c8a2fd4b4", + "6916d52aa90921bb59cd9a677f58176255f4f2fd", "support" ], "content-security-policy/script-src/10_1_support_2.js": [ - "d7cde9fb4644245699893333e230d1c5fd79ca71", + "ee8d6589daed63364ed139a6776a787efc4ba44d", "support" ], "content-security-policy/script-src/addInlineTestsWithDOMManipulation.js": [ - "ec7ba8726955690cee6a7f75b002a3d0d39db7d0", + "2ec0aedb07299313f8f337d6a1cb620f1da57a4a", "support" ], "content-security-policy/script-src/buildInlineWorker.js": [ @@ -413808,16 +412638,24 @@ "9747ab396294e301c0f0720a3c0731d92272ee54", "support" ], + "content-security-policy/script-src/injected-inline-script-allowed.sub.html": [ + "97467a87b6933ec7dda0b788104e63e5cbed8b7e", + "testharness" + ], + "content-security-policy/script-src/injected-inline-script-blocked.sub.html": [ + "a5c509b140558716410ca00337542c158c5742fe", + "testharness" + ], "content-security-policy/script-src/inlineSuccessTest.js": [ - "a591a02337841f6e8e822174a390a723ee6a3656", + "730190d637dee362ce20ce82aaed663c873dcbce", "support" ], "content-security-policy/script-src/inlineTests.js": [ - "9256478a189aeabb765763a48fda9a6fd2ab077e", + "b07e007c036a4856f9bc11064639c65a97cf30bb", "support" ], "content-security-policy/script-src/javascript-window-open-blocked.html": [ - "7d047c4966eee6c35a6bf24a80b4fbb672cb89b4", + "8907681d25a20a954c4db413d0fd78efd9dc6199", "testharness" ], "content-security-policy/script-src/javascript-window-open-blocked.html.sub.headers": [ @@ -413825,107 +412663,75 @@ "support" ], "content-security-policy/script-src/script-src-1_1.html": [ - "c547fd94e350bfd49541734515a4068de44f525d", + "b4285b63b3f9a8fab266ac93b3b7c1a70a7bdfcc", "testharness" ], - "content-security-policy/script-src/script-src-1_1.html.sub.headers": [ - "58cb9b7acbda0e8017a83c1598f0ea1ea5f8cf4f", - "support" - ], "content-security-policy/script-src/script-src-1_10.html": [ - "5a55427c869b1c5a0bee3ecf4619846f072d1e53", + "8d86fa302fa6f1262ab5c880bf2ce756f606d661", "testharness" ], - "content-security-policy/script-src/script-src-1_10.html.sub.headers": [ - "c6da3920eb563d64585901f1e94aaa11a76e5270", - "support" - ], "content-security-policy/script-src/script-src-1_10_1.html": [ - "a97e3cbdce7084b97eee28be5e3d3d42b5803966", + "46f535a4b373bdcc2b69ad78d333fb76d5f485bc", "testharness" ], - "content-security-policy/script-src/script-src-1_10_1.html.sub.headers": [ - "ad7550efbc8ebb318bb2e32d96ea575c78596ffd", - "support" - ], "content-security-policy/script-src/script-src-1_2.html": [ - "b3356097531989881006c444d0412cd8d488ca6e", + "e3b1b1ffe070be0258e18563c14b4af4e0b4f5e3", "testharness" ], - "content-security-policy/script-src/script-src-1_2.html.sub.headers": [ - "b90d160699a5c3144933a0f4a5f79236aefb9ae0", - "support" - ], "content-security-policy/script-src/script-src-1_2_1.html": [ - "907c529ec0b1186e72dd6ac095e46c001413639e", + "548eefcd46832140999a2754d7f62ad508cc7e28", "testharness" ], - "content-security-policy/script-src/script-src-1_2_1.html.sub.headers": [ - "5e47b083224fa789bf14f90e4be4d72807d448e4", - "support" - ], "content-security-policy/script-src/script-src-1_3.html": [ - "027ae9ff64cf5d1599541d0a2a5804096f71aad0", + "abf79935376e924c9fc1c8fea6f3b6d1c0b52227", "testharness" ], - "content-security-policy/script-src/script-src-1_3.html.sub.headers": [ - "6e86dbda4c9fa33a27df5f25bca3e56a367eb5c6", - "support" - ], "content-security-policy/script-src/script-src-1_4.html": [ - "62ba9216e12868cf0a6b4f791bf5305daa21dac6", + "d7369a16421ca7aadca158b0a6aff8c4cde35487", "testharness" ], - "content-security-policy/script-src/script-src-1_4.html.sub.headers": [ - "8d484ffc9bb161edd31b0fb349a67eb0c5a30e7c", - "support" - ], "content-security-policy/script-src/script-src-1_4_1.html": [ - "ff43ce545cc42d33809b5f48efe6f52bf57ccd41", + "4ac0b814c672862a1628e5e6c7fd4a6541a1421f", "testharness" ], - "content-security-policy/script-src/script-src-1_4_1.html.sub.headers": [ - "90288741141736b1d59cc27070565e08393d821f", - "support" - ], "content-security-policy/script-src/script-src-1_4_2.html": [ - "5a1d5c9393455aeb34a73a1c59c6d75783a3d936", + "6047332aa8240cc0e53e88d72834efcc8cfea2fd", "testharness" ], - "content-security-policy/script-src/script-src-1_4_2.html.sub.headers": [ - "4c2700452b8e0cb5451ee00aaa8ff92f12e9623e", - "support" - ], "content-security-policy/script-src/script-src-multiple-policies-multiple-hashing-algorithms.html": [ - "0f0f571fbc0db3b96112cb62f66d03c45674c127", + "66c96a85d3accfb20317501504ca3187ba7683f8", "testharness" ], "content-security-policy/script-src/script-src-multiple-policies-multiple-hashing-algorithms.html.sub.headers": [ - "dec2d5659d318a58d7e957837ce3a217db2ea649", + "384cbb40a778c35dcfc5dc68e5ba26932e00445e", "support" ], "content-security-policy/script-src/script-src-multiple-policies-one-using-hashing-algorithms.html": [ - "c0407821e7f7de5d80d601c7e693b0e283902e61", + "746a6b0340e1fa2e04b13c58c86644fcb8452516", "testharness" ], "content-security-policy/script-src/script-src-multiple-policies-one-using-hashing-algorithms.html.sub.headers": [ - "39b7686073001e610bee5ba2a2c1083080b1aa68", + "4ea96701507b699f643a8ed77b7f20b443705e4c", "support" ], + "content-security-policy/script-src/script-src-overrides-default-src.sub.html": [ + "0a9b52068142f29c21aaafdd81cff93997cef83e", + "testharness" + ], "content-security-policy/script-src/script-src-report-only-policy-works-with-external-hash-policy.html": [ - "f43c7510cf175e41d18b87f084136efeb22a0d86", + "9666194acc39933368bc101c53e3870a7d326f82", "testharness" ], "content-security-policy/script-src/script-src-report-only-policy-works-with-external-hash-policy.html.sub.headers": [ - "6d5a35850052379753d5e39fe30aca1ddc9635f7", + "71ef442f2942a4d35c1d8ee95812c866d79fbda0", "support" ], "content-security-policy/script-src/script-src-report-only-policy-works-with-hash-policy.html": [ - "a7b51858b4c9a967bf740e76a5e1de726f5dfcdd", + "d3a1f5be326ff4d394c4f436073a6c7a930292fb", "testharness" ], "content-security-policy/script-src/script-src-report-only-policy-works-with-hash-policy.html.sub.headers": [ - "57c9026a7add5b8de2b153b14039787d44cbfa83", + "1001cdd06a04940bb842604ec0d05974df28d8ce", "support" ], "content-security-policy/script-src/script-src-sri_hash.sub.html": [ @@ -414072,10 +412878,118 @@ "a59f7f33614eb541a216b317f0916271f359ba1b", "testharness" ], + "content-security-policy/script-src/script-src-wildcards-disallowed.html": [ + "ac7823a256033e87a13cd4adbba5b38be2186ed6", + "testharness" + ], + "content-security-policy/script-src/scripthash-allowed.sub.html": [ + "4aa8f4058f410362e90a73d375f840f88cd817b4", + "testharness" + ], + "content-security-policy/script-src/scripthash-basic-blocked.sub.html": [ + "8ba09b0a1520cd37f5760eb2d05f0215806c26b7", + "testharness" + ], + "content-security-policy/script-src/scripthash-default-src.sub.html": [ + "600e953f5a40f0b60bdf688373a90deda26ea8f1", + "testharness" + ], + "content-security-policy/script-src/scripthash-ignore-unsafeinline.sub.html": [ + "889f4aa2b207840edae87e54cb3279d10ee878af", + "testharness" + ], + "content-security-policy/script-src/scripthash-unicode-normalization.sub.html": [ + "b6057a379a8d58c7bf3addfc129193ea133ff357", + "testharness" + ], + "content-security-policy/script-src/scriptnonce-allowed.sub.html": [ + "96da19d4317ef05eee97b3908bfe9328f83b0d18", + "testharness" + ], + "content-security-policy/script-src/scriptnonce-and-scripthash.sub.html": [ + "109eaf98df9462e92bbc55e0424ca797959f10d9", + "testharness" + ], + "content-security-policy/script-src/scriptnonce-basic-blocked.sub.html": [ + "ad272e92d65c2ed23d157a7d2bab1754f40d1a38", + "testharness" + ], + "content-security-policy/script-src/scriptnonce-ignore-unsafeinline.sub.html": [ + "7b478334968d2ac392955f56809c09299a3cb68b", + "testharness" + ], + "content-security-policy/script-src/scriptnonce-redirect.sub.html": [ + "b9a978d217ea0f61ca6c3a117aefbbf3a606450c", + "testharness" + ], "content-security-policy/script-src/simpleSourcedScript.js": [ "549c6ea1f1bae2b78f933b5da0a5f2f72bae2564", "support" ], + "content-security-policy/script-src/srcdoc-doesnt-bypass-script-src.sub.html": [ + "2449c9a6e32f0b015c79f46276637c6acee346c7", + "testharness" + ], + "content-security-policy/script-src/support/inject-script.js": [ + "0b03b0c731df1717f2dfe72bc1d1e1cabad06776", + "support" + ], + "content-security-policy/script-src/support/post-message.js": [ + "c957a15a1c7a0c5dffc9e7a13d54da243ca9a93a", + "support" + ], + "content-security-policy/script-src/support/worker-eval.js": [ + "0d60a32731386d26cdbf776812cc5c6f06cf0859", + "support" + ], + "content-security-policy/script-src/support/worker-eval.js.sub.headers": [ + "6f31a9b9280caefeaafa70ed7c083d66a498fc6b", + "support" + ], + "content-security-policy/script-src/support/worker-function-function.js": [ + "4f588f68da51c11b8d1cdc7895a1b3abf4a392a3", + "support" + ], + "content-security-policy/script-src/support/worker-function-function.js.sub.headers": [ + "6f31a9b9280caefeaafa70ed7c083d66a498fc6b", + "support" + ], + "content-security-policy/script-src/support/worker-importscripts.js": [ + "c59a747c05ce77c64bc6672b4c82c2964b967500", + "support" + ], + "content-security-policy/script-src/support/worker-importscripts.js.sub.headers": [ + "b5f8abd58a13f7ac8f99871fa004d6f1d6ffb014", + "support" + ], + "content-security-policy/script-src/support/worker-set-timeout.js": [ + "3f24231bf14cedcc1eb93433e1be60ec74dcb1db", + "support" + ], + "content-security-policy/script-src/support/worker-set-timeout.js.sub.headers": [ + "b5f8abd58a13f7ac8f99871fa004d6f1d6ffb014", + "support" + ], + "content-security-policy/script-src/worker-eval-blocked.sub.html": [ + "18e53909393384074c14d309897c373717f8d948", + "testharness" + ], + "content-security-policy/script-src/worker-function-function-blocked.sub.html": [ + "90954896222f9e2637140580b11cc984fc5157cf", + "testharness" + ], + "content-security-policy/script-src/worker-importscripts-blocked.sub.html": [ + "21ce1f88689b93556d8526b8f52d5a371ffff7fd", + "testharness" + ], + "content-security-policy/script-src/worker-script-src.sub.html": [ + "fe5bbb4adbe86a4b9bde7a645ea1379a4727c9c2", + "testharness" + ], + "content-security-policy/script-src/worker-set-timeout-blocked.sub.html": [ + "30daa6c42351724a09ba60028ce2558d688c3555", + "testharness" + ], "content-security-policy/securitypolicyviolation/blockeduri-eval.html": [ "01d4ce834d175d13eb0d9c80bbe4a7be614d687f", "testharness" @@ -414164,6 +413078,42 @@ "6e15d48ddd21d1bbb9603081d5d7fef98ebfa106", "support" ], + "content-security-policy/style-src/injected-inline-style-allowed.sub.html": [ + "21c754d2fa97293bd6c0348be86c0cd2b8bf8654", + "testharness" + ], + "content-security-policy/style-src/injected-inline-style-blocked.sub.html": [ + "a67ebb156e4ed0be8fd0ba7cf736a024bd85409b", + "testharness" + ], + "content-security-policy/style-src/inline-style-allowed-while-cloning-objects.sub.html": [ + "23fd52d6753a3617938bc493f2267528b5cb576d", + "testharness" + ], + "content-security-policy/style-src/inline-style-allowed.sub.html": [ + "9611bca6560ec98a3c46e363f0f4a42a3c752b61", + "testharness" + ], + "content-security-policy/style-src/inline-style-attribute-allowed.sub.html": [ + "25223c678829295e6e3dbe981cd545af9101f9ef", + "testharness" + ], + "content-security-policy/style-src/inline-style-attribute-blocked.sub.html": [ + "df54ea6b657c934698234a13bf9036c5399fa89f", + "testharness" + ], + "content-security-policy/style-src/inline-style-attribute-on-html.sub.html": [ + "41573b06b842ccccc2661e4f673cfeec5ee17c38", + "testharness" + ], + "content-security-policy/style-src/inline-style-blocked.sub.html": [ + "c3b2ae30212bf87e906c07989145f169f5cea41d", + "testharness" + ], + "content-security-policy/style-src/resources/allowed.css": [ + "1d45524530e090f083dec62089cf95c19bb4d020", + "support" + ], "content-security-policy/style-src/resources/style-src-import.sub.css": [ "37de4f39b0399d9a5a230b5446883f9e4b49a061", "support" @@ -414176,6 +413126,14 @@ "e639d89f22a1f3774cd87fcea9f5dd441e9520f9", "support" ], + "content-security-policy/style-src/style-allowed.sub.html": [ + "2e149f54caccc53ac82a836f6838030ce8efe502", + "testharness" + ], + "content-security-policy/style-src/style-blocked.sub.html": [ + "ed44a8d3392eff2e963e33dda1d02d1f0d307c81", + "testharness" + ], "content-security-policy/style-src/style-src-error-event-fires.html": [ "64e5e823b50f71023f0520da16147fe0e2ba1b84", "testharness" @@ -414268,6 +413226,30 @@ "a46cfc14f19813fc3b71928dd4b9d459f318b035", "testharness" ], + "content-security-policy/style-src/stylehash-allowed.sub.html": [ + "c4559f5096406228431e98d12eeb40664e32d588", + "testharness" + ], + "content-security-policy/style-src/stylehash-basic-blocked.sub.html": [ + "0570c3f5938fafa702517f93a5f1ac08ec2efb17", + "testharness" + ], + "content-security-policy/style-src/stylehash-default-src.sub.html": [ + "3ce6f0e52f10c66ce97928f865d1e5ee91a97bd3", + "testharness" + ], + "content-security-policy/style-src/stylenonce-allowed.sub.html": [ + "2a9c8fd15faac9ddd4c16a5fee79f15266558b6d", + "testharness" + ], + "content-security-policy/style-src/stylenonce-blocked.sub.html": [ + "e9b7204c818b62c7e1cfd06742f6c77c62b11764", + "testharness" + ], + "content-security-policy/style-src/support/inject-style.js": [ + "a48eb434aa6fe0d0a4f664c55e68be03ccd902ed", + "support" + ], "content-security-policy/support/alert-pass.js": [ "9d9311651dff245f3c45fca59bacac7804a48746", "support" @@ -414277,7 +413259,11 @@ "support" ], "content-security-policy/support/checkReport.sub.js": [ - "90f36e63c4a18b6d755fda05b4e126e0cabf0e94", + "50b8b274a0a846ad527c2a369ba870def28e45e6", + "support" + ], + "content-security-policy/support/document-write-alert-fail.js": [ + "55f9e74adccef83969d5da859a05bf670f711671", "support" ], "content-security-policy/support/echo-policy.py": [ @@ -414316,6 +413302,10 @@ "b10c13ac32450d15761f99a5096e1a3deda0e9bc", "support" ], + "content-security-policy/support/manifest.json": [ + "f28fa5977ae8aa5da1b517ee7d63841378efa328", + "support" + ], "content-security-policy/support/media/flash.swf": [ "53203da2c93399cdc4c3355a60d098c203cc7c85", "support" @@ -414373,7 +413363,7 @@ "testharness" ], "content-security-policy/svg/scripted.svg": [ - "e5a26ca493e75cb4245e9f0de986cde3ab697d62", + "56dab4b05aa8b2872ff03d56e371f3f814457fe1", "support" ], "content-security-policy/svg/scripted.svg.sub.headers": [ @@ -414381,17 +413371,13 @@ "support" ], "content-security-policy/svg/svg-from-guid.html": [ - "e5f4233841d1b1688d48e66a0efd65b940d45b02", + "850ac0d015bc3cc0fadc7047d87938e937e3c89b", "testharness" ], "content-security-policy/svg/svg-inline.sub.html": [ - "699d329c0929525b899e5ecc848ea0eff4ad02b8", + "9ef364019d2e2822a44cde9d07bf71ae36ff92eb", "testharness" ], - "content-security-policy/svg/svg-inline.sub.html.sub.headers": [ - "8804cfb21823324551f0f98977ecb80588099150", - "support" - ], "content-security-policy/svg/svg-policy-resource-doc-includes.html": [ "474d542398a46e302add6494151628a1e6e144e1", "testharness" @@ -414400,6 +413386,46 @@ "3cb51cc3be98ab648a58c858727e749bfdf53424", "testharness" ], + "content-security-policy/unsafe-eval/eval-allowed.sub.html": [ + "d93f0e1c1e4f0950e8b12c697c9da72ac2b2aec6", + "testharness" + ], + "content-security-policy/unsafe-eval/eval-blocked-and-sends-report.sub.html": [ + "b3e5cff5c8e5b0a661c07091b45be3503409735f", + "testharness" + ], + "content-security-policy/unsafe-eval/eval-blocked-in-about-blank-iframe.sub.html": [ + "93b24c21d60b4d4e5dda7f1c176979b342150d68", + "testharness" + ], + "content-security-policy/unsafe-eval/eval-blocked.sub.html": [ + "b3d1e79feadcd00ae5654a33c385ee6f64e327cd", + "testharness" + ], + "content-security-policy/unsafe-eval/eval-scripts-setInterval-allowed.sub.html": [ + "e79159c061aea45d3562f38180f735f2a7af5718", + "testharness" + ], + "content-security-policy/unsafe-eval/eval-scripts-setInterval-blocked.sub.html": [ + "4622816714f1debe7297a9bab294e607096639d7", + "testharness" + ], + "content-security-policy/unsafe-eval/eval-scripts-setTimeout-allowed.sub.html": [ + "b055b17777b69f9e332eb28c6e62bd585e270f53", + "testharness" + ], + "content-security-policy/unsafe-eval/eval-scripts-setTimeout-blocked.sub.html": [ + "2e9c470be9571e750b2b4324d52da7b7aadc3dd2", + "testharness" + ], + "content-security-policy/unsafe-eval/function-constructor-allowed.sub.html": [ + "09e8b9e1a381f9c5aa5bbb77545be6d174978735", + "testharness" + ], + "content-security-policy/unsafe-eval/function-constructor-blocked.sub.html": [ + "2676e375c60899dbd2281b49e01e82e1b3d9451e", + "testharness" + ], "content-security-policy/unsafe-hashed-attributes/script_event_handlers_allowed.html": [ "3dac897440d3bcca283c606c51d23a9d37c66a62", "testharness" @@ -482473,11 +481499,11 @@ "testharness" ], "css/css-flexbox-1/percentage-heights-000.html": [ - "fbb795af85abb6bb28a2c3ac94012aad7e99b45b", + "9f5db2023fe4ac61108546602a5cdd2fe6ad8203", "testharness" ], "css/css-flexbox-1/percentage-heights-001.html": [ - "5c3c576ee34a20e61e33a9851d332c743a9f078a", + "0bc00907610df6c5e03b884bf1a5633d80eff38b", "testharness" ], "css/css-flexbox-1/percentage-heights-002-ref.html": [ @@ -482497,19 +481523,19 @@ "reftest" ], "css/css-flexbox-1/position-absolute-001.html": [ - "bcf0ce321b9aca0fba213f677e9db92d595175fc", + "1c12d945aaece1a3c7c9e6b4b9986d5351956c4c", "testharness" ], "css/css-flexbox-1/position-absolute-002.html": [ - "459087f00f8417a3345f0bfc25b6d66d44364a5f", + "f8b0ae2faf24d6810e3936307cd34a0b246fb3a8", "testharness" ], "css/css-flexbox-1/position-absolute-003.html": [ - "25d21bf70a43936b159001b9a405e9df65e0f222", + "d1982c9167f9e73848b96722392b6c7e8ca7372e", "testharness" ], "css/css-flexbox-1/position-absolute-004.html": [ - "222c04822ec756d6f4f504ed507aa678c7960b75", + "42bf61d230422676bcf0e2bae1f7dffee1ba340f", "testharness" ], "css/css-flexbox-1/position-absolute-005-ref.html": [ @@ -482728,10 +481754,6 @@ "461fd17b274662b88500cdf42bab7f3b79e6019d", "support" ], - "css/css-flexbox-1/support/check-layout-th.js": [ - "a9d8444db24ab38518f07a965a8a537cc6add437", - "support" - ], "css/css-flexbox-1/support/flexbox.css": [ "1ed29ddf429bf5efe54b65ce8b66d59c8c23a5f1", "support" @@ -483160,6 +482182,122 @@ "7b4cb600b9df97cd022504c4541b2143af22d29f", "reftest" ], + "css/css-fonts-3/font-stretch-01.html": [ + "81f846d3cb087fb1a84f534a04320e706b49a212", + "reftest" + ], + "css/css-fonts-3/font-stretch-02.html": [ + "86cd31128a1051e607015e9dadc1b78fea553b47", + "reftest" + ], + "css/css-fonts-3/font-stretch-03.html": [ + "89b7d76992c5ade46281384971c7b933f9c13669", + "reftest" + ], + "css/css-fonts-3/font-stretch-04.html": [ + "d2f26924c10a7ef4754babe06ccd050bda9332b8", + "reftest" + ], + "css/css-fonts-3/font-stretch-05.html": [ + "bfd111699b5553f84522bbfb84ca49c177967ed4", + "reftest" + ], + "css/css-fonts-3/font-stretch-06.html": [ + "fe90f418ab95706b0ec0110d545a8707773935fb", + "reftest" + ], + "css/css-fonts-3/font-stretch-07.html": [ + "6fc64aada50f8fc8b1525cdf8917050c4d062b43", + "reftest" + ], + "css/css-fonts-3/font-stretch-08.html": [ + "c113be451ff508c83cbc3ed589b721c23a5c3e92", + "reftest" + ], + "css/css-fonts-3/font-stretch-09.html": [ + "67e3ce27e575d7bebbe090e20f8cac651da1e803", + "reftest" + ], + "css/css-fonts-3/font-stretch-10.html": [ + "1d7c21ba01880a024511102488f199283e777dbd", + "reftest" + ], + "css/css-fonts-3/font-stretch-11.html": [ + "fdfa62d43cec5c4e98af04f7791ffdbbc9efde87", + "reftest" + ], + "css/css-fonts-3/font-stretch-12.html": [ + "fff585669f5c2fa963613c1679c5020729daa66e", + "reftest" + ], + "css/css-fonts-3/font-stretch-13.html": [ + "50322d78f923052e51034ec80c5b1dd44ca618be", + "reftest" + ], + "css/css-fonts-3/font-stretch-14.html": [ + "c4e2815ef769546c745a6fbebeb4db05e102a2ef", + "reftest" + ], + "css/css-fonts-3/font-stretch-15.html": [ + "004e1a669c3cb3d3301c02ef84bc59d6af0f7238", + "reftest" + ], + "css/css-fonts-3/font-stretch-16.html": [ + "cb06cd30d8d111217e940d8de85ccf6fcf2a0a77", + "reftest" + ], + "css/css-fonts-3/font-stretch-17.html": [ + "86f077b63e2a7ba6f60965c87c30b1ac94f3cee0", + "reftest" + ], + "css/css-fonts-3/font-stretch-18.html": [ + "035d0f522d507efcdaf259b6fb99baeac9251766", + "reftest" + ], + "css/css-fonts-3/font-stretch-pass-ref.html": [ + "33a2a751324acb824907eac5853a91f96a3bd86f", + "support" + ], + "css/css-fonts-3/font-synthesis-01-ref.html": [ + "4b02221e4811f2041c03698237c71e84173033b4", + "support" + ], + "css/css-fonts-3/font-synthesis-01.html": [ + "df13a99fc3916de93cbd8b92f8520393ebffccd0", + "reftest" + ], + "css/css-fonts-3/font-synthesis-02-ref.html": [ + "37caa18f5f1f4a76da775b6618fc9a4edbb7e6da", + "support" + ], + "css/css-fonts-3/font-synthesis-02.html": [ + "295747b4f9cf02154f3daae95ab8bbab75ccb386", + "reftest" + ], + "css/css-fonts-3/font-synthesis-03-ref.html": [ + "521b4dbd1ba6cecce7349080c1c757bb19a984f8", + "support" + ], + "css/css-fonts-3/font-synthesis-03.html": [ + "46f41bdaf44ced16707fb01f598fe83acab3b8c6", + "reftest" + ], + "css/css-fonts-3/font-synthesis-04-ref.html": [ + "37ae6d66d5ff56b42963bb749c0ba3c51800b1e9", + "support" + ], + "css/css-fonts-3/font-synthesis-04.html": [ + "43e1f2bfa2e74cd9ba489f3ca4f156907fb7cb6c", + "reftest" + ], + "css/css-fonts-3/font-synthesis-05-ref.html": [ + "7c54b978bb6beb1c5e6c145c0adce7eb62c5efae", + "support" + ], + "css/css-fonts-3/font-synthesis-05.html": [ + "b46ea0f9864807dd0f36f90ff7668d5f733dd326", + "reftest" + ], "css/css-fonts-3/font-variant-01-ref.html": [ "996de9843a58617c022174e77c6420816087dbe9", "support" @@ -483681,16 +482819,16 @@ "support" ], "css/css-fonts-3/font-variant-position-02.html": [ - "1f0130c363d56c078dc7bb72906a89245d352226", - "reftest" + "831af35c0ac730263a3061c3052e865bf719997c", + "visual" ], "css/css-fonts-3/font-variant-position-03-ref.html": [ "21f6fd83c6b63b57c75a43f08023bb6b3c6f8a87", "support" ], "css/css-fonts-3/font-variant-position-03.html": [ - "777fca83be2a37bca768fde84d3226448662c181", - "reftest" + "7ad4b9d97ada6410e4e2c92b217d2aaa1317946c", + "visual" ], "css/css-fonts-3/font-variant-position-ref.html": [ "986683fda8ba407d03e9d5e385ad4083b8ee6862", @@ -483824,6 +482962,22 @@ "f4f2fdd3f411fca8cd03b1f7f737694c73c0220b", "support" ], + "css/css-fonts-3/support/fonts/Exo-DemiBold.otf": [ + "a239ac3082ff3c19edef8461a5ab9b778361f7b4", + "support" + ], + "css/css-fonts-3/support/fonts/Exo2-SemiBold.otf": [ + "b1d02e8b1ee47bb1d200e81742876fce74b92436", + "support" + ], + "css/css-fonts-3/support/fonts/Exo2-SemiBoldCondensed.otf": [ + "a4b11be0affd64e9f927095e3bc3653544d827d2", + "support" + ], + "css/css-fonts-3/support/fonts/Exo2-SemiBoldExpanded.otf": [ + "60d232dc51a04464558ebe3680304c250d1e2ecd", + "support" + ], "css/css-fonts-3/support/fonts/FontWithFancyFeatures.otf": [ "ce1bc123ba75345ab3816af7c18b481badbfd5eb", "support" @@ -483852,6 +483006,10 @@ "3d219e370db37a3392e07eb0c804d10ca7caf9c9", "support" ], + "css/css-fonts-3/support/fonts/fail.woff": [ + "69e4080710f24b062203f56aa6ae2d991d4fa19a", + "support" + ], "css/css-fonts-3/support/fonts/font-feature-settings-rendering-2-expected.html": [ "883083cdde66caca05384d3d6930070454e94fad", "support" @@ -489652,6 +488810,10 @@ "085a994b4b934056d0811cc989727e6390c37d66", "support" ], + "css/css-fonts-3/support/fonts/pass.woff": [ + "cd8655ca01c5579a273f2063174a01126b10b78c", + "support" + ], "css/css-fonts-3/support/green15x15.png": [ "de1830c21195763f7327f270b14b6d50dfdfb21d", "support" @@ -489793,11 +488955,11 @@ "testharness" ], "css/css-fonts-3/test_font_family_parsing.html": [ - "fa926a9e86823cddea6d9f1418c752cf04e341ad", + "0aaa1c1bb9497df1cddbeda60f7d522568dc2f01", "testharness" ], "css/css-fonts-3/test_font_feature_values_parsing.html": [ - "26fc2e6d6a0b09a93a8fa08aed87ea9cdd13c404", + "a6397508316c35300513830a7a53d882debe3829", "testharness" ], "css/css-gcpm-3/OWNERS": [ @@ -489901,15 +489063,15 @@ "reftest" ], "css/css-grid-1/abspos/absolute-positioning-definite-sizes-001.html": [ - "884098260e1c51873c90d8328e31973f69adb224", + "8d917ad490835e4248956865571e3c4762973d0b", "testharness" ], "css/css-grid-1/abspos/absolute-positioning-grid-container-containing-block-001.html": [ - "d7a6d2f0196a3e1e7b9bd618a1f885ae58dd05fb", + "ae306e9e6e980d4a575d6d10cee6401379283014", "testharness" ], "css/css-grid-1/abspos/absolute-positioning-grid-container-parent-001.html": [ - "a7d866aed9b5021e681dadb85eca50462db1d748", + "b64d2b6f87d105d4631b7c539ed451e598d9a0f1", "testharness" ], "css/css-grid-1/abspos/grid-item-absolute-positioning-dynamic-001.html": [ @@ -489953,43 +489115,43 @@ "reftest" ], "css/css-grid-1/abspos/grid-positioned-items-content-alignment-001.html": [ - "dc376db419836c1fb2cc0d0477b20454159813e9", + "53c8139254cd0f62abf20b434132cd6ffa04be0f", "testharness" ], "css/css-grid-1/abspos/grid-positioned-items-content-alignment-rtl-001.html": [ - "4530ed56a6b6b37d876cb9e56d73718440560f7f", + "566dcee47358c1e490786d0a8b995e4dbc11f076", "testharness" ], "css/css-grid-1/abspos/grid-positioned-items-gaps-001.html": [ - "09614159f2996973a825a574ce884679aff69283", + "490d474f560501ede900e5cf448b0dc9dc9fa116", "testharness" ], "css/css-grid-1/abspos/grid-positioned-items-gaps-rtl-001.html": [ - "b92090cc95a982097b54ba0695c4b0b43fb26b5e", + "8666f9bcaca645602fc2e790db2ab4cc7a28af5c", "testharness" ], "css/css-grid-1/abspos/grid-positioned-items-implicit-grid-001.html": [ - "41cc2addf301921ffef0c1b98fb34ab41af059c6", + "eb058474779ddb8e4a31546fc2d89126a562e465", "testharness" ], "css/css-grid-1/abspos/grid-positioned-items-implicit-grid-line-001.html": [ - "7e1f3ea3a2db26462048f2614725c8467095e934", + "d0e71cc3e8fce7329982eb37c1c1747fc62fce9e", "testharness" ], "css/css-grid-1/abspos/grid-positioned-items-padding-001.html": [ - "024ababa5af46ec7fe3195ecbb2af5a7d1aab075", + "b4c31742faf89abbfd22fec978c77ba0836d7f03", "testharness" ], "css/css-grid-1/abspos/grid-positioned-items-unknown-named-grid-line-001.html": [ - "a0a24530691fd19fc07986657375033c1d7eb524", + "e33299485785ec3ae16b7fd9b727c651ce5c2a8e", "testharness" ], "css/css-grid-1/abspos/grid-positioned-items-within-grid-implicit-track-001.html": [ - "36d607db41c6cd74eb66859e550cfd339d3cd6f8", + "6ca9c08237d698a8f29ab04dc0cae117b04d7c02", "testharness" ], "css/css-grid-1/abspos/grid-sizing-positioned-items-001.html": [ - "44c77a955845c78f581e039f78364a8caed6a6c1", + "9389a43ede1cdadda820a5db21cb08cf25b4f9b9", "testharness" ], "css/css-grid-1/abspos/orthogonal-positioned-grid-items-001-ref.html": [ @@ -490233,11 +489395,11 @@ "reftest" ], "css/css-grid-1/abspos/positioned-grid-items-should-not-create-implicit-tracks-001.html": [ - "f042dd8f7e7c4d228ef9f1a7eae641899f516940", + "20fce922797d8d29a3301d90d0113f659827b1a8", "testharness" ], "css/css-grid-1/abspos/positioned-grid-items-should-not-take-up-space-001.html": [ - "2d6dec61a1a2902a58f50b3b8e1330c97ce547b9", + "171c6bbf8b1126781f71b60774e9d01ba7588cc7", "testharness" ], "css/css-grid-1/abspos/positioned-grid-items-sizing-001-ref.html": [ @@ -490249,147 +489411,147 @@ "reftest" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-001.html": [ - "19ae01ab31a15efc601d2857d3ca1dd879cb4e66", + "99d3941d430705202a7094276de59dc5edf69321", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-002.html": [ - "abb8f221910dc58b87ff1d3f5b9f346994688a8d", + "399c23ecc22e3ab5376044847fdcc0e778bc0bad", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-003.html": [ - "1dee7406f817681eaec5c1b5607b9762bc546329", + "bcdc1d68ddff37c67204341a6e93dc81a325a8f2", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-004.html": [ - "03da21bdcbb4fdb53f93c372da2af4a175fc0bc9", + "163ebbb7c462f803de9f85fbde11a384847f4faf", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-005.html": [ - "c4e793351e05b74a9d859286407f30f019e581ee", + "0e759ebbad7f7de553ebd8ccc50892d3af40d9eb", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-006.html": [ - "ab2604e1dd0396402ce6ab0acea3a340d107ad08", + "106f9a163e1d1621827e1d34bf1cc0c043b01898", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html": [ - "17b0c72f106d9103af25c654e913ad00c2a5ee19", + "247606b98201e9a73f6162432ec4f032e7822d98", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-008.html": [ - "32b50873af5b434817de9ca3fb5ea3b79808bdbc", + "ce14fc5adc6e6bc08f9d67f7c432e42e1fa06994", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html": [ - "29551eeae983adc5cdd9b518b64a1d0c9560f062", + "78f5c7dc3382ef9e06cb98266a1aea04858b36a8", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-010.html": [ - "396afc15a311bb0a636ba2570b57366a52fbc770", + "572eaddac3bcad2a78f595a2d7252ed61e284173", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-011.html": [ - "49109ff240399f0f1f60308850f805779dfc4b21", + "70681816b62b12c0b47dd59e92c82c57c5195df4", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-012.html": [ - "45a9279c62d4052a150a6da13ae9c177a38f01a2", + "45434202efd7954308d6f87023cdbc245a412c47", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-013.html": [ - "29d4695a9ad8eb5eebcdf15b3693a714bc412779", + "93ae6b0da898b80b39b7c3315b862024345625bd", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-014.html": [ - "66d7b70d305869abb453caf2f0e51a274bd1a537", + "439df61ce437200c65c09605d46461f889b0c236", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-015.html": [ - "874f6b55e6b204d6cfc41c73a2c00a5f4229d298", + "4944467ea75bbd7468f08ede5dd19a88196ab9d3", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-016.html": [ - "51b59909bd41adefa471e9b8bf9ff75e9ed92259", + "e0b7eeddc7cdd5187c3a07186407360026b6a0d4", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html": [ - "6423406f9bfaf43ac97fd4547a784c2bb8d19bc0", + "47d65e49c206a554caa1738e44f0d41f2650431a", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-018.html": [ - "123575acf3c090c6479e5e4fa064c75fcea56bda", + "08367b30d4b332dcff0be6f7967c1dc8ef4bd9af", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-019.html": [ - "f611e34104ae873f1124032aa22621dfcf4fa128", + "f357a479479fb871c6e6eeb49ac028db55757d81", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-020.html": [ - "c0a3bf24655a77c05dce301b0173f18d0fa42234", + "4271df1342f4600e39f6ec3b1daae20ff369a5a8", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-021.html": [ - "e39bd0c869b5c69f99ddb0e43ecd516c23e22051", + "c72cbc118d7af2378cc2026ccd4eff5b2b3dada3", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-022.html": [ - "436855cb48c5de8f913f209ba8172644c0e97226", + "d1bcda40064849f8250ca423c07210ef6f7135da", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-023.html": [ - "07ea8b43529cc3abe597b5cbaf71b577c0e08a81", + "5ffaf7fb23cd317c684633b26ce027beb83aef20", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-024.html": [ - "4ef7fd0b4687fe9f08513cccff2707bb05d92a78", + "7c475cebcd650192507dadee416e5e5a7318f0f9", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html": [ - "4ecabe7266535153ce6e38e1bee6e4eba28c5260", + "b5100c40529365ed36531bfca7310370f3cd017f", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-026.html": [ - "dc702a1d181ef4efcf4d5161ff1b10bbb8e08337", + "1e8a5e7c21da8a8197b2d35943d2c4a67050c583", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html": [ - "a5646db94e62b9455c9ed44e9f1a86f1cda74153", + "1e87d9f38001a7a1407ee6983c3a4f7b1dc8da92", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-028.html": [ - "9940f6e83d28a45ad87a50b24afe5eca1c3ff596", + "a8d71f02f9233d070eb99cf3f7d9c9e69995c570", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-029.html": [ - "ed6197207c84d52614f2e4bda31aa0794ac244ce", + "cd4207c50b24057e84f52e2df9ee40df0bc1e490", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-030.html": [ - "df920f26e14d9adb3e987771b74f3ca21d001b9d", + "9fe22b9a8a575ad8176f3a657a9b9ddfe71a7753", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-031.html": [ - "24cdde781a98046593d3f0a57906b756326c4d83", + "082342d57257892308c3909c8ca4c3b270021551", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-032.html": [ - "489c89b0d82b3ad92e342db2b680b152e4bab404", + "8eb6d46e01bbc2383198ff4d906ce1c8053dd56d", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-033.html": [ - "4905906bd110e7b9ef3ad1ca4e0b01417b0998c8", + "151c7aebb20d2fe130351503641fdf200bfc1d3f", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-034.html": [ - "c9ef480494c982efd2cc2b6801eb0c308de0a608", + "d06920746566a28b934d301107b73e1d54c1aba5", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html": [ - "f93f4f2a62aa2073676466dcfc5975556dd04739", + "d747922cd9b2711dff260de987a0242ea6989235", "testharness" ], "css/css-grid-1/alignment/grid-alignment-implies-size-change-036.html": [ - "748d617dac4b7c97592967c0df1ee82f6a43cc0a", + "4739f523e02112bb7dd6638dc5b986d1d7bce44f", "testharness" ], "css/css-grid-1/alignment/grid-content-distribution-001.html": [ @@ -490589,199 +489751,199 @@ "reftest" ], "css/css-grid-1/alignment/grid-fit-content-tracks-dont-stretch-001.html": [ - "9fbe55ecef2ac64d864d6592cb9b81198acac261", + "04b805be2d4db49e730ec64ade4af951c510ad97", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-001.html": [ - "faa0a4a8e6660d8bb12cec2ccbe86e8e23bcc936", + "917e0b3e2c98cface73510fb00b62e609ea94ecc", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-002.html": [ - "735b425c34d147a32b97e60606a5d088389fecfc", + "a32fc988586c078db1c437a81a3a7b2fab2e921f", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-003.html": [ - "7f5a41bc81b97bb4b62e55b69fa1ecfe241edaed", + "79346c92de73ab8e88c9ea86c963b99ec437854a", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-004.html": [ - "0e12bf8b99c417c9176100f7b945b9a83d53f69c", + "5a02e719fc6d65cddd2dd97c2aedfbea1b0d7eae", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-005.html": [ - "d28606de466e787ac8e4c1f742806c2bbf570a88", + "a33ab3b46bd68238bcafc86350f1bee36fb78373", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-006.html": [ - "2ea3e018bf73940231af89dc72c2352fe2985732", + "61c927b4280011667fea7869eb82071d29dd2207", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-007.html": [ - "d2ff7e0efbb1240bfa4b21b0d2e7eb0891950348", + "35a0411b69e1ee32e00b2894db7eb1e1e173cb15", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-008.html": [ - "0ee2f7d1f4bed6383a762f86efa6dc2a8a27bf4b", + "fc0e18c677cbae1dab7bb55688fb60da6de0ff1e", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-009.html": [ - "d64052253097bade696ff9c8bee42bfa8cca9604", + "9e836b1cbc598eaf29f40fa783ac1666441131a0", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-010.html": [ - "9523288742cb15e2451b41b85596ff868b6b4648", + "8168c74fc8ea39b72e7327685231aa91a6985ceb", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-011.html": [ - "9929a38f502a2e82ae93b6a39910eacb04ee6e58", + "e6bd704502d9dbe6ac453d92ebf7f61d5ec5805a", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-012.html": [ - "9a19df31cfded6c4270da40070c3e8390c8366b2", + "618b7bbae71741c700534d8c5dcf7b471cccd52b", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-013.html": [ - "a8cb352297f011b42b3740fd73f2f78f0bdca29d", + "4588a246fa623f272000d7d2ca95ff9413fa7ce2", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-014.html": [ - "11e3cb854d0c9fb7535a7408a56e9f372acf7b74", + "eb5bf50d24837a38d7f1f70508030c0d83e22dfd", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-015.html": [ - "7b145fe80d78b51f42f1a257e64b77f256324029", + "af43ff2ee5ea8f4bfc8eaca775f30bc56fce2429", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-016.html": [ - "3d7b17fa76b3f21ccd882072158f25c723698b24", + "d7d3dd523cc6897b701b57dfdb41c13e93209eb2", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-001.html": [ - "613da8787ea601c01cd79348e68d94cbdf4f6c12", + "a541ceec457d826677469e1dde2f2fbdbc3f7448", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-002.html": [ - "bfbfeef9485cd0a842729d72ae6a7d2978fed0ee", + "8ee1d02283ddd96ab042e10f31e02d19998ee1f3", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-003.html": [ - "47f8fa7e366a0928a1ef6ee30d3e97898d10b882", + "a2039c7a3a995613595375b8dbd6f0a4d6eee077", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-004.html": [ - "0277d86138e1e5aecea0fcde768a48a8b841046c", + "6c24f14a89c33bc7813274c0818dc0842e9c1e83", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-005.html": [ - "b82ead09258f8746f6c7d4d9fd363b2bdfe2fe42", + "c7b147c20408781c3e3998f867a5878916960ed5", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-006.html": [ - "290d852faea189b602457356f6abf8df51f4e306", + "0cca9ab651aadb24b3fa17c2d991f8498aae49ec", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-007.html": [ - "f8418fe79ca641e453791ca1c202cdad50220b2e", + "8552960b768a80146861772e61c5ba66f49b2c59", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-008.html": [ - "10e77671b9a37de05f4898e035aa29fde999f64c", + "81be158b4ee68340a69586369ddfe38e2e4a5eb4", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-009.html": [ - "9f7f821d8fd60bf5ab47f5341a3a103afe94d3a8", + "067c428854205595ea4cb7bd94e4cd331428949e", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-010.html": [ - "f5327de3394428415fed804e4e79efc0fe963817", + "b53540415c065d41bf22d0d6f49708b5216695fb", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-011.html": [ - "a7aac5da4c4e085b14c77a0088a4d608c637f9bc", + "b6078329294d7b7a26722e0e9e82171cb250607f", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-012.html": [ - "b35ad113f09d62cb40cf4a16ff6faca82d73de35", + "55db10daf6be8aa2a75be718929bb0137ec668a7", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-013.html": [ - "5e97e65254d39476e883cb847d421a54496c71a8", + "84d9d4a608a03d5ef129abe2526b6fa55668492b", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-014.html": [ - "cf7374a5f900e4d6a675dc32a9181cfd1653075d", + "bbfe2d5190c6c4bcb208ec6f25990d52f75b7134", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-015.html": [ - "1ebbfc6564b9c8350fa618bea97ecab3fb44eade", + "f4dc41a4ce328418c9f572074f7b881104c805b2", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-016.html": [ - "74711c54c4c2148895e75132d9cebc225a9128a2", + "448d66b5757cb939fc9a3f03680ab1b9b8825ec3", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-001.html": [ - "a4d4dec0f3fb7f490c2e046d535d8f86a89ec519", + "ffe1ef9427e3847e89a0f59f5637bf94e80ca4f7", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-002.html": [ - "2ab21074fa42c487f294866c39859e06364715de", + "99cee6353da618a175033a2dbdb49315024ec083", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-003.html": [ - "695ee5fa198c111a3f8dcee1520938878b003410", + "327f6d87554010b433b90ae0363814d935398b23", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-004.html": [ - "6625c4aa82c02c86075a49d0485160b24f5ed5b6", + "9941214f81451e89e231d4e979ef21fae2d73cbb", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-005.html": [ - "5c400ff43392287f0203102c100ae1d286286e94", + "143ca0175c875529c74b9fd9a1cc2fe2067386ca", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-006.html": [ - "5c4f715f864ee0718a28cd56aef5bb63549042da", + "8d2a905743959c7a2f227f187286e3cb23f39e59", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-007.html": [ - "82b67b0f255a36275c9e2179f7c0a6c194b80881", + "6574fa2ea2a9776689367c4f64edaf5c8c844736", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-008.html": [ - "df9a693d3d6a7ecfb8767b1e53af0f71b54e4cac", + "f201af5919cc79fa8a3834900048c7fe2a794a72", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-009.html": [ - "9223ee50b9c22c737e42f113e67418c3b9f42312", + "59047d7646baef9aac63ed8c130030bc4725c780", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-010.html": [ - "065d965da5145e629517941de214c53a990e7d04", + "60d4108239c5ca52d7998f8b1882dd7adf38b567", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-011.html": [ - "819fb3899679610911df95110f051973ef4fcbb6", + "9c868b3e52a6604a9ee810a58f811fae92a48fa1", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-012.html": [ - "52459738d7455d7ed97045aea124b2160d37643a", + "87e41d80af965f86f5d43a9594cc324e1b365d9b", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-013.html": [ - "09be06f107f5ea97fc6db45b8bca150e10dc7296", + "cbc79b5b2b117ed2e1e286c91e6ce92b57d3112a", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-014.html": [ - "0270a89bde2e54d3108d8ab8b8dbb3f64ae855af", + "526ea2640f2fc150bd90f1eb7552686d39437906", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-015.html": [ - "f49ae99abd185af7bc9937c16bb7f4bb2044bdc6", + "9c97198c58873215469e20469219fa29197ba2b3", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-016.html": [ - "86d478dee444129ccd10f76aed6d80c75251ff13", + "a60c43c1c32b908c3df899f3cba0ddf1c0fb0824", "testharness" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-001.html": [ @@ -490840,6 +490002,10 @@ "194031e276c1dfca4dd57bf5791a0cc1fd226a89", "reftest" ], + "css/css-grid-1/grid-definition/grid-change-fit-content-argument-001.html": [ + "3bb5904f2a6c36b0575c395a3cc1b008e4cbcf0c", + "testharness" + ], "css/css-grid-1/grid-definition/grid-inline-support-flexible-lengths-001.html": [ "99215a797996322c89105b8ca5cb426628ec7563", "testharness" @@ -490900,10 +490066,26 @@ "4cab09ffd97789ea2b5e571bfafc2ef6bc26e314", "testharness" ], + "css/css-grid-1/grid-definition/grid-template-columns-fit-content-001-ref.html": [ + "518f7a0d17c565fda7903d1abfac794fbc03191d", + "support" + ], + "css/css-grid-1/grid-definition/grid-template-columns-fit-content-001.html": [ + "64c4a2aef9e86f623fede6185ba1d6b4eaa2be17", + "reftest" + ], "css/css-grid-1/grid-definition/grid-template-columns-rows-resolved-values-001.html": [ "e06c2099210cec1f7e031b3aa9901b675f0d2801", "testharness" ], + "css/css-grid-1/grid-definition/grid-template-rows-fit-content-001-ref.html": [ + "8aa844e9ae3fb1f8b359b8dcc43bbf605bc726c4", + "support" + ], + "css/css-grid-1/grid-definition/grid-template-rows-fit-content-001.html": [ + "a6ea0c0330b667d86c54933875e5cfda9d3f2162", + "reftest" + ], "css/css-grid-1/grid-definition/support/testing-utils.js": [ "7d6dc5106777942ad83e6bc570368af113f32d5f", "support" @@ -491268,6 +490450,10 @@ "7ab628056a02368bf958038106c871318e5c56a0", "reftest" ], + "css/css-grid-1/grid-model/grid-box-sizing-001.html": [ + "69eb267879e0b899efa996f4923414f72ecc52bf", + "testharness" + ], "css/css-grid-1/grid-model/grid-computed-value-display-floated-items-001.html": [ "f94336e80a72225b05970dec330508c33445c87a", "testharness" @@ -491384,6 +490570,10 @@ "5873efcda9c17e48a8437a62bf6871cbf96bdc46", "reftest" ], + "css/css-grid-1/layout-algorithm/grid-stretch-respects-min-size-001.html": [ + "5d6eb1efb1d1e52025ea4e8e2c8f758e08ca6c22", + "reftest" + ], "css/css-grid-1/placement/grid-layout-grid-span.html": [ "d7767a1bbe0af424621e669376fc46fdd685af18", "reftest" @@ -491464,10 +490654,6 @@ "feb53485e24aeaf9a5f27be5e42cc4a6fc5b8df0", "support" ], - "css/css-grid-1/support/check-layout-th.js": [ - "a9d8444db24ab38518f07a965a8a537cc6add437", - "support" - ], "css/css-grid-1/support/grid-alignment.css": [ "b45aee51245613ceddf8eda70d995a26027671bd", "support" @@ -491536,6 +490722,14 @@ "a4ed2b29eef39f7ed54add4ab45807665022f5b8", "reftest" ], + "css/css-images-3/gradients-with-transparent-ref.html": [ + "afaee81ac76599c859b267754920b9dc8df97ea9", + "support" + ], + "css/css-images-3/gradients-with-transparent.html": [ + "4b49a6bc4cfef048f3a4ac1d62feeb604e0d28a5", + "reftest" + ], "css/css-images-3/image-fit-001.xht": [ "868d9469f57e6013a024efa5e04ef2455d97296e", "visual" @@ -498281,11 +497475,11 @@ "testharness" ], "css/css-tables-3/fixed-layout-calc-width-001.html": [ - "0b8262ca3abd6104e86c305d738a2c70f6cb1f87", + "df167ec3c296c684230a8be95c1411c2329b87d9", "testharness" ], "css/css-tables-3/fixed-layout-excess-width-distribution-001.html": [ - "36b7b7893dba1f3ddc2edf46fee323d75e5af49d", + "d0cdc5a206aa1b70ece371ff65bfbfeac7adcb2f", "testharness" ], "css/css-tables-3/floats/floats-wrap-bfc-006b-ref.xht": [ @@ -498344,10 +497538,6 @@ "abe7468e88cad3aef32c7e59fa4a33a7930ef53b", "support" ], - "css/css-tables-3/support/check-layout-th.js": [ - "a9d8444db24ab38518f07a965a8a537cc6add437", - "support" - ], "css/css-tables-3/table-model-fixup-2.html": [ "19e3577e862601a0cf00dd4644017218c363f0db", "testharness" @@ -510977,11 +510167,19 @@ "manual" ], "css/css-ui-3/cursor-auto-004.html": [ - "9c4af5532976f37a86d7e05ae628b5aa8689fca0", + "8a92c094d77c263dfc9b7bcdc9ad75520d6bc234", "manual" ], "css/css-ui-3/cursor-auto-005.html": [ - "a68a5b0fb98e906f04187fcf074f71bdaf306641", + "9817068737eee588792af57f0ce41d62287a6667", + "manual" + ], + "css/css-ui-3/cursor-auto-006.html": [ + "41db488858f6149cf053f77c29af520ae890db30", + "manual" + ], + "css/css-ui-3/cursor-auto-007.html": [ + "fd25eeafd686728595b97782249955418e0b912e", "manual" ], "css/css-ui-3/cursor-border-area.html": [ @@ -511045,7 +510243,7 @@ "manual" ], "css/css-ui-3/cursor-image-006.html": [ - "058d041acf503c96395a347c48497e77b465111d", + "abbcd623de110cf5974ee2a9a59b6b1c61125db4", "manual" ], "css/css-ui-3/cursor-image-007.html": [ @@ -520360,9 +519558,13 @@ "ce8a97f7396acb9a7524274ee7a7de4f41024cc4", "reftest" ], + "css/css3-color/t44-currentcolor-inherited-c-ref.xht": [ + "8164a5d275ce79f472e00e1a0998af65d8657a1d", + "support" + ], "css/css3-color/t44-currentcolor-inherited-c.xht": [ - "a0d25a135ba0d9668ab012af3e82291c738a0a76", - "visual" + "87ea86999193bd7168011efbc0a195b1a988f0f5", + "reftest" ], "css/css3-color/t451-system-colors-a.xht": [ "7faa76d4cba74222102a185c6fb5e46436a2dc9b", @@ -522152,6 +521354,34 @@ "53dc9a1f675b5212979fc2dc45afbefa0add6721", "reftest" ], + "css/filter-effects-1/parsing/color-interpolation-filters-parsing-invalid.html": [ + "ef9797feb7854f7b5e664c3cdf86d6557b2491de", + "testharness" + ], + "css/filter-effects-1/parsing/color-interpolation-filters-parsing-valid.html": [ + "02fe267b63babc73464297057da7e226cef472f4", + "testharness" + ], + "css/filter-effects-1/parsing/filter-parsing-invalid.html": [ + "ed49a343fbf4ebffc7c98797b21bf6fed83d5f89", + "testharness" + ], + "css/filter-effects-1/parsing/filter-parsing-valid.html": [ + "a53c5723d7f151f94b1ecbff1e4813beca40d546", + "testharness" + ], + "css/filter-effects-1/parsing/lighting-color-parsing-invalid.html": [ + "b7f371c0bf3495c95bb230fa2e90f98d45060c52", + "testharness" + ], + "css/filter-effects-1/parsing/lighting-color-parsing-valid.html": [ + "6ad4604f9d1f37befbf3db7ee71860400179675f", + "testharness" + ], + "css/filter-effects-1/parsing/resources/parsing-testcommon.js": [ + "e1e3a86c14c73867a050311b8f69db2cc4764797", + "support" + ], "css/filter-effects-1/reference/filters-opacity-001-ref.html": [ "a0ad8418d5df90156555c0402f4fc4262f42472a", "support" @@ -531780,6 +531010,10 @@ "82a6920db4d0be087e6ed621313ecf92e3e2ed68", "testharness" ], + "cssom-view/overscrollBehavior-manual.html": [ + "ca369af991f1e1c34116f2effe0d53a806ed9df5", + "manual" + ], "cssom-view/resources/elementsFromPoint.js": [ "0c31158817d4d6f9e59df0d2ebe0e41c6ce41bb5", "support" @@ -531792,10 +531026,6 @@ "0a8784c474ccdd4a3e76cb936855a8ef59566217", "support" ], - "cssom-view/scrollBoundaryBehavior-manual.html": [ - "987051cdbad355cbb1bbb8ea1030a3b17e533f09", - "manual" - ], "cssom-view/scrollIntoView-shadow.html": [ "3c4a18992105fd7bf19cbf29f0b6d80cb12ca98c", "testharness" @@ -536441,7 +535671,7 @@ "testharness" ], "encrypted-media/encrypted-media-default-feature-policy.https.sub.html": [ - "aa376680149e53e4839dc48b45291264fa5d6960", + "a941d1f99d1575f7bd9448e7ce0d6d67f873a1ef", "testharness" ], "encrypted-media/idlharness.html": [ @@ -537220,6 +536450,10 @@ "c697c5f11dec146f814d19472a8b94b0f50b1ae5", "support" ], + "fetch/api/basic/keepalive.html": [ + "1ecdcb478b65b258e79242ae17af79ba903db412", + "testharness" + ], "fetch/api/basic/mode-no-cors-worker.html": [ "39992b8abf3ab30182dfbaa5816cc154a22ae0ad", "testharness" @@ -537764,6 +536998,10 @@ "d839fec1d761688db807be2dfddf6b8b6932c46b", "testharness" ], + "fetch/api/request/request-keepalive.html": [ + "e6c2afd6cef41d358016d4d021b7c3e0e1185704", + "testharness" + ], "fetch/api/request/request-structure.html": [ "cc2471d809fcf7842c38762614c656bb45bb0fc7", "testharness" @@ -537820,6 +537058,10 @@ "c9ac2870a45253664da7de1aaf82626fdd1482bb", "support" ], + "fetch/api/resources/keepalive-iframe.html": [ + "4bd91cabbc1bddb966320aa28b3caaa9d06a514d", + "support" + ], "fetch/api/resources/method.py": [ "9ad4c5907e6fa4d8c4bca085f637af92db0f38f3", "support" @@ -537829,7 +537071,7 @@ "support" ], "fetch/api/resources/redirect.py": [ - "387c35bf1e576f00a10ce5abb4cc92e78da56845", + "79c8b1bcad05e05a7b628edb22fdaedbdf2c3bc5", "support" ], "fetch/api/resources/script-with-header.py": [ @@ -538608,12 +537850,12 @@ "b1349055762c7d44414c0c11fb8500d5eee9a75f", "support" ], - "generic-sensor/SensorErrorEvent-constructor.html": [ + "generic-sensor/SensorErrorEvent-constructor.https.html": [ "99bcfb42c91e084a3b847ab4bab2bad80e548540", "testharness" ], "generic-sensor/generic-sensor-tests.js": [ - "0b89e14eadd32fd23202977471c9913f5213dce4", + "892dc161d4f0376a67c86f73e84f57214e0f3fb0", "support" ], "generic-sensor/idlharness.https.html": [ @@ -538685,7 +537927,7 @@ "testharness" ], "gyroscope/Gyroscope_insecure_context.html": [ - "319bcf346337ccdd67f94ba2d0d4849e5b57da5e", + "74e51a1efc06bf8180db430b418d484fc50c07f9", "testharness" ], "gyroscope/Gyroscope_onerror-manual.https.html": [ @@ -538697,7 +537939,7 @@ "support" ], "gyroscope/idlharness.https.html": [ - "2aedb883f553cae594afb7c5ef59222c0ee3fefb", + "cd874438f99c173e3d6b4dd4823b113323285b6e", "testharness" ], "hr-time/OWNERS": [ @@ -542297,7 +541539,7 @@ "testharness" ], "html/dom/elements-embedded.js": [ - "5d5d208f38657e9fda1741654909c29807e67d13", + "2c20b7d2856d8f7f72b7835b2677ed47abc43629", "support" ], "html/dom/elements-forms.js": [ @@ -547200,6 +546442,14 @@ "270a8c31ce78e9ae07d8169367224051baf91fd8", "testharness" ], + "html/editing/focus/processing-model/preventScroll.html": [ + "fca882d5c3a5a78e486d6527d8b0cbf09d23c3e7", + "testharness" + ], + "html/editing/focus/processing-model/support/preventScroll-helper.html": [ + "ffd270caa596ffb41d5b5f1cdca450fb20a5fded", + "support" + ], "html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" @@ -547757,7 +547007,7 @@ "support" ], "html/infrastructure/urls/resolving-urls/query-encoding/resources/resolve-url.js": [ - "6f3dd9aeb9bc4c2419765519586349aaea4c4495", + "5b09875b7207da2b908e66e1d75f095f12887247", "support" ], "html/infrastructure/urls/resolving-urls/query-encoding/resources/resource.py": [ @@ -552828,10 +552078,18 @@ "94ed2b8f019e1b65c47c5f971503496bb4765048", "testharness" ], + "html/semantics/interactive-elements/the-dialog-element/dialog-enabled.html": [ + "22e2747a5cc7346bf639bcef4cffde001dbd688a", + "testharness" + ], "html/semantics/interactive-elements/the-dialog-element/dialog-open.html": [ "4487ae682d3c4ee2c15b7772bd7a26d8be7d5ffe", "testharness" ], + "html/semantics/interactive-elements/the-dialog-element/dialog-return-value.html": [ + "1b77c8ff31c1a38afb3a9fa9bf77bf85ac4a264b", + "testharness" + ], "html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html": [ "c00ac5b6d038b45b1a7cfbef94a4527757fa74e6", "testharness" @@ -552840,6 +552098,10 @@ "15580f3e0243093710d4914224ca3963992e3f5b", "support" ], + "html/semantics/interactive-elements/the-dialog-element/show-modal-focusing-steps.html": [ + "39b274df2e4ca72a9cd691c9a3ec45fd2f1ba932", + "testharness" + ], "html/semantics/interactive-elements/the-menu-element/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" @@ -553840,8 +553102,12 @@ "32b68baebfa9d82753f186ff34789922b1467e81", "support" ], - "html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-error.html": [ - "fd09ee8d075fc21786f6ed605acace65d94d1325", + "html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-fetch-error.sub.html": [ + "1f50b5eecae10d42755dde7f2a108ae6353d6154", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-script-error.html": [ + "24f8c20c79cdaa6d81e9447e4f616ec5626d36ca", "testharness" ], "html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports.html": [ @@ -553917,7 +553183,7 @@ "support" ], "html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype-import.js": [ - "20e11dd83dec0b7e06abdb50fb1c87d12ec65f88", + "3ad923bcb07e7b7aced9bbcd513c34c4504d74c4", "support" ], "html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype.js": [ @@ -553925,7 +553191,7 @@ "support" ], "html/semantics/scripting-1/the-script-element/module/errorhandling.html": [ - "10ccf68924459d54784ebc9cfdcdad21cb20811e", + "9b7109ec9111e7961e38d47a15ddb2e6f711c627", "testharness" ], "html/semantics/scripting-1/the-script-element/module/evaluation-error-1.html": [ @@ -554004,6 +553270,18 @@ "aeee3b59817843111b37ec65d643a09e1ea7d77a", "support" ], + "html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-dependent.js": [ + "1b36ec082f41a6a7836ac75996a8e9db2069105e", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-root.js": [ + "bc8e6d649615d09b970e328873bc138093f1c14d", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-url.html": [ + "9758a62ec1f943c00dcd9b58ca62464c5c78bbb3", + "testharness" + ], "html/semantics/scripting-1/the-script-element/module/import-something-namespace.js": [ "3488bcae45d3094858fad47be6c3b21bfc3ac402", "support" @@ -554232,6 +553510,14 @@ "4ce8bcce2537785c41f054175119e39169ed6110", "testharness" ], + "html/semantics/scripting-1/the-script-element/module/resources/404-but-js.asis": [ + "a83137f4c22cadb41ca631a8a8cca17c01021f34", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/resources/500-but-js.asis": [ + "a8f04e8d8fa3fe93abb1ca56a355df34ea533b25", + "support" + ], "html/semantics/scripting-1/the-script-element/module/resources/check-cookie.py": [ "49a8855de3a01f4fa8abfd5c9dbc3d0c1af2e182", "support" @@ -554260,6 +553546,18 @@ "c88ce333101627fd7674c1b4ede04fd1d0cf5bae", "support" ], + "html/semantics/scripting-1/the-script-element/module/resources/imports-404-but-js.js": [ + "0eaed7ae80ca911cf6d2d9c5cca4aca184c643cd", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/resources/imports-500-but-js.js": [ + "0eaed7ae80ca911cf6d2d9c5cca4aca184c643cd", + "support" + ], + "html/semantics/scripting-1/the-script-element/module/resources/imports-b-cross-origin.sub.js": [ + "edf619abb179fc343162bc585c4582ab0d4b0c8f", + "support" + ], "html/semantics/scripting-1/the-script-element/module/script-for-event.html": [ "c225684e0c7d09f9628aab589c8673b140994243", "testharness" @@ -556964,6 +556262,10 @@ "f9c94ab08fa997459cba17e61d8cd00ee8b07b46", "support" ], + "interfaces/ambient-light.idl": [ + "bdede54deab80b5465f904a9726ee86f1260858d", + "support" + ], "interfaces/clipboard.idl": [ "5af2846c7f9ff93f2f4f13780d0356cdac6a0d4f", "support" @@ -556973,7 +556275,7 @@ "support" ], "interfaces/cssom-view.idl": [ - "1bcfadd098734fc82c0cf791d4c0d35d69423ce2", + "3f575def818098d376ddf069673692530fcf8896", "support" ], "interfaces/cssom.idl": [ @@ -557001,7 +556303,7 @@ "support" ], "interfaces/html.idl": [ - "5e6afa54c3b4c41f31e24e6fbb55f0e77259c09f", + "30bf215678945a0b5732673d0364cbd64867095e", "support" ], "interfaces/mediacapture-main.idl": [ @@ -557028,6 +556330,10 @@ "de07cb2600834f13c49e00d6d77df5108244b3ce", "support" ], + "interfaces/wake-lock.idl": [ + "7d0ee3d60a923bf454e18f9116cded1cc3a16f9b", + "support" + ], "interfaces/web-share.idl": [ "d3ab33fa078f1b3bd4b29e174369073aab3963d5", "support" @@ -557300,12 +556606,20 @@ "07726af74120e3f066e8fd8f4988616984793428", "support" ], + "longtask-timing/shared-renderer/longtask-in-new-window.html": [ + "903bb60746deebd8f39ee8ea1a84b40e17884c3c", + "testharness" + ], + "longtask-timing/shared-renderer/resources/frame-with-longtask.html": [ + "2901b02184fb36d620782fb7fd4a565124580e81", + "support" + ], "magnetometer/Magnetometer.https.html": [ "3fbdbbd6c3db9b1a44d7490101bea34045f1945e", "testharness" ], "magnetometer/Magnetometer_insecure_context.html": [ - "9708569b2e2764c973efe31e9f2f4e3de7f7a449", + "417e00b969ea887ee4d3d4d9b0dc7af4d786e365", "testharness" ], "magnetometer/Magnetometer_onerror-manual.https.html": [ @@ -557317,7 +556631,7 @@ "support" ], "magnetometer/idlharness.https.html": [ - "a72e1c3443feae9bf9d19385c0ba96e66b97f20c", + "32a67a2dc774ed415b28ff0f0c9b0f4c4ecc4e46", "testharness" ], "mathml/OWNERS": [ @@ -558388,8 +557702,8 @@ "bc5a7f4380a0527fdc44c41b765e07df028d0dba", "testharness" ], - "mediacapture-streams/MediaStream-default-feature-policy.https.sub.html": [ - "955b6cfddae2c8961abfba52ffe9192224500d0a", + "mediacapture-streams/MediaStream-default-feature-policy.https.html": [ + "2339e7eb9fb14819ce2beb5e0b640a3744dbe4ac", "testharness" ], "mediacapture-streams/MediaStream-finished-add.https.html": [ @@ -558436,8 +557750,12 @@ "46327fba3cf783d6506634b837f8308417f954cd", "testharness" ], + "mediacapture-streams/MediaStreamTrack-idl.https.html": [ + "a52c4076cfa4e1b59f7b30725bfa7bd35b831158", + "testharness" + ], "mediacapture-streams/MediaStreamTrack-init.https.html": [ - "3cb9f842f12185de5f1696a8d0cdc2fe102c246a", + "35422d66a08311f92dc1eb02a1b964c887fc02c7", "testharness" ], "mediacapture-streams/MediaStreamTrackEvent-constructor.https.html": [ @@ -558445,7 +557763,7 @@ "testharness" ], "mediacapture-streams/OWNERS": [ - "2ef6c1440dc82da13537af344dfa6a2c84cc0808", + "2b20bf18b1f92a2f4c4d56ad1c6a41ec2b34cc9c", "support" ], "mediacapture-streams/historical.html": [ @@ -558476,1597 +557794,1381 @@ "167112f19752c9c180831820b6e348427606b63b", "support" ], - "mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - "fdeac10c0682de4545c5f0e8f43efb19070cbd91", + "mixed-content/audio-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "9219890ab0efa31e4f2db0646e12882da3a5443d", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/keep-scheme-redirect/allowed.https.html.headers": [ + "mixed-content/audio-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/no-redirect/allowed.https.html": [ - "d42b6a62f6883c62590150789377378236b80750", + "mixed-content/audio-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "c33974dee06173caa92430a84101a8f22a137910", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/no-redirect/allowed.https.html.headers": [ + "mixed-content/audio-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/allowed/http-csp/same-host-https/fetch-request/top-level/keep-scheme-redirect/allowed.https.html": [ - "ddd868ad5180c52ebbd63a11d35f2d9b9035fdd6", + "mixed-content/audio-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "340cc44b5a863f482a03201080314fea34955270", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/fetch-request/top-level/keep-scheme-redirect/allowed.https.html.headers": [ + "mixed-content/audio-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/allowed/http-csp/same-host-https/fetch-request/top-level/no-redirect/allowed.https.html": [ - "092b25576f408c393163706d3a798682fcb9bd24", + "mixed-content/audio-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "d7cea0c41a045d0bf87f8fb7d8a1d24b18b746ac", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/fetch-request/top-level/no-redirect/allowed.https.html.headers": [ + "mixed-content/audio-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/allowed/http-csp/same-host-https/form-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - "70f66e7a32d6dfd50c50609ae9cf4319844c2663", + "mixed-content/audio-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "a0d561f2e6331bb7396f1d95c85bfeb5a3b7f035", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/form-tag/top-level/keep-scheme-redirect/allowed.https.html.headers": [ + "mixed-content/audio-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/allowed/http-csp/same-host-https/form-tag/top-level/no-redirect/allowed.https.html": [ - "d59539004bc0adefd4b07991bd14f304e70af8fe", + "mixed-content/audio-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "0daaaa67f3edbf3499fa7fc1d33eca4b29ff817f", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/form-tag/top-level/no-redirect/allowed.https.html.headers": [ + "mixed-content/audio-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/allowed/http-csp/same-host-https/iframe-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - "997bba2339d516b691065f619b1b6574fd9e780f", + "mixed-content/audio-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "fdeac10c0682de4545c5f0e8f43efb19070cbd91", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/iframe-tag/top-level/keep-scheme-redirect/allowed.https.html.headers": [ + "mixed-content/audio-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/allowed/http-csp/same-host-https/iframe-tag/top-level/no-redirect/allowed.https.html": [ - "af7edfd9e0489206f7c6bfe18a3111e778985eb4", + "mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "d42b6a62f6883c62590150789377378236b80750", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/iframe-tag/top-level/no-redirect/allowed.https.html.headers": [ + "mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/allowed/http-csp/same-host-https/img-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - "418445c2b9859a03c2a5920aacb94de91665aec1", + "mixed-content/audio-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "14b799cd9bbff4752cd1bfe2c02ca289ae890dbb", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/img-tag/top-level/keep-scheme-redirect/allowed.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" - ], - "mixed-content/allowed/http-csp/same-host-https/img-tag/top-level/no-redirect/allowed.https.html": [ - "79c88baefa042eb76d4959129548bb0170b971d0", + "mixed-content/audio-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "8c8cf399a760e744c54c08a990ab1da514409e5a", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/img-tag/top-level/no-redirect/allowed.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" - ], - "mixed-content/allowed/http-csp/same-host-https/link-css-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - "b863686a3679c525b15eddb20c4b41e0aba60509", + "mixed-content/audio-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "3233030cfc42075de689b39be9dca812e153955c", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/link-css-tag/top-level/keep-scheme-redirect/allowed.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" - ], - "mixed-content/allowed/http-csp/same-host-https/link-css-tag/top-level/no-redirect/allowed.https.html": [ - "0e014ab795a2dec309904ac1d5f766d556a532fe", + "mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "a78a3c8b9950ca95859c98837d86540ed7074633", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/link-css-tag/top-level/no-redirect/allowed.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" - ], - "mixed-content/allowed/http-csp/same-host-https/link-prefetch-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - "87150a15ec0814bf4d9ef31b2175a61be656daa1", + "mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "c4f7ba79294030cae5439e7d46b3a7d24a01fdf4", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/link-prefetch-tag/top-level/keep-scheme-redirect/allowed.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" - ], - "mixed-content/allowed/http-csp/same-host-https/link-prefetch-tag/top-level/no-redirect/allowed.https.html": [ - "f99ce220a83d0a6f3a2cc3fa3d288fa771990768", + "mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "fab6658b6b049386ff531ffbd38ef0a923eb7e94", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/link-prefetch-tag/top-level/no-redirect/allowed.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" - ], - "mixed-content/allowed/http-csp/same-host-https/object-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - "4ea352d10d68e7a09b494534837d04877c0833b3", + "mixed-content/audio-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "73429ee5cb2de97bda1090156d9bb3f716fcce4d", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/object-tag/top-level/keep-scheme-redirect/allowed.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" - ], - "mixed-content/allowed/http-csp/same-host-https/object-tag/top-level/no-redirect/allowed.https.html": [ - "4cf12d89f0f98a283bc123f44be3ad0e8154be95", + "mixed-content/audio-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "64069b6bbac147b17e29d53143fe136944de0daf", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/object-tag/top-level/no-redirect/allowed.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" - ], - "mixed-content/allowed/http-csp/same-host-https/picture-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - "c05dd84ba000e6675578e17cf6648e9bea6ce984", + "mixed-content/audio-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "5692d6f7cc2c237a203de6c5a73ff6d6fcb9fc27", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/picture-tag/top-level/keep-scheme-redirect/allowed.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" - ], - "mixed-content/allowed/http-csp/same-host-https/picture-tag/top-level/no-redirect/allowed.https.html": [ - "1cbc8f65282ee556a761e3ab9b65e7b5a19c2f39", + "mixed-content/audio-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "e716de28d27503516e6066bfe5715880aee61d2d", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/picture-tag/top-level/no-redirect/allowed.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" - ], - "mixed-content/allowed/http-csp/same-host-https/script-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - "f4455e3d16f68f7748eeb9f9455f10869622a701", + "mixed-content/audio-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "bf977afe3f0b5daa0e899dff1d55241352125531", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/script-tag/top-level/keep-scheme-redirect/allowed.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" - ], - "mixed-content/allowed/http-csp/same-host-https/script-tag/top-level/no-redirect/allowed.https.html": [ - "0ae053a8a446ad06f84200621124ebe5cd82ee63", + "mixed-content/fetch-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "1b368a53bec1da5921224e4fd3ae3db4d11014d3", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/script-tag/top-level/no-redirect/allowed.https.html.headers": [ + "mixed-content/fetch-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/allowed/http-csp/same-host-https/video-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - "3e5e01b52ef7a96b3dc41a5fd65af5ad14474a4d", + "mixed-content/fetch-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "97cbafc5bf741afe9c8c5e65777d735d6826fa9a", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/video-tag/top-level/keep-scheme-redirect/allowed.https.html.headers": [ + "mixed-content/fetch-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/allowed/http-csp/same-host-https/video-tag/top-level/no-redirect/allowed.https.html": [ - "1bda6a05728b96428037c271a79a621158600136", + "mixed-content/fetch-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "7557fd8f2d50b6f1d0cde905684cd410a6e6a38a", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/video-tag/top-level/no-redirect/allowed.https.html.headers": [ + "mixed-content/fetch-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/allowed/http-csp/same-host-https/worker-request/top-level/keep-scheme-redirect/allowed.https.html": [ - "6e7169ab385dd2f55470e072ea92eba5e3b8824f", + "mixed-content/fetch-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "e625621687fe9848f088e9ca72d2d5a07f860dd3", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/worker-request/top-level/keep-scheme-redirect/allowed.https.html.headers": [ + "mixed-content/fetch-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/allowed/http-csp/same-host-https/worker-request/top-level/no-redirect/allowed.https.html": [ - "92010e28430c2f95effc17bc0db065a5c4c1daef", + "mixed-content/fetch-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "4420b87a357725ceaf7814bee7fbeb5aa6159bcd", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/worker-request/top-level/no-redirect/allowed.https.html.headers": [ + "mixed-content/fetch-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/allowed/http-csp/same-host-https/xhr-request/top-level/keep-scheme-redirect/allowed.https.html": [ - "659b52cf363720e1754889509017ce3a53aa88f3", + "mixed-content/fetch-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "d19049e9e686331250dadd2474d7efff8fb2237f", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/xhr-request/top-level/keep-scheme-redirect/allowed.https.html.headers": [ + "mixed-content/fetch-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/allowed/http-csp/same-host-https/xhr-request/top-level/no-redirect/allowed.https.html": [ - "ebcc61a954dc69e2a008b9dc49b400dd62817d60", + "mixed-content/fetch-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "ddd868ad5180c52ebbd63a11d35f2d9b9035fdd6", "testharness" ], - "mixed-content/allowed/http-csp/same-host-https/xhr-request/top-level/no-redirect/allowed.https.html.headers": [ + "mixed-content/fetch-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/allowed/http-csp/same-host-wss/websocket-request/top-level/keep-scheme-redirect/websocket-allowed.https.html": [ - "17a051ff8fff1ecc46aaaa50a2bf7461ab6d6917", + "mixed-content/fetch-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "092b25576f408c393163706d3a798682fcb9bd24", "testharness" ], - "mixed-content/allowed/http-csp/same-host-wss/websocket-request/top-level/keep-scheme-redirect/websocket-allowed.https.html.headers": [ + "mixed-content/fetch-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/allowed/http-csp/same-host-wss/websocket-request/top-level/no-redirect/websocket-allowed.https.html": [ - "7f90901fe5882f4d40c6684cfd79a56639df8190", + "mixed-content/fetch-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "d3f5d8b8cb9fa0b3c0826e5f4cad0ed913e8d6d8", "testharness" ], - "mixed-content/allowed/http-csp/same-host-wss/websocket-request/top-level/no-redirect/websocket-allowed.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" - ], - "mixed-content/allowed/meta-csp/same-host-https/audio-tag/top-level/no-redirect/allowed.https.html": [ - "3233030cfc42075de689b39be9dca812e153955c", + "mixed-content/fetch-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "850f14b73e3694681b40bebfa85311d424b08e03", "testharness" ], - "mixed-content/allowed/meta-csp/same-host-https/fetch-request/top-level/no-redirect/allowed.https.html": [ + "mixed-content/fetch-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ "8e72da4a0a30eb8affa3d7edb42720a55c886558", "testharness" ], - "mixed-content/allowed/meta-csp/same-host-https/form-tag/top-level/no-redirect/allowed.https.html": [ - "c3d31fd2f1f6a32223bde84b7e470d138f620c23", - "testharness" - ], - "mixed-content/allowed/meta-csp/same-host-https/iframe-tag/top-level/no-redirect/allowed.https.html": [ - "d94041986702c79409dbc47a781e474c013f6841", - "testharness" - ], - "mixed-content/allowed/meta-csp/same-host-https/img-tag/top-level/no-redirect/allowed.https.html": [ - "e7f04510ff694817b86854338d6670f75569ec4a", - "testharness" - ], - "mixed-content/allowed/meta-csp/same-host-https/link-css-tag/top-level/no-redirect/allowed.https.html": [ - "30a0da5f517ebcd5aabeb83f643f95adecbf0020", - "testharness" - ], - "mixed-content/allowed/meta-csp/same-host-https/link-prefetch-tag/top-level/no-redirect/allowed.https.html": [ - "d1fea7e4b5e32b88797cdfaea1deaced699e3a80", - "testharness" - ], - "mixed-content/allowed/meta-csp/same-host-https/object-tag/top-level/no-redirect/allowed.https.html": [ - "aff6c1addf9175f05d92eb428d0c9e11d38f848a", - "testharness" - ], - "mixed-content/allowed/meta-csp/same-host-https/picture-tag/top-level/no-redirect/allowed.https.html": [ - "f93e80c420734892b2871987012b09a2aff02a6c", - "testharness" - ], - "mixed-content/allowed/meta-csp/same-host-https/script-tag/top-level/no-redirect/allowed.https.html": [ - "0575fd64689c5b0f3970bdad033fe944ff6644bb", - "testharness" - ], - "mixed-content/allowed/meta-csp/same-host-https/video-tag/top-level/no-redirect/allowed.https.html": [ - "a55b1cc03051118df894858733f91cb794ed893e", + "mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "d320e549cc30ba94961be1b50caf86074a20cb9b", "testharness" ], - "mixed-content/allowed/meta-csp/same-host-https/worker-request/top-level/no-redirect/allowed.https.html": [ - "2c86c9ea5db3726274091327ce5d6573306af093", + "mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ + "f8f6b18685d0bf2a351ca2b0e364d4e5ad28fbff", "testharness" ], - "mixed-content/allowed/meta-csp/same-host-https/xhr-request/top-level/no-redirect/allowed.https.html": [ - "25f22da0d0ef7acbaface0ffff30b1abc8b53402", + "mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "3c6bd158494d8407dda0eb0fa70b6e426de82da1", "testharness" ], - "mixed-content/allowed/meta-csp/same-host-wss/websocket-request/top-level/no-redirect/websocket-allowed.https.html": [ - "e20eb313f66981ae7bb650a19d8fd61f62b5bd9b", + "mixed-content/fetch-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "ca379c4b2d6461b149d4b6d9cc3bdb60ab43af74", "testharness" ], - "mixed-content/allowed/no-opt-in/same-host-https/audio-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - "e716de28d27503516e6066bfe5715880aee61d2d", + "mixed-content/fetch-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ + "06985706784e23cf0bb35338c4486efd9d1c5697", "testharness" ], - "mixed-content/allowed/no-opt-in/same-host-https/audio-tag/top-level/no-redirect/allowed.https.html": [ - "bf977afe3f0b5daa0e899dff1d55241352125531", + "mixed-content/fetch-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "8143606c5c55cf172a74969391f1207aa81f2b56", "testharness" ], - "mixed-content/allowed/no-opt-in/same-host-https/fetch-request/top-level/keep-scheme-redirect/allowed.https.html": [ + "mixed-content/fetch-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ "685fb35dea4374acb6e597caa53d8298378f1194", "testharness" ], - "mixed-content/allowed/no-opt-in/same-host-https/fetch-request/top-level/no-redirect/allowed.https.html": [ + "mixed-content/fetch-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ "e63832a2f21819be42f1723ea5f613b8662abb67", "testharness" ], - "mixed-content/allowed/no-opt-in/same-host-https/form-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - "0f6b02d991b8c3ec69d3655e32f78ba1ff16ef2d", - "testharness" - ], - "mixed-content/allowed/no-opt-in/same-host-https/form-tag/top-level/no-redirect/allowed.https.html": [ - "7094738a8839ee070d201cb023a12acd81f60863", - "testharness" - ], - "mixed-content/allowed/no-opt-in/same-host-https/iframe-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - "1c3153216d817b75ace4f9fa125ed9514bafa4d4", - "testharness" - ], - "mixed-content/allowed/no-opt-in/same-host-https/iframe-tag/top-level/no-redirect/allowed.https.html": [ - "94228b14e01e62a595f5dcc0d21c5210ee6060dc", - "testharness" - ], - "mixed-content/allowed/no-opt-in/same-host-https/img-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - "f39f2385de0ccf863625cbca210237be123c04c0", - "testharness" - ], - "mixed-content/allowed/no-opt-in/same-host-https/img-tag/top-level/no-redirect/allowed.https.html": [ - "206d37c0c2fa57ed094dd25281df5dcdeacd043f", - "testharness" - ], - "mixed-content/allowed/no-opt-in/same-host-https/link-css-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - "5f385b92afdf5a2049f255f1551c823ec85d8770", - "testharness" + "mixed-content/generic/common.js": [ + "084e9f76757d8caea2033e8ee7b70b07ef3e5e88", + "support" ], - "mixed-content/allowed/no-opt-in/same-host-https/link-css-tag/top-level/no-redirect/allowed.https.html": [ - "0e215b6c8f95aea079d53dca4e18e513c50ef9c0", - "testharness" + "mixed-content/generic/expect.py": [ + "91b06d89a65d83e45961778587e85cdbf720e72c", + "support" ], - "mixed-content/allowed/no-opt-in/same-host-https/link-prefetch-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - "fcde72bedd849665aea76ee1b1725a850a0b063c", - "testharness" + "mixed-content/generic/mixed-content-test-case.js": [ + "b9dfc2627be3da315bc7cfbf7684b96add779e62", + "support" ], - "mixed-content/allowed/no-opt-in/same-host-https/link-prefetch-tag/top-level/no-redirect/allowed.https.html": [ - "0ba5da404b387e28c64c18fae6264df2922b363a", - "testharness" + "mixed-content/generic/sanity-checker.js": [ + "baa34825a23d70a8df1a4feeffe6c866c2b0b062", + "support" ], - "mixed-content/allowed/no-opt-in/same-host-https/object-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - "d0757e9a96f38ef1783438c798be3bce7b81e7ec", - "testharness" + "mixed-content/generic/template/disclaimer.template": [ + "24505625da3aee99cb1d26ec74f269c3d3384bd2", + "support" ], - "mixed-content/allowed/no-opt-in/same-host-https/object-tag/top-level/no-redirect/allowed.https.html": [ - "eacb8d4787918f3d6721833dabdf9163775129c3", - "testharness" + "mixed-content/generic/template/spec_json.js.template": [ + "a5e61678d2ee01e1d1852296ea1e49e0d933157c", + "support" ], - "mixed-content/allowed/no-opt-in/same-host-https/picture-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - "618704362f25e8f71fb43ec2e8412f2771be7aee", - "testharness" + "mixed-content/generic/template/test.debug.html.template": [ + "bb11c3e8855f7590ef1d496032f4357db5781f3b", + "support" ], - "mixed-content/allowed/no-opt-in/same-host-https/picture-tag/top-level/no-redirect/allowed.https.html": [ - "f5755364f4c91973c9a554bdf0c12dc50338f0b6", - "testharness" + "mixed-content/generic/template/test.js.template": [ + "99d185691af529f1a7b0c8d74844aefaae946e84", + "support" ], - "mixed-content/allowed/no-opt-in/same-host-https/script-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - "cac312888c207c6b0c0f7aa9691f528881595eb3", - "testharness" + "mixed-content/generic/template/test.release.html.template": [ + "2febaa8ef270c96fe357684db77b9f7487a0156e", + "support" ], - "mixed-content/allowed/no-opt-in/same-host-https/script-tag/top-level/no-redirect/allowed.https.html": [ - "f87d399643fdbdc7135e1db1fd9b3ff9c9a4bbec", - "testharness" + "mixed-content/generic/template/test_description.template": [ + "5c11ec4355d351f608adb189b6b1121073210ed4", + "support" ], - "mixed-content/allowed/no-opt-in/same-host-https/video-tag/top-level/keep-scheme-redirect/allowed.https.html": [ - "3ac75e4ddf21586beec825628aa421ce66b3eb51", - "testharness" + "mixed-content/generic/tools/__init__.py": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" ], - "mixed-content/allowed/no-opt-in/same-host-https/video-tag/top-level/no-redirect/allowed.https.html": [ - "1c26515cb6831d895f537df85edb2c9709cae754", - "testharness" + "mixed-content/generic/tools/clean.py": [ + "18f3833ae2532fe99979944a735921abe5295b91", + "support" ], - "mixed-content/allowed/no-opt-in/same-host-https/worker-request/top-level/keep-scheme-redirect/allowed.https.html": [ - "1995b32e30a3a6e970268d8baf734c39512a91d1", - "testharness" + "mixed-content/generic/tools/common_paths.py": [ + "d5f3c03e3ce8dbc4354e08e9e4c7a503e8e1bbf3", + "support" ], - "mixed-content/allowed/no-opt-in/same-host-https/worker-request/top-level/no-redirect/allowed.https.html": [ - "320025af3c5a47640a9dab5792160c7c14de917d", - "testharness" + "mixed-content/generic/tools/generate.py": [ + "c5e384d4d778bcd887844395429cced9fb778ff1", + "support" ], - "mixed-content/allowed/no-opt-in/same-host-https/xhr-request/top-level/keep-scheme-redirect/allowed.https.html": [ - "5f6030ee661ead982d88e8fa281c0ff82bb72f2d", - "testharness" + "mixed-content/generic/tools/regenerate": [ + "d21629058407b1d734417990e1af2663405c6b7d", + "support" ], - "mixed-content/allowed/no-opt-in/same-host-https/xhr-request/top-level/no-redirect/allowed.https.html": [ - "531546fa4c30f76ed51c7771b9dca10de58d2df0", - "testharness" + "mixed-content/generic/tools/spec_validator.py": [ + "b0bc2fc11415034f5c31c70f7eb8506a3f0d44bc", + "support" ], - "mixed-content/allowed/no-opt-in/same-host-wss/websocket-request/top-level/keep-scheme-redirect/websocket-allowed.https.html": [ - "bc2047414c044ac1a9c5efeef6a53dbccd0eab0e", - "testharness" + "mixed-content/generic/worker.js": [ + "6a0548ef4b906e539d89940aa791a78bba905262", + "support" ], - "mixed-content/allowed/no-opt-in/same-host-wss/websocket-request/top-level/no-redirect/websocket-allowed.https.html": [ - "bebcdea2930456cab89c92fe28acef2f22520868", + "mixed-content/imageset.https.sub.html": [ + "e2005b813384f38b64baec9bc431e25aa61f417f", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "1b368a53bec1da5921224e4fd3ae3db4d11014d3", + "mixed-content/img-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "3297aaed5d30a40eaed000e51515bd497d4b4556", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/img-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html": [ - "97cbafc5bf741afe9c8c5e65777d735d6826fa9a", + "mixed-content/img-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "b9836f4fea55f02113c5f4aa67e45251e259995c", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/img-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "7557fd8f2d50b6f1d0cde905684cd410a6e6a38a", + "mixed-content/img-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "0ef4da59f9710f632992bcc92df91dc9864e97d0", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/img-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "e115698289a9d17fbc62ec687386b0e87cc14c02", + "mixed-content/img-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "d9f8a4ef0df19c5869cdc45913a5cd086fad67d8", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/img-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "14db9212062e509ee2c9def3751e6b8322c4b3a6", + "mixed-content/img-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "18b7424b5ac56658a6eb352e1756d171232914a7", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/img-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "0976d0cb1e822750c839dae814d6b55c50209002", + "mixed-content/img-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "30e42b02b2e4219e34f14c1db9f9f36661a252e3", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/img-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "3a6070534671822bfafa04e1241404e62d583803", + "mixed-content/img-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "418445c2b9859a03c2a5920aacb94de91665aec1", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/img-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "719552385c6a6c566ac35608812e6b4b0803f854", + "mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "79c88baefa042eb76d4959129548bb0170b971d0", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "941fba9aff4f9add1d61d0e6fc96898739b8214e", + "mixed-content/img-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "567ddeb24116c1baff970033edaf0d4dc0da6be3", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/img-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "a19d2471f64b54a094a78bbbe9c6725e6d6f622b", + "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "e9f1a5942b08e77813d276fb8f6006f22285f2c4", + "mixed-content/img-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "e7f04510ff694817b86854338d6670f75569ec4a", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "fbb072d21734ec0387417e01c44420f36be2ea4e", + "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "3c1443674319382c15b45013df25e3e51a503cdd", + "mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "13816e08b8649393a7c31d61e47e759068f88c76", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "130ab390be334b9695b83c5396ac676e984be8ee", + "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "2b5ff960661b5f817bb8215d2e86106ddfc91b1d", + "mixed-content/img-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "51e46bfe0a9ff9e06e6c8097ce28aada274c7338", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/img-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "6d99ccf84a81132846a1eee2e733914b533bce1d", + "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "9846bf56c8aae52383ea4d3c2f57b6465c41e8c2", + "mixed-content/img-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "753545df28dca7ca5897af13494f4d4197fa29e9", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/img-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "f39f2385de0ccf863625cbca210237be123c04c0", + "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "ba66dc6b0f3a9806a71ecc3b338bf2c05324b164", + "mixed-content/img-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "206d37c0c2fa57ed094dd25281df5dcdeacd043f", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "e9f1a5942b08e77813d276fb8f6006f22285f2c4", + "testharness" + ], + "mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "e2983c5ab711c5e5f774bfb83b5995543cc80902", + "mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "3c1443674319382c15b45013df25e3e51a503cdd", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "74ee909bb1113ed447e492e8d69ffbf0396f52fa", + "mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "2b5ff960661b5f817bb8215d2e86106ddfc91b1d", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "1269f955175202b38a101b41e39a501adcc20318", + "mixed-content/link-css-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "01395c96e354c0af36515eb7b0ad6e765036bcf7", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-css-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "734adc8316240fc0c59f894f8e1afb4cab96b5bc", + "mixed-content/link-css-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "47531b96c24769e26c351dd674860675006bac0e", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-css-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "e53fefbcca3276f2df412aea464a9b22edc814b0", + "mixed-content/link-css-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "36e152879abe90057cabd70a968c249963732158", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-css-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "74de74754cb3eff1ee36cdedc8fe4b462e74d981", + "mixed-content/link-css-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "b863686a3679c525b15eddb20c4b41e0aba60509", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-css-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "4caee58efa828f1f22652c6277f211f062b65a84", + "mixed-content/link-css-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "0e014ab795a2dec309904ac1d5f766d556a532fe", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-css-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "a03f2d10ce648aeb6ead81640bb0ac19d51dfc02", + "mixed-content/link-css-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "d576b5a595397da44d77511c0113c17b7ce1ab63", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/link-css-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "ec2ef32e47690b64cdfda25e21021b13f7d5a73f", + "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html": [ - "ed71a01c978180e6aa46334413cfb4bf8b88583a", + "mixed-content/link-css-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "30a0da5f517ebcd5aabeb83f643f95adecbf0020", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "73d2502e467486f0f6d36334d054faa8633ecb98", + "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "4d2f1df622377ac842c2d6da88fa3fc6b685e32e", + "mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ + "f586b47be1e7c0ec813be913c9fbefad81a0e3fa", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "e3257526e74e3f48ee9d03e9d0fbcbdb80052924", + "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "a05a81adc5bb1053cad2c3925137713cf6b46aee", + "mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "a0320c0c7a3c0ef91bf9b4e87d98fd08b68f4b04", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ + "a2fc6bdb285691f5bbf66e37e69d9f8260fed461", + "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html": [ - "4dee268f091d9177f643c9124f67f5c4485dd5cf", + "mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "bee9616c4fa9bdc792bdcbccdf340bf08f086150", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/link-css-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "5f385b92afdf5a2049f255f1551c823ec85d8770", + "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "6ee9f3e5cf9c4ec02c4f120967e1c244cbc68fa6", + "mixed-content/link-css-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "0e215b6c8f95aea079d53dca4e18e513c50ef9c0", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "013eb078c215d37a8a52f266beaf9d3871fee401", + "testharness" + ], + "mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html": [ - "6b9c88d92064dbbdd07b92345d063eaec5f68713", + "mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "c10fe679c6cb2d69d5c6eaaa985d7d0aebf9e86a", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html.headers": [ + "mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html": [ - "691023bc8308fdc29ddad998e6ab499495c5f5c7", + "mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "f07bd06527b7c4210c408a3593f5142f5ad47213", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html.headers": [ + "mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html": [ - "b5ad573ce748c77d37c2e0449819966194a2cb23", + "mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "82b2035593f5408f7c3e53b640cca2f14214c606", "testharness" ], - "mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html.headers": [ + "mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "e625621687fe9848f088e9ca72d2d5a07f860dd3", + "mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "0671d48855fd3fc222e13579c7b9cc10ec822898", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html": [ - "4420b87a357725ceaf7814bee7fbeb5aa6159bcd", + "mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "11a64084b74832bef705a46b1ef006b2e51d9bca", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "d19049e9e686331250dadd2474d7efff8fb2237f", + "mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "87150a15ec0814bf4d9ef31b2175a61be656daa1", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "74435ce01c94ed8aa8d04601a60e4b3adb3a8644", + "mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "f99ce220a83d0a6f3a2cc3fa3d288fa771990768", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "7df4d4b358944e2b1d0b0d97cc117b3c76699c3f", + "mixed-content/link-prefetch-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "bc56ec3ab4cc4e13527189fb43f36ebb27fa71c0", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/link-prefetch-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "ce3eb59ff993f2731c6af61806217caf7f6c3bbd", + "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "add636ede59cbd992aebd9765c228c5669cde969", + "mixed-content/link-prefetch-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "d1fea7e4b5e32b88797cdfaea1deaced699e3a80", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "baed43b2d575d296fea4d71452adea468bd02fc0", + "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "d6d3e22e61141fb9f788845bd90d5f358ee1fce2", + "mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "8995bfa6816c2697dc449675768727abd5ecb266", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "2b4266e2798cffa4df8085d85dc6192151125d13", + "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "c2e6a6d9b819ab539585e9c525b32139ba64357c", + "mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "34f1424d91ee6bbe1f0c6aa46e307104443f70bd", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "62a276c360cb5540fe5decc2f388d4c667007a9b", + "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "094bab59c31b19dc57b7f37a2a9fb4e4a15f009f", + "mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "b98e1a5a55b229fabc73ff520e93d1aae5786a84", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/link-prefetch-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "fcde72bedd849665aea76ee1b1725a850a0b063c", + "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "01395c96e354c0af36515eb7b0ad6e765036bcf7", + "mixed-content/link-prefetch-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "0ba5da404b387e28c64c18fae6264df2922b363a", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/object-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "9846bf56c8aae52383ea4d3c2f57b6465c41e8c2", + "testharness" + ], + "mixed-content/object-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "47531b96c24769e26c351dd674860675006bac0e", + "mixed-content/object-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "ba66dc6b0f3a9806a71ecc3b338bf2c05324b164", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/object-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "36e152879abe90057cabd70a968c249963732158", + "mixed-content/object-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "e2983c5ab711c5e5f774bfb83b5995543cc80902", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/object-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/object-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ "fd47588e79f522d8dee27aa9d0a84b9b6601e32b", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/object-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/object-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ "c1af3b62c95c3ab6e546dd254e29740a59755b5c", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/object-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ + "mixed-content/object-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ "c78e4550af6fd09317198fc9bc7320893e0d40e3", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/object-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "814046620038dfefc228cd03f7f7f2baad484001", + "mixed-content/object-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "4ea352d10d68e7a09b494534837d04877c0833b3", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/object-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "8d4604a30bab54e269b0136d57c8bdf41ee29a65", + "mixed-content/object-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "4cf12d89f0f98a283bc123f44be3ad0e8154be95", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/object-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "cbb64c2ca8e5a607492a1b87c913183b863207e8", + "mixed-content/object-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "09f76ce129d6cf3aa657364096bb5db0b5494fbb", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" - ], - "mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "6bbec3f09f74b6629b92635847ea1fe638fb4810", + "mixed-content/object-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "80231d8f74e6eef51cfe8d17f65e0bd4ecd1a486", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/object-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "aff6c1addf9175f05d92eb428d0c9e11d38f848a", + "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "8f2a257a819d5fbc575a91dcb7912c0cc4f9e276", + "mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "94faefefb051f2968d1e0ee07e15cda7036a5891", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ + "0442965d6e430177a0e077fed605bce319881970", + "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "667d1f0e2b2bfe88332582aafd35a98abc69242a", + "mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "ccfde2b296a3d52de27fd71b02efe41559c60b6c", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/object-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "c10ff7480b86efb7c2611df68de0b6f12cbecf7f", + "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "d521eef60aed44bda303f4fd9a489a1da57c484a", + "mixed-content/object-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ + "77f302421296a3f6ed4e434047408b3501ee1f84", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/object-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "93c5cdb58d33827b7ad31c1a3ca04ed6c851c3bd", + "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html": [ - "1aa1b1c1671f6af5414c00c1ae69cb4ed21bb8db", + "mixed-content/object-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "d0757e9a96f38ef1783438c798be3bce7b81e7ec", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/object-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "eacb8d4787918f3d6721833dabdf9163775129c3", + "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "118e34520665f3f18653560b134294757bb13677", + "mixed-content/picture-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "74ee909bb1113ed447e492e8d69ffbf0396f52fa", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/picture-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "9078db166f3192631b0ff9ce1aded81dc69c48f0", + "mixed-content/picture-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "1269f955175202b38a101b41e39a501adcc20318", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/picture-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html": [ - "bfbfa521d0cd88ef4d0ef2afd8734a947d4b1afc", + "mixed-content/picture-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "734adc8316240fc0c59f894f8e1afb4cab96b5bc", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/picture-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "dcc79a06477815beedcc28e96caaafb5e7a6952a", + "mixed-content/picture-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "814046620038dfefc228cd03f7f7f2baad484001", "testharness" ], - "mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/picture-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html": [ - "4803f9a0af1905d66e25e7acccf206b91161122b", + "mixed-content/picture-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "8d4604a30bab54e269b0136d57c8bdf41ee29a65", "testharness" ], - "mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html.headers": [ + "mixed-content/picture-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html": [ - "06fe8b272d387c07963fcd4a5c71b0dc5e336055", + "mixed-content/picture-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "cbb64c2ca8e5a607492a1b87c913183b863207e8", "testharness" ], - "mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html.headers": [ + "mixed-content/picture-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html": [ - "2b6d45a1d2863299d52b9d705a3276b1f26f8eaf", + "mixed-content/picture-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "c05dd84ba000e6675578e17cf6648e9bea6ce984", "testharness" ], - "mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html.headers": [ + "mixed-content/picture-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/blockable/meta-csp/cross-origin-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html": [ - "d3f5d8b8cb9fa0b3c0826e5f4cad0ed913e8d6d8", - "testharness" - ], - "mixed-content/blockable/meta-csp/cross-origin-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "0658ac8102eb4484a20ab5d7a72b895a04abe142", - "testharness" - ], - "mixed-content/blockable/meta-csp/cross-origin-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "4c18960396a7238e977114664b9e46d3d28e5c45", - "testharness" - ], - "mixed-content/blockable/meta-csp/cross-origin-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "d576b5a595397da44d77511c0113c17b7ce1ab63", + "mixed-content/picture-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "1cbc8f65282ee556a761e3ab9b65e7b5a19c2f39", "testharness" ], - "mixed-content/blockable/meta-csp/cross-origin-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "09f76ce129d6cf3aa657364096bb5db0b5494fbb", - "testharness" + "mixed-content/picture-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" ], - "mixed-content/blockable/meta-csp/cross-origin-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html": [ + "mixed-content/picture-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ "e9477ca6d86d559203160713a361e2e8d40f6f43", "testharness" ], - "mixed-content/blockable/meta-csp/cross-origin-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "71c181fe1f20693bc9e09cea5f7695367039f7e9", - "testharness" - ], - "mixed-content/blockable/meta-csp/cross-origin-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html": [ - "305468573dfa863a5df32d0e630d6b155facf61a", - "testharness" - ], - "mixed-content/blockable/meta-csp/cross-origin-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html": [ - "816c13985e7ad563cedcdd67917c48192c044129", - "testharness" - ], - "mixed-content/blockable/meta-csp/cross-origin-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html": [ - "a225e9696b04e277a74042824c7dc911183505c2", + "mixed-content/picture-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "29a087c7d7fc5098de0bacdce1be2c21d2ed08c4", "testharness" ], - "mixed-content/blockable/meta-csp/same-host-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html": [ - "850f14b73e3694681b40bebfa85311d424b08e03", + "mixed-content/picture-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "f93e80c420734892b2871987012b09a2aff02a6c", "testharness" ], - "mixed-content/blockable/meta-csp/same-host-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "801e8dfa3946c2a6924c12dac4aeab98962aa5bb", + "mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "d0252ca68cce41f5119cd712eeb554c829c7d159", "testharness" ], - "mixed-content/blockable/meta-csp/same-host-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "cba39dadaea345956a12d9cf4e7398c410e46e05", + "mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ + "025548c39db624872c1e585d0ced245a7f6aaa10", "testharness" ], - "mixed-content/blockable/meta-csp/same-host-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "ec2ef32e47690b64cdfda25e21021b13f7d5a73f", + "mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "357bdfe7c0fdc3ee26b491360ea02e14ef43e895", "testharness" ], - "mixed-content/blockable/meta-csp/same-host-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "80231d8f74e6eef51cfe8d17f65e0bd4ecd1a486", + "mixed-content/picture-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "9d16e4441853ecea2af23daf2e995c3c1e8d023b", "testharness" ], - "mixed-content/blockable/meta-csp/same-host-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "29a087c7d7fc5098de0bacdce1be2c21d2ed08c4", + "mixed-content/picture-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ + "045c10ef5cffeeba485b9184baf193193f8bb37b", "testharness" ], - "mixed-content/blockable/meta-csp/same-host-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "4036b7616ca2decf0caa2da126366c665223b29a", + "mixed-content/picture-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "89bb7e2e7d22dd99f8d4af4dcf5ac64179095cb3", "testharness" ], - "mixed-content/blockable/meta-csp/same-host-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html": [ - "9b1254a85fc448c923590a4676a250a48ec09141", + "mixed-content/picture-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "618704362f25e8f71fb43ec2e8412f2771be7aee", "testharness" ], - "mixed-content/blockable/meta-csp/same-host-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html": [ - "1e18c27f72a237a4343bc8da4112b5eb54d3a483", + "mixed-content/picture-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "f5755364f4c91973c9a554bdf0c12dc50338f0b6", "testharness" ], - "mixed-content/blockable/meta-csp/same-host-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html": [ - "8e304be8f31ceda4704fceacbea55bfa480a763b", + "mixed-content/script-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "e53fefbcca3276f2df412aea464a9b22edc814b0", "testharness" ], - "mixed-content/blockable/no-opt-in/cross-origin-http/fetch-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ - "d320e549cc30ba94961be1b50caf86074a20cb9b", - "testharness" + "mixed-content/script-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" ], - "mixed-content/blockable/no-opt-in/cross-origin-http/fetch-request/top-level/no-redirect/no-opt-in-blocks.https.html": [ - "f8f6b18685d0bf2a351ca2b0e364d4e5ad28fbff", + "mixed-content/script-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "74de74754cb3eff1ee36cdedc8fe4b462e74d981", "testharness" ], - "mixed-content/blockable/no-opt-in/cross-origin-http/fetch-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ - "3c6bd158494d8407dda0eb0fa70b6e426de82da1", - "testharness" + "mixed-content/script-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" ], - "mixed-content/blockable/no-opt-in/cross-origin-http/form-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ - "2933da17f32832dfe51a97dc2a32a69e93015663", + "mixed-content/script-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "4caee58efa828f1f22652c6277f211f062b65a84", "testharness" ], - "mixed-content/blockable/no-opt-in/cross-origin-http/form-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ - "68d632b99f1a8b4d9fa98b2430b07b885d9029ee", - "testharness" + "mixed-content/script-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" ], - "mixed-content/blockable/no-opt-in/cross-origin-http/form-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ - "830c46e73d1f2f52c5f27fa1eabd1c55e53f7521", + "mixed-content/script-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "6bbec3f09f74b6629b92635847ea1fe638fb4810", "testharness" ], - "mixed-content/blockable/no-opt-in/cross-origin-http/iframe-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ - "f8c5334989380b7de82057e72402cacff67c6eaf", - "testharness" + "mixed-content/script-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" ], - "mixed-content/blockable/no-opt-in/cross-origin-http/iframe-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ - "288adad55f4c2bf013f8c11af4bd097341d56e13", + "mixed-content/script-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "8f2a257a819d5fbc575a91dcb7912c0cc4f9e276", "testharness" ], - "mixed-content/blockable/no-opt-in/cross-origin-http/iframe-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ - "8e660870d237c4252f14fa298f8434ff0609fb9b", - "testharness" + "mixed-content/script-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" ], - "mixed-content/blockable/no-opt-in/cross-origin-http/link-css-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ - "73d2502e467486f0f6d36334d054faa8633ecb98", + "mixed-content/script-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "667d1f0e2b2bfe88332582aafd35a98abc69242a", "testharness" ], - "mixed-content/blockable/no-opt-in/cross-origin-http/link-css-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ - "f586b47be1e7c0ec813be913c9fbefad81a0e3fa", - "testharness" + "mixed-content/script-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" ], - "mixed-content/blockable/no-opt-in/cross-origin-http/link-css-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ - "e3257526e74e3f48ee9d03e9d0fbcbdb80052924", + "mixed-content/script-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "f4455e3d16f68f7748eeb9f9455f10869622a701", "testharness" ], - "mixed-content/blockable/no-opt-in/cross-origin-http/object-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ - "94faefefb051f2968d1e0ee07e15cda7036a5891", - "testharness" + "mixed-content/script-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" ], - "mixed-content/blockable/no-opt-in/cross-origin-http/object-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ - "0442965d6e430177a0e077fed605bce319881970", + "mixed-content/script-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "0ae053a8a446ad06f84200621124ebe5cd82ee63", "testharness" ], - "mixed-content/blockable/no-opt-in/cross-origin-http/object-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ - "ccfde2b296a3d52de27fd71b02efe41559c60b6c", - "testharness" + "mixed-content/script-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" ], - "mixed-content/blockable/no-opt-in/cross-origin-http/picture-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ - "d0252ca68cce41f5119cd712eeb554c829c7d159", + "mixed-content/script-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "71c181fe1f20693bc9e09cea5f7695367039f7e9", "testharness" ], - "mixed-content/blockable/no-opt-in/cross-origin-http/picture-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ - "025548c39db624872c1e585d0ced245a7f6aaa10", + "mixed-content/script-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "4036b7616ca2decf0caa2da126366c665223b29a", "testharness" ], - "mixed-content/blockable/no-opt-in/cross-origin-http/picture-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ - "357bdfe7c0fdc3ee26b491360ea02e14ef43e895", + "mixed-content/script-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "0575fd64689c5b0f3970bdad033fe944ff6644bb", "testharness" ], - "mixed-content/blockable/no-opt-in/cross-origin-http/script-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ "ba0eabc6fbbc306c00fef83c92068522eac4e252", "testharness" ], - "mixed-content/blockable/no-opt-in/cross-origin-http/script-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ "6e44c9b545c65120bf141a4607dc699fc7d0ff65", "testharness" ], - "mixed-content/blockable/no-opt-in/cross-origin-http/script-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ + "mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ "afb0e3ceab5ef3546c141fcb4a59bc2534ad6f96", "testharness" ], - "mixed-content/blockable/no-opt-in/cross-origin-http/worker-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ - "bcf79c2ac994f0693cc365fe39d6b688b56478e3", - "testharness" - ], - "mixed-content/blockable/no-opt-in/cross-origin-http/worker-request/top-level/no-redirect/no-opt-in-blocks.https.html": [ - "83875afdad45086319362997c8f63eac33de26e6", - "testharness" - ], - "mixed-content/blockable/no-opt-in/cross-origin-http/worker-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ - "c5e6681e8ba41f87008f8ecaef22d6884b027cf4", - "testharness" - ], - "mixed-content/blockable/no-opt-in/cross-origin-http/xhr-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ - "19b2b2997f3a25a5dd6cde1f84ba747bb19825bc", - "testharness" - ], - "mixed-content/blockable/no-opt-in/cross-origin-http/xhr-request/top-level/no-redirect/no-opt-in-blocks.https.html": [ - "95fbdacd48340ce461be960949be3e7b9ab2764b", - "testharness" - ], - "mixed-content/blockable/no-opt-in/cross-origin-http/xhr-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ - "e31bb3f3e52c40975424856b69d7469abda02b8e", - "testharness" - ], - "mixed-content/blockable/no-opt-in/cross-origin-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html": [ - "dc8446670136131eac95054e6a38b53c9bf4fd2d", + "mixed-content/script-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "eff14051b0d96ac2912a2c08627ae83ffa670c32", "testharness" ], - "mixed-content/blockable/no-opt-in/cross-origin-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html": [ - "506b4deca771b691d19ee61fa034edeb4fa7ae1d", + "mixed-content/script-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ + "673c25054941a7418d9e2d58cc15989af60dff49", "testharness" ], - "mixed-content/blockable/no-opt-in/cross-origin-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html": [ - "4be081e0c1f8c19090172b0e4af398914343a1e3", + "mixed-content/script-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "9d1e3a182216aca29bf3d0533c4eb4146a12439f", "testharness" ], - "mixed-content/blockable/no-opt-in/same-host-http/fetch-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ - "ca379c4b2d6461b149d4b6d9cc3bdb60ab43af74", + "mixed-content/script-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "cac312888c207c6b0c0f7aa9691f528881595eb3", "testharness" ], - "mixed-content/blockable/no-opt-in/same-host-http/fetch-request/top-level/no-redirect/no-opt-in-blocks.https.html": [ - "06985706784e23cf0bb35338c4486efd9d1c5697", + "mixed-content/script-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "f87d399643fdbdc7135e1db1fd9b3ff9c9a4bbec", "testharness" ], - "mixed-content/blockable/no-opt-in/same-host-http/fetch-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ - "8143606c5c55cf172a74969391f1207aa81f2b56", - "testharness" + "mixed-content/spec.src.json": [ + "5edaa65af1b7d9f8941442dfec71e087d521c22e", + "support" ], - "mixed-content/blockable/no-opt-in/same-host-http/form-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ - "56414b8f71fa21fc3899a527ae1c1657703fe034", - "testharness" + "mixed-content/spec_json.js": [ + "212f362ad9a8828575eaca2b003a83a2276b3faa", + "support" ], - "mixed-content/blockable/no-opt-in/same-host-http/form-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ - "b1a24bb9ebd3f28d11681a262c433c9bcfd062de", + "mixed-content/video-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "7d8287e92f8bf9390ee288859bce6a53e2ef10f5", "testharness" ], - "mixed-content/blockable/no-opt-in/same-host-http/form-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ - "d2d7c2422f621514128cde2f706bf24df6dfa85b", - "testharness" + "mixed-content/video-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" ], - "mixed-content/blockable/no-opt-in/same-host-http/iframe-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ - "4271e5052b787c14779ec8c490161b7aa1cda2ed", + "mixed-content/video-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "4a26f10611caf659f57af1287aab4685ac110443", "testharness" ], - "mixed-content/blockable/no-opt-in/same-host-http/iframe-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ - "22323c1a234976ee583c4a0dd5ebfd7ae4429910", - "testharness" + "mixed-content/video-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" ], - "mixed-content/blockable/no-opt-in/same-host-http/iframe-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ - "1e819fb1b0b8666b8ac540dde34fa25e677c13a0", + "mixed-content/video-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "0b2db89b6bb92ecf6e8f8014140f7c1f10477f2a", "testharness" ], - "mixed-content/blockable/no-opt-in/same-host-http/link-css-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ - "a0320c0c7a3c0ef91bf9b4e87d98fd08b68f4b04", - "testharness" + "mixed-content/video-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" ], - "mixed-content/blockable/no-opt-in/same-host-http/link-css-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ - "a2fc6bdb285691f5bbf66e37e69d9f8260fed461", + "mixed-content/video-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "e4fe14b8c7355422c20cd1c2f4f33437dddb7e02", "testharness" ], - "mixed-content/blockable/no-opt-in/same-host-http/link-css-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ - "bee9616c4fa9bdc792bdcbccdf340bf08f086150", - "testharness" + "mixed-content/video-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" ], - "mixed-content/blockable/no-opt-in/same-host-http/object-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ - "c10ff7480b86efb7c2611df68de0b6f12cbecf7f", + "mixed-content/video-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "1c6d741645d9b41a3847f1da157337674c3ae19b", "testharness" ], - "mixed-content/blockable/no-opt-in/same-host-http/object-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ - "77f302421296a3f6ed4e434047408b3501ee1f84", - "testharness" + "mixed-content/video-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" ], - "mixed-content/blockable/no-opt-in/same-host-http/object-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ - "93c5cdb58d33827b7ad31c1a3ca04ed6c851c3bd", + "mixed-content/video-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "5df12ad26931920476ecb418c86c39ed4db0445c", "testharness" ], - "mixed-content/blockable/no-opt-in/same-host-http/picture-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ - "9d16e4441853ecea2af23daf2e995c3c1e8d023b", - "testharness" + "mixed-content/video-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" ], - "mixed-content/blockable/no-opt-in/same-host-http/picture-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ - "045c10ef5cffeeba485b9184baf193193f8bb37b", + "mixed-content/video-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "3e5e01b52ef7a96b3dc41a5fd65af5ad14474a4d", "testharness" ], - "mixed-content/blockable/no-opt-in/same-host-http/picture-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ - "89bb7e2e7d22dd99f8d4af4dcf5ac64179095cb3", - "testharness" + "mixed-content/video-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" ], - "mixed-content/blockable/no-opt-in/same-host-http/script-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ - "eff14051b0d96ac2912a2c08627ae83ffa670c32", + "mixed-content/video-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "1bda6a05728b96428037c271a79a621158600136", "testharness" ], - "mixed-content/blockable/no-opt-in/same-host-http/script-tag/top-level/no-redirect/no-opt-in-blocks.https.html": [ - "673c25054941a7418d9e2d58cc15989af60dff49", - "testharness" + "mixed-content/video-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" ], - "mixed-content/blockable/no-opt-in/same-host-http/script-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ - "9d1e3a182216aca29bf3d0533c4eb4146a12439f", + "mixed-content/video-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "f9829ff242b6cb60deb52560d98c5b4415257598", "testharness" ], - "mixed-content/blockable/no-opt-in/same-host-http/worker-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ - "b41e5b6237f7ec850bafe64e76c0109b2a9e8ab5", + "mixed-content/video-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html": [ + "cf89b222539b6fb932f0ffb226b4584c55bd7b0b", "testharness" ], - "mixed-content/blockable/no-opt-in/same-host-http/worker-request/top-level/no-redirect/no-opt-in-blocks.https.html": [ - "a8f0169f868178de2ab37b0df54b9872a7ed472f", + "mixed-content/video-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "a55b1cc03051118df894858733f91cb794ed893e", "testharness" ], - "mixed-content/blockable/no-opt-in/same-host-http/worker-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ - "f7d9111010f455a27d8ac16e059ae916d752db9e", + "mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "80519194240ebaebe70a1782d972fb5e1641f5a1", "testharness" ], - "mixed-content/blockable/no-opt-in/same-host-http/xhr-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html": [ - "9056f80a591260d1aa42ee7736d0311aaa2715d2", + "mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "91ad70b49d688006d8d560aa536d6d46a8de1275", "testharness" ], - "mixed-content/blockable/no-opt-in/same-host-http/xhr-request/top-level/no-redirect/no-opt-in-blocks.https.html": [ - "1740e8e89a8745045c1ba9bede52e8254cd9a761", + "mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "72e3fa99e486be0aedd623da3beb2d8b0b745ad1", "testharness" ], - "mixed-content/blockable/no-opt-in/same-host-http/xhr-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html": [ - "1465e83fe04abfec639018b0568f49e2543b2774", + "mixed-content/video-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "67b828060540ab4abb8d7070a3a777dcb6b764c4", "testharness" ], - "mixed-content/blockable/no-opt-in/same-host-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html": [ - "f35738cbdb85f1f8e4c10ecc34db364df56553e2", + "mixed-content/video-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "f366b0f28d087b46c7e1b8787012b0427a5c668e", "testharness" ], - "mixed-content/blockable/no-opt-in/same-host-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html": [ - "6220bb3c6e9fe2938179e11c46ee027b04961cfd", + "mixed-content/video-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html": [ + "845e3332f83a552ba268bd369089cd408c5c9ed1", "testharness" ], - "mixed-content/blockable/no-opt-in/same-host-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html": [ - "bd927296c023ec51f5817b5e5cd7d7950aac0c64", + "mixed-content/video-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "3ac75e4ddf21586beec825628aa421ce66b3eb51", "testharness" ], - "mixed-content/generic/common.js": [ - "da5a387c0e7f5713d3648be567261d0c24e3935c", - "support" - ], - "mixed-content/generic/expect.py": [ - "df0c65ee2cf95134dd0d0b8dcb86a734e6ec57df", - "support" - ], - "mixed-content/generic/mixed-content-test-case.js": [ - "4ea725dcae414b44768bdb59b7686c8dc97fdfdb", - "support" - ], - "mixed-content/generic/sanity-checker.js": [ - "baa34825a23d70a8df1a4feeffe6c866c2b0b062", - "support" - ], - "mixed-content/generic/template/disclaimer.template": [ - "24505625da3aee99cb1d26ec74f269c3d3384bd2", - "support" - ], - "mixed-content/generic/template/spec_json.js.template": [ - "a5e61678d2ee01e1d1852296ea1e49e0d933157c", - "support" - ], - "mixed-content/generic/template/test.debug.html.template": [ - "bb11c3e8855f7590ef1d496032f4357db5781f3b", - "support" - ], - "mixed-content/generic/template/test.js.template": [ - "99d185691af529f1a7b0c8d74844aefaae946e84", - "support" - ], - "mixed-content/generic/template/test.release.html.template": [ - "2febaa8ef270c96fe357684db77b9f7487a0156e", - "support" - ], - "mixed-content/generic/template/test_description.template": [ - "5c11ec4355d351f608adb189b6b1121073210ed4", - "support" - ], - "mixed-content/generic/tools/__init__.py": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", - "support" - ], - "mixed-content/generic/tools/clean.py": [ - "bd717c730c1edc9711a7429cf8827b8a4ba881c3", - "support" - ], - "mixed-content/generic/tools/common_paths.py": [ - "00eb1a2df18ee12da9ce8e145833221f6ed880bc", - "support" - ], - "mixed-content/generic/tools/generate.py": [ - "c5e384d4d778bcd887844395429cced9fb778ff1", - "support" - ], - "mixed-content/generic/tools/regenerate": [ - "d21629058407b1d734417990e1af2663405c6b7d", - "support" - ], - "mixed-content/generic/tools/spec_validator.py": [ - "b0bc2fc11415034f5c31c70f7eb8506a3f0d44bc", - "support" - ], - "mixed-content/generic/worker.js": [ - "6a0548ef4b906e539d89940aa791a78bba905262", - "support" - ], - "mixed-content/imageset.https.sub.html": [ - "e2005b813384f38b64baec9bc431e25aa61f417f", + "mixed-content/video-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "1c26515cb6831d895f537df85edb2c9709cae754", "testharness" ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "9219890ab0efa31e4f2db0646e12882da3a5443d", + "mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html": [ + "6b9c88d92064dbbdd07b92345d063eaec5f68713", "testharness" ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "c33974dee06173caa92430a84101a8f22a137910", + "mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html": [ + "691023bc8308fdc29ddad998e6ab499495c5f5c7", "testharness" ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "340cc44b5a863f482a03201080314fea34955270", + "mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html": [ + "b5ad573ce748c77d37c2e0449819966194a2cb23", "testharness" ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "3297aaed5d30a40eaed000e51515bd497d4b4556", + "mixed-content/websocket-request/http-csp/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html": [ + "4803f9a0af1905d66e25e7acccf206b91161122b", "testharness" ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/websocket-request/http-csp/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "b9836f4fea55f02113c5f4aa67e45251e259995c", + "mixed-content/websocket-request/http-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html": [ + "06fe8b272d387c07963fcd4a5c71b0dc5e336055", "testharness" ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/websocket-request/http-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "0ef4da59f9710f632992bcc92df91dc9864e97d0", + "mixed-content/websocket-request/http-csp/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html": [ + "2b6d45a1d2863299d52b9d705a3276b1f26f8eaf", "testharness" ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/websocket-request/http-csp/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "013eb078c215d37a8a52f266beaf9d3871fee401", + "mixed-content/websocket-request/http-csp/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html": [ + "17a051ff8fff1ecc46aaaa50a2bf7461ab6d6917", "testharness" ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/websocket-request/http-csp/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "c10fe679c6cb2d69d5c6eaaa985d7d0aebf9e86a", + "mixed-content/websocket-request/http-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html": [ + "7f90901fe5882f4d40c6684cfd79a56639df8190", "testharness" ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/websocket-request/http-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "f07bd06527b7c4210c408a3593f5142f5ad47213", + "mixed-content/websocket-request/meta-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html": [ + "a225e9696b04e277a74042824c7dc911183505c2", "testharness" ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" - ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "7d8287e92f8bf9390ee288859bce6a53e2ef10f5", + "mixed-content/websocket-request/meta-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html": [ + "8e304be8f31ceda4704fceacbea55bfa480a763b", "testharness" ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" - ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "4a26f10611caf659f57af1287aab4685ac110443", + "mixed-content/websocket-request/meta-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html": [ + "e20eb313f66981ae7bb650a19d8fd61f62b5bd9b", "testharness" ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" - ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "0b2db89b6bb92ecf6e8f8014140f7c1f10477f2a", + "mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html": [ + "dc8446670136131eac95054e6a38b53c9bf4fd2d", "testharness" ], - "mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" - ], - "mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "d7cea0c41a045d0bf87f8fb7d8a1d24b18b746ac", + "mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html": [ + "506b4deca771b691d19ee61fa034edeb4fa7ae1d", "testharness" ], - "mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" - ], - "mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "a0d561f2e6331bb7396f1d95c85bfeb5a3b7f035", + "mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html": [ + "4be081e0c1f8c19090172b0e4af398914343a1e3", "testharness" ], - "mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html": [ + "f35738cbdb85f1f8e4c10ecc34db364df56553e2", + "testharness" ], - "mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "0daaaa67f3edbf3499fa7fc1d33eca4b29ff817f", + "mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html": [ + "6220bb3c6e9fe2938179e11c46ee027b04961cfd", "testharness" ], - "mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html": [ + "bd927296c023ec51f5817b5e5cd7d7950aac0c64", + "testharness" ], - "mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "d9f8a4ef0df19c5869cdc45913a5cd086fad67d8", + "mixed-content/websocket-request/no-opt-in/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html": [ + "bc2047414c044ac1a9c5efeef6a53dbccd0eab0e", "testharness" ], - "mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ - "562977daf4fd9e09dc6153058804bc247cbe5354", - "support" + "mixed-content/websocket-request/no-opt-in/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html": [ + "bebcdea2930456cab89c92fe28acef2f22520868", + "testharness" ], - "mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "18b7424b5ac56658a6eb352e1756d171232914a7", + "mixed-content/worker-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "a03f2d10ce648aeb6ead81640bb0ac19d51dfc02", "testharness" ], - "mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/worker-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "30e42b02b2e4219e34f14c1db9f9f36661a252e3", + "mixed-content/worker-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "ed71a01c978180e6aa46334413cfb4bf8b88583a", "testharness" ], - "mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/worker-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "82b2035593f5408f7c3e53b640cca2f14214c606", + "mixed-content/worker-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "4d2f1df622377ac842c2d6da88fa3fc6b685e32e", "testharness" ], - "mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/worker-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "0671d48855fd3fc222e13579c7b9cc10ec822898", + "mixed-content/worker-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "d521eef60aed44bda303f4fd9a489a1da57c484a", "testharness" ], - "mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/worker-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "11a64084b74832bef705a46b1ef006b2e51d9bca", + "mixed-content/worker-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "1aa1b1c1671f6af5414c00c1ae69cb4ed21bb8db", "testharness" ], - "mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/worker-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html": [ - "e4fe14b8c7355422c20cd1c2f4f33437dddb7e02", + "mixed-content/worker-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "118e34520665f3f18653560b134294757bb13677", "testharness" ], - "mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/worker-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "1c6d741645d9b41a3847f1da157337674c3ae19b", + "mixed-content/worker-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "6e7169ab385dd2f55470e072ea92eba5e3b8824f", "testharness" ], - "mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/worker-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html": [ - "5df12ad26931920476ecb418c86c39ed4db0445c", + "mixed-content/worker-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "92010e28430c2f95effc17bc0db065a5c4c1daef", "testharness" ], - "mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers": [ + "mixed-content/worker-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ "562977daf4fd9e09dc6153058804bc247cbe5354", "support" ], - "mixed-content/optionally-blockable/meta-csp/cross-origin-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "14b799cd9bbff4752cd1bfe2c02ca289ae890dbb", + "mixed-content/worker-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "305468573dfa863a5df32d0e630d6b155facf61a", "testharness" ], - "mixed-content/optionally-blockable/meta-csp/cross-origin-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "567ddeb24116c1baff970033edaf0d4dc0da6be3", + "mixed-content/worker-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "9b1254a85fc448c923590a4676a250a48ec09141", "testharness" ], - "mixed-content/optionally-blockable/meta-csp/cross-origin-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "bc56ec3ab4cc4e13527189fb43f36ebb27fa71c0", + "mixed-content/worker-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "2c86c9ea5db3726274091327ce5d6573306af093", "testharness" ], - "mixed-content/optionally-blockable/meta-csp/cross-origin-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "f9829ff242b6cb60deb52560d98c5b4415257598", + "mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "bcf79c2ac994f0693cc365fe39d6b688b56478e3", "testharness" ], - "mixed-content/optionally-blockable/meta-csp/same-host-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "8c8cf399a760e744c54c08a990ab1da514409e5a", + "mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ + "83875afdad45086319362997c8f63eac33de26e6", "testharness" ], - "mixed-content/optionally-blockable/meta-csp/same-host-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "a19d2471f64b54a094a78bbbe9c6725e6d6f622b", + "mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "c5e6681e8ba41f87008f8ecaef22d6884b027cf4", "testharness" ], - "mixed-content/optionally-blockable/meta-csp/same-host-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "ce3eb59ff993f2731c6af61806217caf7f6c3bbd", + "mixed-content/worker-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "b41e5b6237f7ec850bafe64e76c0109b2a9e8ab5", "testharness" ], - "mixed-content/optionally-blockable/meta-csp/same-host-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html": [ - "cf89b222539b6fb932f0ffb226b4584c55bd7b0b", + "mixed-content/worker-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ + "a8f0169f868178de2ab37b0df54b9872a7ed472f", "testharness" ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/audio-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html": [ - "a78a3c8b9950ca95859c98837d86540ed7074633", + "mixed-content/worker-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "f7d9111010f455a27d8ac16e059ae916d752db9e", "testharness" ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/audio-tag/top-level/no-redirect/no-opt-in-allows.https.html": [ - "c4f7ba79294030cae5439e7d46b3a7d24a01fdf4", + "mixed-content/worker-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "1995b32e30a3a6e970268d8baf734c39512a91d1", "testharness" ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/audio-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html": [ - "fab6658b6b049386ff531ffbd38ef0a923eb7e94", + "mixed-content/worker-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "320025af3c5a47640a9dab5792160c7c14de917d", "testharness" ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/img-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html": [ - "fbb072d21734ec0387417e01c44420f36be2ea4e", + "mixed-content/xhr-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "a05a81adc5bb1053cad2c3925137713cf6b46aee", "testharness" ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/img-tag/top-level/no-redirect/no-opt-in-allows.https.html": [ - "13816e08b8649393a7c31d61e47e759068f88c76", - "testharness" + "mixed-content/xhr-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/img-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html": [ - "130ab390be334b9695b83c5396ac676e984be8ee", + "mixed-content/xhr-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "4dee268f091d9177f643c9124f67f5c4485dd5cf", "testharness" ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/link-prefetch-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html": [ - "baed43b2d575d296fea4d71452adea468bd02fc0", - "testharness" + "mixed-content/xhr-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/link-prefetch-tag/top-level/no-redirect/no-opt-in-allows.https.html": [ - "8995bfa6816c2697dc449675768727abd5ecb266", + "mixed-content/xhr-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "6ee9f3e5cf9c4ec02c4f120967e1c244cbc68fa6", "testharness" ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/link-prefetch-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html": [ - "2b4266e2798cffa4df8085d85dc6192151125d13", - "testharness" + "mixed-content/xhr-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/video-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html": [ - "80519194240ebaebe70a1782d972fb5e1641f5a1", + "mixed-content/xhr-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "9078db166f3192631b0ff9ce1aded81dc69c48f0", "testharness" ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/video-tag/top-level/no-redirect/no-opt-in-allows.https.html": [ - "91ad70b49d688006d8d560aa536d6d46a8de1275", - "testharness" + "mixed-content/xhr-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" ], - "mixed-content/optionally-blockable/no-opt-in/cross-origin-http/video-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html": [ - "72e3fa99e486be0aedd623da3beb2d8b0b745ad1", + "mixed-content/xhr-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "bfbfa521d0cd88ef4d0ef2afd8734a947d4b1afc", "testharness" ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/audio-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html": [ - "73429ee5cb2de97bda1090156d9bb3f716fcce4d", + "mixed-content/xhr-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" + ], + "mixed-content/xhr-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html": [ + "dcc79a06477815beedcc28e96caaafb5e7a6952a", "testharness" ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/audio-tag/top-level/no-redirect/no-opt-in-allows.https.html": [ - "64069b6bbac147b17e29d53143fe136944de0daf", + "mixed-content/xhr-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" + ], + "mixed-content/xhr-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "659b52cf363720e1754889509017ce3a53aa88f3", "testharness" ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/audio-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html": [ - "5692d6f7cc2c237a203de6c5a73ff6d6fcb9fc27", + "mixed-content/xhr-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" + ], + "mixed-content/xhr-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "ebcc61a954dc69e2a008b9dc49b400dd62817d60", "testharness" ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/img-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html": [ - "51e46bfe0a9ff9e06e6c8097ce28aada274c7338", + "mixed-content/xhr-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers": [ + "562977daf4fd9e09dc6153058804bc247cbe5354", + "support" + ], + "mixed-content/xhr-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "816c13985e7ad563cedcdd67917c48192c044129", "testharness" ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/img-tag/top-level/no-redirect/no-opt-in-allows.https.html": [ - "6d99ccf84a81132846a1eee2e733914b533bce1d", + "mixed-content/xhr-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html": [ + "1e18c27f72a237a4343bc8da4112b5eb54d3a483", "testharness" ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/img-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html": [ - "753545df28dca7ca5897af13494f4d4197fa29e9", + "mixed-content/xhr-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "25f22da0d0ef7acbaface0ffff30b1abc8b53402", "testharness" ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/link-prefetch-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html": [ - "34f1424d91ee6bbe1f0c6aa46e307104443f70bd", + "mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "19b2b2997f3a25a5dd6cde1f84ba747bb19825bc", "testharness" ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/link-prefetch-tag/top-level/no-redirect/no-opt-in-allows.https.html": [ - "62a276c360cb5540fe5decc2f388d4c667007a9b", + "mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ + "95fbdacd48340ce461be960949be3e7b9ab2764b", "testharness" ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/link-prefetch-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html": [ - "b98e1a5a55b229fabc73ff520e93d1aae5786a84", + "mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "e31bb3f3e52c40975424856b69d7469abda02b8e", "testharness" ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/video-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html": [ - "67b828060540ab4abb8d7070a3a777dcb6b764c4", + "mixed-content/xhr-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "9056f80a591260d1aa42ee7736d0311aaa2715d2", "testharness" ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/video-tag/top-level/no-redirect/no-opt-in-allows.https.html": [ - "f366b0f28d087b46c7e1b8787012b0427a5c668e", + "mixed-content/xhr-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html": [ + "1740e8e89a8745045c1ba9bede52e8254cd9a761", "testharness" ], - "mixed-content/optionally-blockable/no-opt-in/same-host-http/video-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html": [ - "845e3332f83a552ba268bd369089cd408c5c9ed1", + "mixed-content/xhr-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html": [ + "1465e83fe04abfec639018b0568f49e2543b2774", "testharness" ], - "mixed-content/spec.src.json": [ - "8cc85c890a853de3d538cc771e7bd7f3a55cfdfa", - "support" + "mixed-content/xhr-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html": [ + "5f6030ee661ead982d88e8fa281c0ff82bb72f2d", + "testharness" ], - "mixed-content/spec_json.js": [ - "2fd556b87de54659b3b02647c24fd4033c134ad7", - "support" + "mixed-content/xhr-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html": [ + "531546fa4c30f76ed51c7771b9dca10de58d2df0", + "testharness" ], "navigation-timing/OWNERS": [ "c2a3959eb05532a40371104542bef38946abb19b", @@ -566413,7 +565515,7 @@ "testharness" ], "orientation-sensor/OrientationSensor_insecure_context.html": [ - "700603c508503fe859502f334153aaa7f5e6f511", + "eb64da888f1bedf9d5ed8b11edc1626da88b322b", "testharness" ], "orientation-sensor/OrientationSensor_onerror-manual.https.html": [ @@ -566421,7 +565523,7 @@ "manual" ], "orientation-sensor/idlharness.https.html": [ - "9301519eebff3db962bbeb148bf3dd3b1e305a23", + "97f82793f2afe9ba9946f181380ad41d69f6524a", "testharness" ], "page-visibility/OWNERS": [ @@ -567061,7 +566163,7 @@ "support" ], "pointerevents/pointerevent_support.js": [ - "f2ab5ea976ffd62c669fda2db1484a4733ce5b28", + "e185e068ac229f2516e1345dd151090eb60d7950", "support" ], "pointerevents/pointerevent_suppress_compat_events_on_click-manual.html": [ @@ -567780,6 +566882,10 @@ "00233e7d4513c8e3c4b7f7fa60f313ef1b6dbddd", "support" ], + "referrer-policy/generic/iframe-inheritance.html": [ + "67531ab9869113d138d781ed8d0c92eefa08ec3b", + "testharness" + ], "referrer-policy/generic/link-rel-prefetch.html": [ "96461340190f20f47a50b7fa4e6cdf9d2a7e09de", "testharness" @@ -575244,8 +574350,8 @@ "fe63f3ea133dbdb48b1a525a40d34a231e9a3789", "testharness" ], - "requestidlecallback/callback-timeout-with-raf.html": [ - "febb81c38f530c81d9e9837df2c6d603225ecfd1", + "requestidlecallback/callback-timeout-when-busy.html": [ + "bc78234c0fc6d793d755988643d09f5d56aedb48", "testharness" ], "requestidlecallback/callback-timeout.html": [ @@ -575261,7 +574367,7 @@ "testharness" ], "requestidlecallback/idlharness.html": [ - "520ee58982b43875f3caa08d7f46b9c6311be0b6", + "970dac3de43bddedb88e22c438fc01f76a6b9a41", "testharness" ], "requestidlecallback/resources/post_name_on_load.html": [ @@ -575513,11 +574619,11 @@ "support" ], "secure-contexts/basic-dedicated-worker.html": [ - "075f4170b133fe13e282ff5450871ef7960faf50", + "3e2dc8d37996552fc830ee6931f67091e83aa174", "testharness" ], "secure-contexts/basic-dedicated-worker.https.html": [ - "05beced009e36f577a1393f80198158f3d37063c", + "13ce3f1a8ef03b87cca968fd3710d968f35a2439", "testharness" ], "secure-contexts/basic-popup-and-iframe-tests.html": [ @@ -575529,7 +574635,7 @@ "testharness" ], "secure-contexts/basic-popup-and-iframe-tests.https.js": [ - "26c7c307334b8a0e10265cf6fe3664d84cdd72cc", + "edc438d81762f199c6e7ffa7f638f74d9b6af701", "support" ], "secure-contexts/basic-shared-worker.html": [ @@ -575557,7 +574663,7 @@ "testharness" ], "secure-contexts/shared-worker-secure-first.https.html": [ - "38c411b3a8fa1acf9d87e4f68c58a52f54c3d379", + "cdb342e7b302d5a0bf7d282788f0e0292a486285", "testharness" ], "secure-contexts/support/dedicated-worker-script.js": [ @@ -575565,7 +574671,7 @@ "support" ], "secure-contexts/support/https-subframe-dedicated.html": [ - "5a9c1cee739efbad41f2ef6c4d70eda1f7b01646", + "a022992d2cf1ac230bcbbb988b3e83c94c50957e", "support" ], "secure-contexts/support/https-subframe-shared.html": [ @@ -575573,11 +574679,11 @@ "support" ], "secure-contexts/support/parent-dedicated-worker-script.js": [ - "f30fd69030eb48c6d98f07f0f61cf7c75410991f", + "f900be624e6fbecbbfc164439f25045bb0612996", "support" ], "secure-contexts/support/parent-shared-worker-script.js": [ - "fe110557d01f13b1b62606bf39d4ed54ebb5eb23", + "a7b5ffa139addf2af9f40b088b8996e0a5a4d26d", "support" ], "secure-contexts/support/shared-worker-insecure-popup.html": [ @@ -575588,38 +574694,6 @@ "c9b3ac77b8c62131dbe0f7228071fc6bf5e5e838", "support" ], - "security/support/window-name-navigation.sub.html": [ - "f5e1ec7b0626f7f007bc75b66504bcc4ec47d4f2", - "support" - ], - "security/support/window-name-test.sub.html": [ - "841e6ebed7f83a59b4942be07452ad5c9b8f6519", - "support" - ], - "security/window-name-after-cross-origin-aux-frame-navigation.sub.html": [ - "16dfcc1f1628c9dab89470a421138ffde85e866a", - "testharness" - ], - "security/window-name-after-cross-origin-main-frame-navigation.sub.html": [ - "74c59d584d8523ce523a26452767d6212d010234", - "testharness" - ], - "security/window-name-after-cross-origin-sub-frame-navigation.sub.html": [ - "498803de18a2ac26f3d5bb19a470ad058cefa9ac", - "testharness" - ], - "security/window-name-after-same-origin-aux-frame-navigation.sub.html": [ - "2b0496b919110cc5996c79afdd420905e1d48ea6", - "testharness" - ], - "security/window-name-after-same-origin-main-frame-navigation.sub.html": [ - "74ec6353b0b0afa070c745125c09b91d870f38c7", - "testharness" - ], - "security/window-name-after-same-origin-sub-frame-navigation.sub.html": [ - "8865745d26bee3955927f4c9d35a5174578238ce", - "testharness" - ], "selection/Document-open.html": [ "31a5ee7a3619c62dbd35eafb66725bf4192639a0", "testharness" @@ -576317,7 +575391,7 @@ "testharness" ], "service-workers/service-worker/fetch-event.https.html": [ - "8fb51ce7439e3b8ee21eb5bc8924b2db884fd412", + "22cfed652ec3779afae9ec77fda14ad0de9f03ba", "testharness" ], "service-workers/service-worker/fetch-frame-resource.https.html": [ @@ -576768,10 +575842,6 @@ "785a18ac3c8001034f583a8e97195aa47093bd0d", "testharness" ], - "service-workers/service-worker/request-body-blob.https.html": [ - "14dcf42e1dbfdc7589f9df64e2622cc599411174", - "testharness" - ], "service-workers/service-worker/request-end-to-end.https.html": [ "ee9f8140b492daf89cb715643ee40557f6ed904e", "testharness" @@ -577033,7 +576103,7 @@ "support" ], "service-workers/service-worker/resources/fetch-event-test-worker.js": [ - "f9eab9a493f43ec5a8a662815a979e70fb3e3900", + "f42ca5c4f05c89df3bb37249ed4b09af0aae25be", "support" ], "service-workers/service-worker/resources/fetch-event-within-sw-worker.js": [ @@ -577516,14 +576586,6 @@ "7fb39d9609893a0fbcada161c92dc3df40721f90", "support" ], - "service-workers/service-worker/resources/request-body-blob-iframe.html": [ - "b1f805a1120f3728a0e7accbc62041363e668ab0", - "support" - ], - "service-workers/service-worker/resources/request-body-blob-worker.js": [ - "867de00970be85ce6fbe25c175191450eb83c906", - "support" - ], "service-workers/service-worker/resources/request-end-to-end-worker.js": [ "984ea18286a9fa7446562a77284b942fa7e5217c", "support" @@ -578049,7 +577111,7 @@ "testharness" ], "shadow-dom/event-post-dispatch.html": [ - "ab40bb984bbbf8acad097fee7bfe11302969ac0f", + "f728caa68d0112033fb599880404811b17596396", "testharness" ], "shadow-dom/event-with-related-target.html": [ @@ -578401,7 +577463,7 @@ "testharness" ], "speech-api/OWNERS": [ - "025f9f081f215505e0e55838d4afe136aba573cf", + "7022719dae5deb21ce300bb2af91b5eddcee62ff", "support" ], "speech-api/SpeechSynthesis-speak-ownership.html": [ @@ -582728,95 +581790,99 @@ "fcc5e59095f69e8f62120e392d84de9f4c5647a2", "manual" ], - "viewport/viewport-attribute-event-handlers-manual.html": [ + "visual-viewport/OWNERS": [ + "6a97a4002074fd8dacc111e76d96bb48b5854909", + "support" + ], + "visual-viewport/viewport-attribute-event-handlers-manual.html": [ "09901d9056f2e31f630becdd07f800e00496700a", "manual" ], - "viewport/viewport-dimensions-custom-scrollbars-manual.html": [ + "visual-viewport/viewport-dimensions-custom-scrollbars-manual.html": [ "ccef0829da2e4ebcad983235f97a6f3f767a0f51", "manual" ], - "viewport/viewport-dimensions-scrollbars-manual.html": [ + "visual-viewport/viewport-dimensions-scrollbars-manual.html": [ "465eb63a9f09880f98636502d4b3ee3b5e3ec794", "manual" ], - "viewport/viewport-no-resize-event-on-overflow-recalc.html": [ + "visual-viewport/viewport-no-resize-event-on-overflow-recalc.html": [ "f4d6cb3f76e4cf790875b3be90de821a279b3d82", "testharness" ], - "viewport/viewport-offset-manual.html": [ + "visual-viewport/viewport-offset-manual.html": [ "1d39d721a49e44d87583cb173cf0bba648fba352", "manual" ], - "viewport/viewport-page-manual.html": [ + "visual-viewport/viewport-page-manual.html": [ "1431cc6a8495343697c01ef62d237c31a5850e99", "manual" ], - "viewport/viewport-read-size-causes-layout.html": [ + "visual-viewport/viewport-read-size-causes-layout.html": [ "64a511ff2dd9c0381588b56b15fe1c82e0b1e07a", "testharness" ], - "viewport/viewport-read-size-in-iframe-causes-layout.html": [ + "visual-viewport/viewport-read-size-in-iframe-causes-layout.html": [ "8bf7b6c1a5721da2c1d1fc896d62a44893446a73", "testharness" ], - "viewport/viewport-resize-event-manual.html": [ + "visual-viewport/viewport-resize-event-manual.html": [ "38280c144ed74af990ebf9b65ad1d68052f93372", "manual" ], - "viewport/viewport-resize-event-on-load-overflowing-page.html": [ + "visual-viewport/viewport-resize-event-on-load-overflowing-page.html": [ "cd13682091b00c182e570a87eac642613a3c05c2", "testharness" ], - "viewport/viewport-scale-iframe-manual.html": [ + "visual-viewport/viewport-scale-iframe-manual.html": [ "4ccf4a4bb7d13bc12afc6d9bbbc8072b460f87ec", "manual" ], - "viewport/viewport-scale-manual.html": [ + "visual-viewport/viewport-scale-manual.html": [ "fd089f974778969d95cd7f6aa6389a6cf9dfb543", "manual" ], - "viewport/viewport-scroll-event-manual.html": [ + "visual-viewport/viewport-scroll-event-manual.html": [ "43e7031d3734a1c377e64d0f6a8247fef0782ceb", "manual" ], - "viewport/viewport-scrollbars-cause-resize.html": [ + "visual-viewport/viewport-scrollbars-cause-resize.html": [ "a1017cff8faadfdcae008fd5f27e9c8e7c5383d3", "testharness" ], - "viewport/viewport-type.html": [ + "visual-viewport/viewport-type.html": [ "45334f4775607cd8547788e4107e81b03fad319f", "testharness" ], - "viewport/viewport-unscaled-scale-iframe.html": [ + "visual-viewport/viewport-unscaled-scale-iframe.html": [ "d88c0bd1ce525137fb739182a35ae22bd6455c0f", "testharness" ], - "viewport/viewport-unscaled-scale.html": [ + "visual-viewport/viewport-unscaled-scale.html": [ "eb5a1e32e015808651f008ebaaa785ec84d7a1f3", "testharness" ], - "viewport/viewport-unscaled-scroll-iframe.html": [ + "visual-viewport/viewport-unscaled-scroll-iframe.html": [ "14e88914da4ce92b90cb191278aaa0a26e00ee7a", "testharness" ], - "viewport/viewport-unscaled-scroll.html": [ + "visual-viewport/viewport-unscaled-scroll.html": [ "12f4366f75a8fb078e1691c3ad091ea15a8561f9", "testharness" ], - "viewport/viewport-unscaled-size-iframe.html": [ + "visual-viewport/viewport-unscaled-size-iframe.html": [ "937198c3bf9f26413c35e48f90b5b3b35e1c96a2", "testharness" ], - "viewport/viewport-unscaled-size.html": [ + "visual-viewport/viewport-unscaled-size.html": [ "e92beb18c8adcf1f7d89cfa0512df46765440a5a", "testharness" ], - "viewport/viewport-url-bar-changes-height-manual.html": [ + "visual-viewport/viewport-url-bar-changes-height-manual.html": [ "6b7e0dfc4b8bf51f7e5799a3089c2263e6dac63d", "manual" ], - "viewport/viewport_support.js": [ + "visual-viewport/viewport_support.js": [ "2e2e9480e8ccca07d4334d957b6a1c597a1f8fbd", "support" ], @@ -582833,7 +581899,7 @@ "manual" ], "wai-aria/alertdialog_modal_true-manual.html": [ - "b5e55fb9f84d41d49b6d464ff838e6bf93e89d32", + "1cc6b8748e46ffbeaaf19123d489895049831393", "manual" ], "wai-aria/application_activedescendant-manual.html": [ @@ -583125,7 +582191,7 @@ "manual" ], "wai-aria/dialog_modal_true-manual.html": [ - "4f5282509f1bb49968e270ccbb7d436925d6ad45", + "55dcbad3c1757ffa5fd666c4362ddbc499224064", "manual" ], "wai-aria/dialog_modal_unspecified-manual.html": [ @@ -583752,6 +582818,14 @@ "e82b65811aa337b03cfe72d25215c29234b798dd", "manual" ], + "wake-lock/OWNERS": [ + "92dc52582d366bafcdb1bbd1cc68f109c0ae8813", + "support" + ], + "wake-lock/interfaces.https.html": [ + "0dbbfa77dc7e17f2dfcaecd3899f37da51b4055a", + "testharness" + ], "wasm/compile_worker.js": [ "652193b876206d7a0f361f145469a604d03e3784", "support" @@ -583973,7 +583047,7 @@ "testharness" ], "web-animations/interfaces/AnimationEffectTiming/iterationStart.html": [ - "1ddaceeb8b5e3fc93e5bf4dc1136e8714a08f474", + "05e327706937df8319e3a8c655ee743a15902ecd", "testharness" ], "web-animations/interfaces/AnimationEffectTiming/iterations.html": [ @@ -584041,7 +583115,7 @@ "support" ], "web-animations/resources/effect-tests.js": [ - "aed87c03ac50e534532855612a7bb05092a7e4e7", + "5cdc52caac1d1db2249155e91591c983a746102e", "support" ], "web-animations/resources/keyframe-utils.js": [ @@ -584272,6 +583346,34 @@ "230684ec60fd2e408f9b6014417f3eddfe2dc95a", "support" ], + "webaudio/chrome/resources/audioparam-testing.js": [ + "2855fbee30e629ea397166911b9bcdec74bd4fdf", + "support" + ], + "webaudio/chrome/resources/audit-util.js": [ + "4405458b8f8bdc621c95c1d9ec1c1ad4e6002f1e", + "support" + ], + "webaudio/chrome/resources/audit.js": [ + "7f7051364808eadc207207a7dadcc191a95a2db3", + "support" + ], + "webaudio/chrome/resources/start-stop-exceptions.js": [ + "70e0f890a721786f8afa4cd032e75ef85b5fc6bb", + "support" + ], + "webaudio/chrome/the-constantsourcenode-interface/constant-source-basic.html": [ + "7c9fed4798e8119ca3cedda3958788fe989d4dd4", + "testharness" + ], + "webaudio/chrome/the-constantsourcenode-interface/constant-source-onended.html": [ + "10f6b84a4c8de1a8b689cc443f2526b0455a4d27", + "testharness" + ], + "webaudio/chrome/the-constantsourcenode-interface/constant-source-output.html": [ + "ff83b807b7a39fa40ad3df8db42c20eb859f34a8", + "testharness" + ], "webaudio/historical.html": [ "93068df297042344669093ce899f0230c87ebf54", "testharness" @@ -584569,7 +583671,7 @@ "support" ], "webdriver/tests/conftest.py": [ - "ab95734024a8e152ed84128eb804344740be91d4", + "c812269d034c9ca1b8c4f136dd5d0cea52f4d0f0", "support" ], "webdriver/tests/contexts/json_serialize_windowproxy.py": [ @@ -584577,7 +583679,7 @@ "wdspec" ], "webdriver/tests/contexts/maximize_window.py": [ - "904dd1db0e9731148a1793065b1d38acf0ac094b", + "7912e2f7ebdffe2598eb3b9a20f4fc7fce22447e", "wdspec" ], "webdriver/tests/contexts/resizing_and_positioning.py": [ @@ -584589,7 +583691,7 @@ "wdspec" ], "webdriver/tests/cookies/delete_cookie.py": [ - "4e846b0f0538bbfc88e7dc6b637f19260a8d3c3e", + "451cef1c071f67bc2bc1666a906b4c289b700d22", "wdspec" ], "webdriver/tests/cookies/get_named_cookie.py": [ @@ -584605,19 +583707,19 @@ "wdspec" ], "webdriver/tests/element_retrieval/get_active_element.py": [ - "9080770b60a988cb37e30700efb118d392a896c7", + "131cfaf18ba1476c15866e25e5de65143d5269e0", "wdspec" ], "webdriver/tests/fullscreen_window.py": [ - "6b1e481aac6856b6e858df17731d037997b99f83", + "817011a8cdff7cfd7e445fb8ecb84e5d91f03993", "wdspec" ], "webdriver/tests/get_window_rect.py": [ - "0dc9c8cc1332907be819d52feb7c94f4b1cc928a", + "5d907b2a16b9ff7dba8e39bba19ea7f85f29f71e", "wdspec" ], "webdriver/tests/interaction/send_keys_content_editable.py": [ - "130c57e80a0738ed500f59b0178753f8acaf15bf", + "9c071e60e1203cf31120f20874b5f38ba41dacc3", "wdspec" ], "webdriver/tests/interface.html": [ @@ -584625,7 +583727,7 @@ "testharness" ], "webdriver/tests/minimize_window.py": [ - "e0950b165c0cbf76e8adcd865176ea164a1ea768", + "ac1df5462702ac368ffa92cc12cfb5e34df226ac", "wdspec" ], "webdriver/tests/navigation/current_url.py": [ @@ -584633,7 +583735,7 @@ "wdspec" ], "webdriver/tests/navigation/get_title.py": [ - "11c84957a3177acbbf34597bc0defb3f77c5744c", + "4609f17922cc9680c41b8972dafb827195037ff8", "wdspec" ], "webdriver/tests/retrieval/__init__.py": [ @@ -584665,35 +583767,39 @@ "support" ], "webdriver/tests/sessions/new_session/create_alwaysMatch.py": [ - "e4dd4fe4ab30d71e9fe383daf2ca00582615ec35", + "84f8ad0908e9ec787f9db73ff66cbe193c2c9626", "wdspec" ], "webdriver/tests/sessions/new_session/create_firstMatch.py": [ - "6fd2671870cd3451aab6f81ea19bd516a6c82bc9", + "fbdabf1852c07db0f5df2d47954c1cd5d7285492", "wdspec" ], "webdriver/tests/sessions/new_session/default_values.py": [ - "d0802053ea0e1c81304b985821c743727b5222ec", + "92c26366f8fd0d37587457b9b5a630df4b19cc60", "wdspec" ], "webdriver/tests/sessions/new_session/invalid_capabilities.py": [ - "20e143186f39022c0a8cf6218b08a2fe22f96153", + "4caa08542f61ebe73c020d15d559704af037a97c", "wdspec" ], "webdriver/tests/sessions/new_session/merge.py": [ - "e58b671da735c6040248c80a3384760ee4496c88", + "000b28631bb6d862b654f1f998852f5f1a6b2e12", "wdspec" ], "webdriver/tests/sessions/new_session/response.py": [ - "3eca8e1d571b0c94b2a08fccfbe8cb9f1b1ba6d5", + "973f5deb240dd01f6213252e6d9fc2f462b0e035", "wdspec" ], + "webdriver/tests/sessions/new_session/support/__init__.py": [ + "ba8ab5a0280b953aa97435ff8946cbcbb2755a27", + "support" + ], "webdriver/tests/sessions/new_session/support/create.py": [ "440d88462cc418e4d5e1df6f73074d3a722bd2fd", "support" ], "webdriver/tests/set_window_rect.py": [ - "e84559c2ee94009fe808c3008c58e6e4b9ca27aa", + "8a124f80e6e7732a651a80da3f6cdf8e2ed99e3e", "wdspec" ], "webdriver/tests/state/__init__.py": [ @@ -584701,19 +583807,19 @@ "support" ], "webdriver/tests/state/get_element_attribute.py": [ - "1e25aaf5c3ab4c24130566d7823830a11a86393d", + "cad153b432a69597b0da6449765df11538c51fe6", "wdspec" ], "webdriver/tests/state/get_element_property.py": [ - "2d4e145cd55c6ee0ed69c617c77975e295e56119", + "b7bbb822cdb22d74a57706f6a353fe55a068c7dd", "wdspec" ], "webdriver/tests/state/get_element_tag_name.py": [ - "ed23abfb5a1e9d3afdf168c722e7b64827c176ec", + "3b8ecaaef3c04b34045ba5c32d2988aef299da17", "wdspec" ], "webdriver/tests/state/is_element_selected.py": [ - "77b93dd58e0fb4f504c94bc39013d6ada59126bc", + "386579b289b6288cbeba71c839ac6569310e09dd", "wdspec" ], "webdriver/tests/state/text/__init__.py": [ @@ -584737,7 +583843,7 @@ "support" ], "webdriver/tests/support/fixtures.py": [ - "4b68fd0f02cc88e9abb422c2c3978812edbbbec7", + "765dd3821da0724024cdd61523f3d2fd79e8be28", "support" ], "webdriver/tests/support/http_request.py": [ @@ -594152,6 +593258,10 @@ "f53e7687ad6aef0ffc064d941a05a222c33fde56", "testharness" ], + "webmessaging/Channel_postMessage_Blob.htm": [ + "9667a479d4ed3f01dd052567a67256c20a533074", + "testharness" + ], "webmessaging/Channel_postMessage_DataCloneErr.htm": [ "a62fdac80932ca059c8853ca9a9f8edd13926f86", "testharness" @@ -594221,7 +593331,7 @@ "testharness" ], "webmessaging/broadcastchannel/blobs.html": [ - "59839a75b7da8316df81e2c98b1ecc73ffd8d02e", + "6783e7192e63a0418d65885715baa3ba1c99e33a", "testharness" ], "webmessaging/broadcastchannel/interface.html": [ @@ -594241,7 +593351,7 @@ "support" ], "webmessaging/broadcastchannel/resources/worker.js": [ - "9376237db37ad66df2cddec3b38e18b74681500b", + "d870e4e7ca81044bd62ddbf79fb666d02bc5b9ee", "support" ], "webmessaging/broadcastchannel/sandbox.html": [ @@ -594725,7 +593835,7 @@ "testharness" ], "webrtc/RTCPeerConnection-helper.js": [ - "e3b2656366be168b5f2e3cde9461a4e69a51c9ef", + "d579dd68118d72c06455d8ccdbeb666f8f39c58a", "support" ], "webrtc/RTCPeerConnection-iceConnectionState.html": [ @@ -594789,7 +593899,7 @@ "testharness" ], "webrtc/RTCPeerConnection-setRemoteDescription-offer.html": [ - "ce5345bbaf5b5230b1fd53bbb55ab4439c3eb979", + "34337ef2126bfe276675db8884cd2a9aaa2d4432", "testharness" ], "webrtc/RTCPeerConnection-setRemoteDescription-pranswer.html": [ @@ -594800,6 +593910,10 @@ "6142a9b3b95bb26634af5300bc24981f2b4cb2a4", "testharness" ], + "webrtc/RTCPeerConnection-setRemoteDescription-tracks.https.html": [ + "5d6a2f62f455c086222f8ea4ba8fdde4134766cc", + "testharness" + ], "webrtc/RTCPeerConnection-setRemoteDescription.html": [ "2a2e3f9ff0a5912fa260d7124f7f5a9c3862c533", "testharness" @@ -594921,7 +594035,7 @@ "support" ], "webrtc/getstats.html": [ - "6656998d4adfab0e6ca51c98cd141cf162d3879c", + "4c47dcbadf09fdaecafc3ddcabd5510975dd5154", "testharness" ], "webrtc/historical.html": [ @@ -594932,7 +594046,7 @@ "c7639c627cceaad0e122d83ccde429d044c0773d", "support" ], - "webrtc/interfaces.html": [ + "webrtc/interfaces.https.html": [ "efd0c4a62b9c90f27da1188c30e4503755e7f8d2", "testharness" ], @@ -595061,7 +594175,7 @@ "support" ], "websockets/README.md": [ - "1b8473c8d482b7628fc7337e263c78aca7ca5088", + "42c6183f2b71442d96a023f2c05ab6ed10f06180", "support" ], "websockets/Secure-Close-1000-reason.htm": [ @@ -600125,11 +599239,19 @@ "support" ], "worklets/animation-worklet-import.html": [ - "42ad4c05fb7093051344351c7b8802f8ef8fbf4c", + "6e92613e720ac1fa1cdec91665cc1ca68a6e0bc8", + "testharness" + ], + "worklets/animation-worklet-referrer.html": [ + "7c6e4a94815093e9353d184b877046ad7627bae9", "testharness" ], "worklets/paint-worklet-import.html": [ - "0319b5195ba14348c6b5031d1198c5f401d13938", + "a1a5fe53abb00fe37c7688032038110a67f988ee", + "testharness" + ], + "worklets/paint-worklet-referrer.html": [ + "86e7c0fe4de0764a7064ed22eef2b66ab09d4a62", "testharness" ], "worklets/resources/empty-worklet-script.js": [ @@ -600149,13 +599271,29 @@ "support" ], "worklets/resources/import-tests.js": [ - "7fd020b68f1ef3fc0bf8d057d30af3970f9b06cd", + "62d2e0030328c0d0f64ccfff2402634a3e99c637", + "support" + ], + "worklets/resources/referrer-tests.js": [ + "47d8ae6d90b88ab8fb856e305b1599a34173852f", + "support" + ], + "worklets/resources/referrer-window.html": [ + "d098da333b3c3c27999c7436af5e2f986bf9df28", + "support" + ], + "worklets/resources/referrer.py": [ + "ed296faa934f89efcca9a116f6a2e931cafd831e", "support" ], "worklets/resources/throwing-worklet-script.js": [ "a7164f899afec387321c7737aa1006aa5f225669", "support" ], + "worklets/resources/worklet-test-utils.js": [ + "f05d557ba57bca35228a5ebbc418816cc3d01ee4", + "support" + ], "x-frame-options/deny.sub.html": [ "5a589f4b4c6f2503104b33ae7002dcc5c4153eb7", "testharness" diff --git a/tests/wpt/metadata/fetch/api/basic/keepalive.html.ini b/tests/wpt/metadata/fetch/api/basic/keepalive.html.ini new file mode 100644 index 00000000000..48cea424a01 --- /dev/null +++ b/tests/wpt/metadata/fetch/api/basic/keepalive.html.ini @@ -0,0 +1,4 @@ +[keepalive.html] + [Fetch API: keepalive handling] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/api/request/request-keepalive.html.ini b/tests/wpt/metadata/fetch/api/request/request-keepalive.html.ini new file mode 100644 index 00000000000..1f86b6d1e46 --- /dev/null +++ b/tests/wpt/metadata/fetch/api/request/request-keepalive.html.ini @@ -0,0 +1,7 @@ +[request-keepalive.html] + [keepalive flag] + expected: FAIL + + [keepalive flag with stream body] + expected: FAIL + diff --git a/tests/wpt/metadata/html/dom/interfaces.html.ini b/tests/wpt/metadata/html/dom/interfaces.html.ini index 8cfae61d852..30512680019 100644 --- a/tests/wpt/metadata/html/dom/interfaces.html.ini +++ b/tests/wpt/metadata/html/dom/interfaces.html.ini @@ -14307,3 +14307,12 @@ [External interface: window.external must inherit property "IsSearchProviderInstalled()" with the proper type] expected: FAIL + [HTMLIFrameElement interface: attribute delegateStickyUserActivation] + expected: FAIL + + [History interface: attribute index] + expected: FAIL + + [History interface: window.history must inherit property "index" with the proper type] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/interactive-elements/the-dialog-element/dialog-return-value.html.ini b/tests/wpt/metadata/html/semantics/interactive-elements/the-dialog-element/dialog-return-value.html.ini new file mode 100644 index 00000000000..ea83e6cce78 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/interactive-elements/the-dialog-element/dialog-return-value.html.ini @@ -0,0 +1,4 @@ +[dialog-return-value.html] + [Tests dialog.returnValue is settable and returns the last value set.] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/interactive-elements/the-dialog-element/show-modal-focusing-steps.html.ini b/tests/wpt/metadata/html/semantics/interactive-elements/the-dialog-element/show-modal-focusing-steps.html.ini new file mode 100644 index 00000000000..502475f2514 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/interactive-elements/the-dialog-element/show-modal-focusing-steps.html.ini @@ -0,0 +1,5 @@ +[show-modal-focusing-steps.html] + expected: TIMEOUT + [focus when a modal dialog is opened] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-error.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-error.html.ini deleted file mode 100644 index e7cc3d494f1..00000000000 --- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-error.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[dynamic-imports-error.html] - type: testharness - expected: TIMEOUT diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-fetch-error.sub.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-fetch-error.sub.html.ini new file mode 100644 index 00000000000..9d701616702 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-fetch-error.sub.html.ini @@ -0,0 +1,2 @@ +[dynamic-imports-fetch-error.sub.html] + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-script-error.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-script-error.html.ini new file mode 100644 index 00000000000..803eee6278c --- /dev/null +++ b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-script-error.html.ini @@ -0,0 +1,2 @@ +[dynamic-imports-script-error.html] + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-url.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-url.html.ini new file mode 100644 index 00000000000..f4f4373816c --- /dev/null +++ b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-url.html.ini @@ -0,0 +1,2 @@ +[import-meta-url.html] + expected: TIMEOUT diff --git a/tests/wpt/metadata/mozilla-sync b/tests/wpt/metadata/mozilla-sync index 85551d7f16e..71a0af85285 100644 --- a/tests/wpt/metadata/mozilla-sync +++ b/tests/wpt/metadata/mozilla-sync @@ -1,2 +1,2 @@ -local: 20a833eb75e92c3f7dd081bf526d8d8fbaf618ef -upstream: 238e9855c35a3570f824b837826aac71e50722f4 +local: 1b73cf33525afbbe2d077554d1965b74ef9ae5e3 +upstream: 3922fb3e43b75d2ff118a5ebf793180f570fdb53 diff --git a/tests/wpt/metadata/referrer-policy/generic/iframe-inheritance.html.ini b/tests/wpt/metadata/referrer-policy/generic/iframe-inheritance.html.ini new file mode 100644 index 00000000000..dae4704bef0 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/generic/iframe-inheritance.html.ini @@ -0,0 +1,5 @@ +[iframe-inheritance.html] + expected: TIMEOUT + [iframes correctly inherit the ancestor's referrer] + expected: NOTRUN + diff --git a/tests/wpt/mozilla/tests/css/test_font_family_parsing.html b/tests/wpt/mozilla/tests/css/test_font_family_parsing.html index 20114ed5978..fb43bee5635 100644 --- a/tests/wpt/mozilla/tests/css/test_font_family_parsing.html +++ b/tests/wpt/mozilla/tests/css/test_font_family_parsing.html @@ -127,17 +127,6 @@ var testFontFamilyLists = [ ]; -if (window.SpecialPowers && SpecialPowers.getBoolPref("layout.css.unset-value.enabled")) { - testFontFamilyLists.push( - { namelist: "unset", invalid: true, fontonly: true, single: true }, - { namelist: "unset, simple", invalid: true }, - { namelist: "simple, unset", invalid: true }, - { namelist: "simple, unset bongo" }, - { namelist: "simple, bongo unset" }, - { namelist: "simple unset", single: true }, - { namelist: "unset simple", single: true }); -} - var gTest = 0; /* strip out just values */ diff --git a/tests/wpt/web-platform-tests/.travis.yml b/tests/wpt/web-platform-tests/.travis.yml index 1cdc87ec4c5..43aacf5d8c3 100644 --- a/tests/wpt/web-platform-tests/.travis.yml +++ b/tests/wpt/web-platform-tests/.travis.yml @@ -26,6 +26,15 @@ matrix: include: - os: linux python: "2.7" + env: JOB=manifest_upload SCRIPT=tools/ci/ci_manifest.sh + deploy: + provider: releases + api_key: + secure: "EljDx50oNpDLs7rzwIv+z1PxIgB5KMnx1W0OQkpNvltR0rBW9g/aQaE+Z/c8M/sPqN1bkvKPybKzGKjb6j9Dw3/EJhah4SskH78r3yMAe2DU/ngxqqjjfXcCc2t5MKxzHAILTAxqScPj2z+lG1jeK1Z+K5hTbSP9lk+AvS0D16w=" + file: $WPT_MANIFEST_FILE.gz + skip_cleanup: true + - os: linux + python: "2.7" env: JOB=lint SCRIPT=tools/ci/ci_lint.sh - os: linux python: "2.7" diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbcursor-request-source.html b/tests/wpt/web-platform-tests/IndexedDB/idbcursor-request-source.html new file mode 100644 index 00000000000..9216a0c4416 --- /dev/null +++ b/tests/wpt/web-platform-tests/IndexedDB/idbcursor-request-source.html @@ -0,0 +1,31 @@ +<!doctype html> +<meta charset=utf-8> +<title>IndexedDB: The source of requests made against cursors</title> +<meta name="help" href="https://w3c.github.io/IndexedDB/#dom-idbrequest-source"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="support.js"></script> +<script> + +[ + cursor => cursor.update(0), + cursor => cursor.delete() +].forEach(func => indexeddb_test( + (t, db) => { + db.createObjectStore('store', {autoIncrement: true}); + }, + (t, db) => { + const tx = db.transaction('store', 'readwrite'); + const store = tx.objectStore('store'); + store.put('value'); + store.openCursor().onsuccess = t.step_func(e => { + const cursor = e.target.result; + assert_equals(func(cursor).source, cursor, + `${func}.source should be the cursor itself`); + t.done(); + }); + }, + `The source of the request from ${func} is the cursor itself` +)); + +</script> diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbindex-request-source.html b/tests/wpt/web-platform-tests/IndexedDB/idbindex-request-source.html new file mode 100644 index 00000000000..3788eff0546 --- /dev/null +++ b/tests/wpt/web-platform-tests/IndexedDB/idbindex-request-source.html @@ -0,0 +1,34 @@ +<!doctype html> +<meta charset=utf-8> +<title>IndexedDB: The source of requests made against indexes</title> +<meta name="help" href="https://w3c.github.io/IndexedDB/#dom-idbrequest-source"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="support.js"></script> +<script> + +[ + index => index.get(0), + index => index.getKey(0), + index => index.getAll(), + index => index.getAllKeys(), + index => index.count(), + + index => index.openCursor(), + index => index.openKeyCursor() +].forEach(func => indexeddb_test( + (t, db) => { + const store = db.createObjectStore('store', {autoIncrement: true}); + store.createIndex('index', 'kp'); + }, + (t, db) => { + const tx = db.transaction('store', 'readwrite'); + const index = tx.objectStore('store').index('index'); + assert_equals(func(index).source, index, + `${func}.source should be the index itself`); + t.done(); + }, + `The source of the request from ${func} is the index itself` +)); + +</script> diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore-request-source.html b/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore-request-source.html new file mode 100644 index 00000000000..32bf370ab60 --- /dev/null +++ b/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore-request-source.html @@ -0,0 +1,39 @@ +<!doctype html> +<meta charset=utf-8> +<title>IndexedDB: The source of requests made against object stores</title> +<meta name="help" href="https://w3c.github.io/IndexedDB/#dom-idbrequest-source"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="support.js"></script> +<script> + +[ + store => store.put(0), + store => store.add(0), + store => store.delete(0), + store => store.clear(), + + store => store.get(0), + store => store.getKey(0), + store => store.getAll(), + store => store.getAllKeys(), + store => store.count(), + + store => store.openCursor(), + store => store.openKeyCursor() +].forEach(func => indexeddb_test( + (t, db) => { + db.createObjectStore('store', {autoIncrement: true}); + }, + (t, db) => { + const tx = db.transaction('store', 'readwrite'); + const store = tx.objectStore('store'); + + assert_equals(func(store).source, store, + `${func}.source should be the object store itself`); + t.done(); + }, + `The source of the request from ${func} is the object store itself` +)); + +</script> diff --git a/tests/wpt/web-platform-tests/accelerometer/Accelerometer_insecure_context.html b/tests/wpt/web-platform-tests/accelerometer/Accelerometer_insecure_context.html index 4ff4789c37e..d55a62f18e7 100644 --- a/tests/wpt/web-platform-tests/accelerometer/Accelerometer_insecure_context.html +++ b/tests/wpt/web-platform-tests/accelerometer/Accelerometer_insecure_context.html @@ -15,6 +15,6 @@ </ol> <script> -runGenericSensorInsecureContext(Accelerometer); +runGenericSensorInsecureContext("Accelerometer"); </script> diff --git a/tests/wpt/web-platform-tests/accelerometer/idlharness.https.html b/tests/wpt/web-platform-tests/accelerometer/idlharness.https.html index b6d9ce55994..f77400f8bac 100644 --- a/tests/wpt/web-platform-tests/accelerometer/idlharness.https.html +++ b/tests/wpt/web-platform-tests/accelerometer/idlharness.https.html @@ -24,6 +24,7 @@ interface EventHandler { [SecureContext, Exposed=Window] interface Sensor : EventTarget { readonly attribute boolean activated; + readonly attribute boolean hasReading; readonly attribute DOMHighResTimeStamp? timestamp; void start(); void stop(); @@ -34,9 +35,9 @@ interface Sensor : EventTarget { [Constructor(optional SensorOptions options), Exposed=Window] interface Accelerometer : Sensor { - readonly attribute unrestricted double? x; - readonly attribute unrestricted double? y; - readonly attribute unrestricted double? z; + readonly attribute double? x; + readonly attribute double? y; + readonly attribute double? z; }; [Constructor(optional SensorOptions options), Exposed=Window] diff --git a/tests/wpt/web-platform-tests/acid/README.md b/tests/wpt/web-platform-tests/acid/README.md new file mode 100644 index 00000000000..490f272df9c --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/README.md @@ -0,0 +1,17 @@ +## The Acid Tests + +This directory contains copies of Acid2 and Acid3, based on the +copies hosted at [acidtests.org](http://www.acidtests.org) after they +had ceased being maintained (per the note on that page). + +Note these are not maintained here for the sake of providing any +useful guide of interoperability or standards compliance, but rather +for browser vendors' convenience. It would be inappropriate, +therefore, to use them as part of a certification process. + +Acid1 can be found at `css/CSS2/css1/c5526c-display-000.xht`, as it +always formed part of the CSS1 testsuite. + +The tests themselves (i.e., those at `/` of their respective +subdomains at `acidtests.org`) are in files named test.html in their +respective directories. diff --git a/tests/wpt/web-platform-tests/acid/acid2/404.html b/tests/wpt/web-platform-tests/acid/acid2/404.html new file mode 100644 index 00000000000..a17f4ecb85a --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid2/404.html @@ -0,0 +1,2 @@ +<style>body { background: red; }</style> + diff --git a/tests/wpt/web-platform-tests/acid/acid2/reference.html b/tests/wpt/web-platform-tests/acid/acid2/reference.html new file mode 100755 index 00000000000..66eed5ae355 --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid2/reference.html @@ -0,0 +1,17 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<html> + <head> + <title>The Second Acid Test (Reference Rendering)</title> + <style type="text/css"> + html { margin: 0; padding: 0; border: 0; overflow: hidden; background: white; } + body { margin: 0; padding: 0; border: 0; } + h2 { margin: 0; padding: 48px 0 36px 84px; border: 0; font: 24px/24px sans-serif; color: navy; } + p { margin: 0; padding: 0 0 0 72px; border: 0; } + img { vertical-align: top; margin: 0; padding: 0; border: 0; } + </style> + </head> + <body> + <h2>Hello World!</h2> + <p><a href="reference.png"><img src="reference.png" alt="Follow this link to view the reference image, which should be rendered below the text "Hello World!" on the test page in the same way that this paragraph is rendered below that text on this page."></a></p> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/acid/acid2/reference.png b/tests/wpt/web-platform-tests/acid/acid2/reference.png Binary files differnew file mode 100755 index 00000000000..7aee7609d6a --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid2/reference.png diff --git a/tests/wpt/web-platform-tests/acid/acid2/reftest.html b/tests/wpt/web-platform-tests/acid/acid2/reftest.html new file mode 100644 index 00000000000..0f9b9ac0235 --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid2/reftest.html @@ -0,0 +1,15 @@ +<!doctype html> +<title>Acid2 reftest</title> +<link rel="match" href="reference.html"> +<style> +* { + margin: 0; + padding: 0; + border: 0; +} +iframe { + width: 400px; + height: 300px; +} +</style> +<iframe src="test.html#top"></iframe> diff --git a/tests/wpt/web-platform-tests/acid/acid2/test.html b/tests/wpt/web-platform-tests/acid/acid2/test.html new file mode 100755 index 00000000000..0407bac5dc4 --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid2/test.html @@ -0,0 +1,150 @@ +<!-- +A guide to Acid2 was posted alongside it as part of its original announcement; this can be found at: +https://www.webstandards.org/action/acid2/guide/ +--> + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<html> + <head> + <title>The Second Acid Test</title> + <style type="text/css"> + /* section numbers refer to CSS2.1 */ + + /* page setup */ + html { font: 12px sans-serif; margin: 0; padding: 0; overflow: hidden; /* hides scrollbars on viewport, see 11.1.1:3 */ background: white; color: red; } + body { margin: 0; padding: 0; } + + /* introduction message */ + .intro { font: 2em sans-serif; margin: 3.5em 2em; padding: 0.5em; border: solid thin; background: white; color: black; position: relative; z-index: 2; /* should cover the black and red bars that are fixed-positioned */ } + .intro * { font: inherit; margin: 0; padding: 0; } + .intro h1 { font-size: 1em; font-weight: bolder; margin: 0; padding: 0; } + .intro :link { color: blue; } + .intro :visited { color: purple; } + + /* picture setup */ + #top { margin: 100em 3em 0; padding: 2em 0 0 .5em; text-align: left; font: 2em/24px sans-serif; color: navy; white-space: pre; } /* "Hello World!" text */ + .picture { position: relative; border: 1em solid transparent; margin: 0 0 100em 3em; } /* containing block for face */ + .picture { background: red; } /* overriden by preferred stylesheet below */ + + /* top line of face (scalp): fixed positioning and min/max height/width */ + .picture p { position: fixed; margin: 0; padding: 0; border: 0; top: 9em; left: 11em; width: 140%; max-width: 4em; height: 8px; min-height: 1em; max-height: 2mm; /* min-height overrides max-height, see 10.7 */ background: black; border-bottom: 0.5em yellow solid; } + + /* bits that shouldn't be part of the top line (and shouldn't be visible at all): HTML parsing, "+" combinator, stacking order */ + .picture p.bad { border-bottom: red solid; /* shouldn't matter, because the "p + table + p" rule below should match it too, thus hiding it */ } + .picture p + p { background: maroon; z-index: 1; } /* shouldn't match anything */ + .picture p + table + p { margin-top: 3em; /* should end up under the absolutely positioned table below, and thus not be visible */ } + + /* second line of face: attribute selectors, float positioning */ + [class~=one].first.one { position: absolute; top: 0; margin: 36px 0 0 60px; padding: 0; border: black 2em; border-style: none solid; /* shrink wraps around float */ } + [class~=one][class~=first] [class=second\ two][class="second two"] { float: right; width: 48px; height: 12px; background: yellow; margin: 0; padding: 0; } /* only content of abs pos block */ + + /* third line of face: width and overflow */ + .forehead { margin: 4em; width: 8em; border-left: solid black 1em; border-right: solid black 1em; background: red url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR42mP4%2F58BAAT%2FAf9jgNErAAAAAElFTkSuQmCC); /* that's a 1x1 yellow pixel PNG */ } + .forehead * { width: 12em; line-height: 1em; } + + /* class selectors headache */ + .two.error.two { background: maroon; } /* shouldn't match */ + .forehead.error.forehead { background: red; } /* shouldn't match */ + [class=second two] { background: red; } /* this should be ignored (invalid selector -- grammar says it only accepts IDENTs or STRINGs) */ + + /* fourth and fifth lines of face, with eyes: paint order test (see appendix E) and fixed backgrounds */ + /* the two images are identical: 2-by-2 squares with the top left + and bottom right pixels set to yellow and the other two set to + transparent. Since they are offset by one pixel from each other, + the second one paints exactly over the transparent parts of the + first one, thus creating a solid yellow block. */ + .eyes { position: absolute; top: 5em; left: 3em; margin: 0; padding: 0; background: red; } + #eyes-a { height: 0; line-height: 2em; text-align: right; } /* contents should paint top-most because they're inline */ + #eyes-a object { display: inline; vertical-align: bottom; } + #eyes-a object[type] { width: 7.5em; height: 2.5em; } /* should have no effect since that object should fallback to being inline (height/width don't apply to inlines) */ + #eyes-a object object object { border-right: solid 1em black; padding: 0 12px 0 11px; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAABnRSTlMAAAAAAABupgeRAAAABmJLR0QA%2FwD%2FAP%2BgvaeTAAAAEUlEQVR42mP4%2F58BCv7%2FZwAAHfAD%2FabwPj4AAAAASUVORK5CYII%3D) fixed 1px 0; } + #eyes-b { float: left; width: 10em; height: 2em; background: fixed url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAABnRSTlMAAAAAAABupgeRAAAABmJLR0QA%2FwD%2FAP%2BgvaeTAAAAEUlEQVR42mP4%2F58BCv7%2FZwAAHfAD%2FabwPj4AAAAASUVORK5CYII%3D); border-left: solid 1em black; border-right: solid 1em red; } /* should paint in the middle layer because it is a float */ + #eyes-c { display: block; background: red; border-left: 2em solid yellow; width: 10em; height: 2em; } /* should paint bottom most because it is a block */ + + /* lines six to nine, with nose: auto margins */ + .nose { float: left; margin: -2em 2em -1em; border: solid 1em black; border-top: 0; min-height: 80%; height: 60%; max-height: 3em; /* percentages become auto (see 10.5 and 10.7) and intrinsic height is more than 3em, so 3em wins */ padding: 0; width: 12em; } + .nose > div { padding: 1em 1em 3em; height: 0; background: yellow; } + .nose div div { width: 2em; height: 2em; background: red; margin: auto; } + .nose :hover div { border-color: blue; } + .nose div:hover :before { border-bottom-color: inherit; } + .nose div:hover :after { border-top-color: inherit; } + .nose div div:before { display: block; border-style: none solid solid; border-color: red yellow black yellow; border-width: 1em; content: ''; height: 0; } + .nose div :after { display: block; border-style: solid solid none; border-color: black yellow red yellow; border-width: 1em; content: ''; height: 0; } + + /* between lines nine and ten: margin collapsing with 'float' and 'clear' */ + .empty { margin: 6.25em; height: 10%; /* computes to auto which makes it empty per 8.3.1:7 (own margins) */ } + .empty div { margin: 0 2em -6em 4em; } + .smile { margin: 5em 3em; clear: both; /* clearance is negative (see 8.3.1 and 9.5.1) */ } + + /* line ten and eleven: containing block for abs pos */ + .smile div { margin-top: 0.25em; background: black; width: 12em; height: 2em; position: relative; bottom: -1em; } + .smile div div { position: absolute; top: 0; right: 1em; width: auto; height: 0; margin: 0; border: yellow solid 1em; } + + /* smile (over lines ten and eleven): backgrounds behind borders, inheritance of 'float', nested floats, negative heights */ + .smile div div span { display: inline; margin: -1em 0 0 0; border: solid 1em transparent; border-style: none solid; float: right; background: black; height: 1em; } + .smile div div span em { float: inherit; border-top: solid yellow 1em; border-bottom: solid black 1em; } /* zero-height block; width comes from (zero-height) child. */ + .smile div div span em strong { width: 6em; display: block; margin-bottom: -1em; /* should have no effect, since parent has top&bottom borders, so this margin doesn't collapse */ } + + /* line twelve: line-height */ + .chin { margin: -4em 4em 0; width: 8em; line-height: 1em; border-left: solid 1em black; border-right: solid 1em black; background: yellow url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAFSDNYfAAAAaklEQVR42u3XQQrAIAwAQeP%2F%2F6wf8CJBJTK9lnQ7FpHGaOurt1I34nfH9pMMZAZ8BwMGEvvh%2BBsJCAgICLwIOA8EBAQEBAQEBAQEBK79H5RfIQAAAAAAAAAAAAAAAAAAAAAAAAAAAID%2FABMSqAfj%2FsLmvAAAAABJRU5ErkJggg%3D%3D) /* 64x64 red square */ no-repeat fixed /* shouldn't be visible unless the smiley is moved to the top left of the viewport */; } + .chin div { display: inline; font: 2px/4px serif; } + + /* line thirteen: cascade and selector tests */ + .parser-container div { color: maroon; border: solid; color: orange; } /* setup */ + div.parser-container * { border-color: black; /* overrides (implied) border-color on previous line */ } /* setup */ + * div.parser { border-width: 0 2em; /* overrides (implied) declarations on earlier line */ } /* setup */ + + /* line thirteen continued: parser tests */ + .parser { /* comment parsing test -- comment ends before the end of this line, the backslash should have no effect: \*/ } + .parser { margin: 0 5em 1em; padding: 0 1em; width: 2em; height: 1em; error: \}; background: yellow; } /* setup with parsing test */ + * html .parser { background: gray; } + \.parser { padding: 2em; } + .parser { m\argin: 2em; }; + .parser { height: 3em; } + .parser { width: 200; } + .parser { border: 5em solid red ! error; } + .parser { background: red pink; } + + /* line fourteen (last line of face): table */ + ul { display: table; padding: 0; margin: -1em 7em 0; background: red; } + ul li { padding: 0; margin: 0; } + ul li.first-part { display: table-cell; height: 1em; width: 1em; background: black; } + ul li.second-part { display: table; height: 1em; width: 1em; background: black; } /* anonymous table cell wraps around this */ + ul li.third-part { display: table-cell; height: 0.5em; /* gets stretched to fit row */ width: 1em; background: black; } + ul li.fourth-part { list-style: none; height: 1em; width: 1em; background: black; } /* anonymous table cell wraps around this */ + + /* bits that shouldn't appear: inline alignment in cells */ + .image-height-test { height: 10px; overflow: hidden; font: 20em serif; } /* only the area between the top of the line box and the top of the image should be visible */ + table { margin: 0; border-spacing: 0; } + td { padding: 0; } + + </style> + <link rel="appendix stylesheet" href="data:text/css,.picture%20%7B%20background%3A%20none%3B%20%7D"> <!-- this stylesheet should be applied by default --> + </head> + <body> + <div class="intro"> + <h1>Standards compliant?</h1> + <p><a href="#top">Take The Acid2 Test</a> and compare it to <a + href="reference.html">the reference rendering</a>.</p> + </div> + <h2 id="top">Hello World!</h2> + <div class="picture"> + <p><table><tr><td></table><p class="bad"> <!-- <table> closes <p> per the HTML4 DTD --> + <blockquote class="first one"><address class="second two"></address></blockquote> + <div class="forehead"><div> </div></div> + <div class="eyes"><div id="eyes-a"><object data="data:application/x-unknown,ERROR"><object data="404.html?pipe=status(404)" type="text/html"><object data="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAYCAYAAAFy7sgCAAAGsUlEQVRo3u2ZbWwcZxHHf3s%2B7LNbO3ZjXBtowprGODRX0qpNQCjmJKuVKhMl1P2AkCwhFOIKkCBSm9IXavGFKAixIAECwkmWo5MrhRI3Ub40IEwQgp6aIDg3Cd6eEqyIHEteah%2B1E69vhw%2BZtTaX8704ZzkKjHS6271nZ56ZZ%2BY%2F%2F%2BdZKF%2FCwYshx3EkkggLsD1v4FQkEZZYLCbAKyG9%2Ba9EIsG6hnUAf8x74K3aUC3j4%2BM54HcsR2oAIomwZOezkv%2FnSHpYNh%2BNCmAE7xv94zvFdd1bHsjMZmQkPSxAJP%2B%2FfuBLwK54PC7JZFKAVJmzXLBt2w%2FMvcDLwIb8QS8CeJ4nkURYIomw7J%2FYJ8BvSiiXptGGxWds2%2Fa9%2Bnaxh%2BYAD%2Bgt04NDgABTpQY2cvvSFLzw86gWeBVwC8SzlOSv2YeBPfmDBoBHgKmR9LBEEmHZfDTqGykqfkUE0nA78BzQGfSgUeP3wNeTXwXg7MwZDhw4UHL6ra2ti79%2FOvljgG8AZ4H64Lhm4MvAocxsRppGG%2FxcXihlwLIs6R%2FfKV2HO%2F26uA94pdDYUKUZUU7W1RQYXA98Gnhaf5%2FXWX0HeAHYoQonqa4sZSOsSWMCWeC9Yko%2BCQwBe4E6oNc0Tc91XTl1%2BaTsn9gnI%2Blhyc5nZWxsrBIkKSbl2tiic3tW53YDEwOKaoFBrcOfqKee53lG9xsPMjV784r%2F4lO%2FpPvyJ9iyZcuvFSaXK5XYeAZ4CDgGvB3MS4B54LQuWYPeuy4iRFsevsXqpuYoqVQKIH2bK1CuDQNo11o4XUzh%2FcDWYIe1LEtyuZx4niee54njOGKapgfsqlL%2Bl2OjEXg8nxrc1dJ0h3hbtL%2BGCtz7KPBF4CuBe9uB15VafE8hr9qylI3HgG8C2%2FK7VyHZoJj7MrBRm30qFotJMpkU27YlHo%2F7Ha5a%2BV%2FKRkSJ4KuKRLVLKapTjB1SzAVIjY2NSXY%2BKyPpYdk%2FsU9OXT4pruv6BdZbBQfKsVGnvWlIe1VB6VQO8JxC1vZYLCbZ%2BaxsPhpdZDyRRFhG0sPiOE6ldKBg2lRg4xF1YCDIIIKN7DGgD3gH%2BBXwejKZfPrs2tPs%2FvPN2bKuYR1nd7xLKBSSJeqoXKnERjPwNWAG%2BLn2rZuM%2B4Tpml6vaWlp4eLcxVusZq5lCgVgOVKJjRqdX86ffL4D5wIoZACnTpw4wRMdT96i%2FImOJxERAs4uVyqxUacF%2FPdiCj%2BjdRBRGFtwXVdG0sPSdbhTmkYbpH98p2RmM2JZlig1vl0GWo4NQ%2Fn%2Bs5pKRXfwjweaxy7TND3HcRZbfC6X8xVPVQlGy7WxVWlO5XRXFXm6EZmrQuSXYyPE3SiVoEhE6Wyr0u2rumO6zv%2B21AFdQAswC1wCMuUCXCmyWQus103Qg8qlDO0lxwOb%2Fl4FiK3AB3VS%2FuKKLtK%2FgbeAnwG%2FvUODuRw%2FFrR0H1UC75fwu8oJ%2FhFsW5VIG%2FBUgEIN6Y65O4AHu4Ap0zQ9y7LEcZyb9lRBUHQcRyzL8unZVBW5bFWAvAp%2BhDQ2g4F47dUYtlU6obXA54DnVdFLekjUGGifh4AFy7LEdV3xj3X9I66m0QZpGm2QrsOd0j%2B%2BU0bSw5KZzYjrun6HWlAd961i4FfCj0aN1Usau%2Bc1lmuXPFwvAEumUut7tQQvAb%2FXb%2FT0bCAej9cODg7yt%2Bm%2F8q2%2F7OUHZ76PnZ1k2p0mJzlykmPancbOTnL0whHs7CQfb%2B5mx2d3sH79%2BtCRI0c6FeaOr9ICrIQfLvA%2B8BGNXxi4R6HrisJVUWrxAVW2oMFf0Aczim8o3kV6enowDIPjF9%2Fk%2BMU3S3rrjzMMg56eHr%2BxP7qKFbASfojG6kpeDGs1tiW53RxwWT%2Bin5q8w4xpQK5evQpAR30H7ZH2khNvj7TTUd8BgD4rqmu1ZKX8qNeY%2BfHz4zlXDgT5E8tpCTUq7XSBC4Euv8227TV9fX1E73%2BYtvo27BmbS9cvFVTY3bSRFza9yOcf6Gfmygy7d%2B%2Fm%2FPnzF4DvrsBLhnJlJfwIKXxv1PheAE4qK6p4H9AGbNKTuhngBPBPXYRe4IemaT5kWZbR19fHNbmGnZ1k4r3U4glDR30Hm5qjbGjsImJEOHbsGHv27JFz5869o0eFq01Jq%2BmHAXwI6FFKagMTgHM7GzFDS%2BoeLSMv7zjzC9x4Y7gxFovVDAwMEI1GaWlpWSzRVCrFwYMH%2FXfxZ4AfAa8B%2F7lDaGg1%2FQgp43lfK0yqtRMuJa3ceKe5DfgYsCYAZ2ngD8CfAkzqTpW7xY%2F%2FSznyX%2FVeUb2kVmX4AAAAAElFTkSuQmCC">ERROR</object></object></object></div><div id="eyes-b"></div><div id="eyes-c"></div></div> <!-- that's a PNG with 8bit alpha containing two eyes --> + <div class="nose"><div><div></div></div></div> + <div class="empty"><div></div></div> + <div class="smile"><div><div><span><em><strong></strong></em></span></div></div></div> + <div class="chin"><div> </div></div> + <div class="parser-container"><div class="parser"><!-- ->ERROR<!- --></div></div> <!-- two dashes is what delimits a comment, so the text "->ERROR<!-" earlier on this line is actually part of a comment --> + <ul> + <li class="first-part"></li> + <li class="second-part"></li> + <li class="third-part"></li> + <li class="fourth-part"></li> + </ul> + <div class="image-height-test"><table><tr><td><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAFSDNYfAAAAaklEQVR42u3XQQrAIAwAQeP%2F%2F6wf8CJBJTK9lnQ7FpHGaOurt1I34nfH9pMMZAZ8BwMGEvvh%2BBsJCAgICLwIOA8EBAQEBAQEBAQEBK79H5RfIQAAAAAAAAAAAAAAAAAAAAAAAAAAAID%2FABMSqAfj%2FsLmvAAAAABJRU5ErkJggg%3D%3D" alt=""></td></tr></table></div> + </div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/acid/acid3/empty.css b/tests/wpt/web-platform-tests/acid/acid3/empty.css new file mode 100755 index 00000000000..d490c124219 --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/empty.css @@ -0,0 +1,8 @@ +<!DOCTYPE HTML><html><head><title>FAIL</title><style> +<!-- this file is sent as text/html, not text/css, which is why it is + called "empty.css" despite the following lines --> + + body { background: white; color: black; } + h1 { color: red; } + +</style><body><h1>FAIL</h1></body></html> diff --git a/tests/wpt/web-platform-tests/acid/acid3/empty.css.headers b/tests/wpt/web-platform-tests/acid/acid3/empty.css.headers new file mode 100644 index 00000000000..156209f9c81 --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/empty.css.headers @@ -0,0 +1 @@ +Content-Type: text/html diff --git a/tests/wpt/web-platform-tests/acid/acid3/empty.html b/tests/wpt/web-platform-tests/acid/acid3/empty.html new file mode 100755 index 00000000000..0b91841acfc --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/empty.html @@ -0,0 +1 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><html><head><title></title></head><body></body></html> diff --git a/tests/wpt/web-platform-tests/acid/acid3/empty.png b/tests/wpt/web-platform-tests/acid/acid3/empty.png Binary files differnew file mode 100755 index 00000000000..fd5b91ea07b --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/empty.png diff --git a/tests/wpt/web-platform-tests/acid/acid3/empty.txt b/tests/wpt/web-platform-tests/acid/acid3/empty.txt new file mode 100755 index 00000000000..452a7e6d753 --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/empty.txt @@ -0,0 +1 @@ +<!DOCTYPE html><html><head><title>FAIL</title></head><body><p>FAIL</p><script>parent.notify("empty.txt")</script></body></html> diff --git a/tests/wpt/web-platform-tests/acid/acid3/empty.xml b/tests/wpt/web-platform-tests/acid/acid3/empty.xml new file mode 100755 index 00000000000..e6a125cc0d5 --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/empty.xml @@ -0,0 +1,4 @@ +<root> + <fail> This is an invalid byte in UTF-8: ¿ </fail> + <test/> <!-- shouldn't ever be parsed, as the parser should abort at the first sign of non-well-formedness --> +</root>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/acid/acid3/empty.xml.headers b/tests/wpt/web-platform-tests/acid/acid3/empty.xml.headers new file mode 100644 index 00000000000..9395ed9a285 --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/empty.xml.headers @@ -0,0 +1 @@ +Content-Type: application/xml;charset=utf-8 diff --git a/tests/wpt/web-platform-tests/acid/acid3/favicon.ico b/tests/wpt/web-platform-tests/acid/acid3/favicon.ico new file mode 100755 index 00000000000..e69de29bb2d --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/favicon.ico diff --git a/tests/wpt/web-platform-tests/acid/acid3/favicon.ico.headers b/tests/wpt/web-platform-tests/acid/acid3/favicon.ico.headers new file mode 100644 index 00000000000..afa04c171df --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/favicon.ico.headers @@ -0,0 +1 @@ +Content-Type: image/x-icon diff --git a/tests/wpt/web-platform-tests/acid/acid3/reference.png b/tests/wpt/web-platform-tests/acid/acid3/reference.png Binary files differnew file mode 100755 index 00000000000..22cd4cae083 --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/reference.png diff --git a/tests/wpt/web-platform-tests/acid/acid3/reference.sub.html b/tests/wpt/web-platform-tests/acid/acid3/reference.sub.html new file mode 100755 index 00000000000..310961363bf --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/reference.sub.html @@ -0,0 +1,21 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> +<html> + <title>The Acid3 Test (Reference Rendering)</title> + <link rel="icon" href="http://nonexistent-origin.{{host}}"> + <style type="text/css"> + html { margin: 0; padding: 0; } + body { background: #c0c0c0 url(reference.png) top left no-repeat; margin: 0; padding: 0; } + #a { font: bold 100px/120px Arial, sans-serif; position: absolute; top: 57px; left: 57px; color: #000000; z-index: 1; } + #a0 { font: bold 100px/120px Arial, sans-serif; position: absolute; top: 60px; left: 60px; color: #C0C0C0; z-index: 0; } + #b { position: absolute; top: 230px; left: 625px; width: 0; white-space: pre; } + #b div { font: bold 100px/120px Arial, sans-serif; position: absolute; right: 0; text-align: right; color: #000000; } + #c { font: 16px/19.2px Arial, sans-serif; color: #808080; width: 562px; position: absolute; top: 350px; left: 57px; } + #c a { color: #0000FF; } + </style> + <body> + <div id="a">Acid3</div> + <div id="a0">Acid3</div> + <div id="b"><div>100/100</div></div> + <div id="c">To pass the test,<span></span> a browser must use its default settings, the animation has to be smooth, the score has to end on 100/100, and the final page has to look exactly, pixel for pixel, like <a href="reference.sub.html">this reference rendering</a>.</div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/acid/acid3/support-a.png b/tests/wpt/web-platform-tests/acid/acid3/support-a.png Binary files differnew file mode 100755 index 00000000000..9f240083deb --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/support-a.png diff --git a/tests/wpt/web-platform-tests/acid/acid3/support-b.png b/tests/wpt/web-platform-tests/acid/acid3/support-b.png new file mode 100755 index 00000000000..752ee7ec05c --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/support-b.png @@ -0,0 +1 @@ +<!DOCTYPE html><html><head><title>FAIL</title><style> * { background: transparent; } </style></head><body><p><!-- this file is transparent --></p></body></html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/acid/acid3/support-b.png.headers b/tests/wpt/web-platform-tests/acid/acid3/support-b.png.headers new file mode 100644 index 00000000000..844a971169c --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/support-b.png.headers @@ -0,0 +1,2 @@ +Content-Type: text/html + diff --git a/tests/wpt/web-platform-tests/acid/acid3/svg.xml b/tests/wpt/web-platform-tests/acid/acid3/svg.xml new file mode 100755 index 00000000000..f5b1ffad147 --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/svg.xml @@ -0,0 +1 @@ +<?xml-stylesheet href="data:text/css,text%7Bfont-family%3AACID3svgfont%7D"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100" height="100"><defs><font-face font-family="ACID3svgfont"><font-face-src><font-face-uri xlink:href="font.svg#mini"/></font-face-src></font-face><path id="path" d="M0 0l0 42l16 16l4711 0"/></defs><text>X</text></svg> diff --git a/tests/wpt/web-platform-tests/acid/acid3/svg.xml.headers b/tests/wpt/web-platform-tests/acid/acid3/svg.xml.headers new file mode 100644 index 00000000000..070de35fbe9 --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/svg.xml.headers @@ -0,0 +1 @@ +Content-Type: image/svg+xml diff --git a/tests/wpt/web-platform-tests/acid/acid3/test.html b/tests/wpt/web-platform-tests/acid/acid3/test.html new file mode 100644 index 00000000000..d2f08405af5 --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/test.html @@ -0,0 +1,3510 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> +<html class="reftest-wait"> + <title>The Acid3 Test</title> + <link rel="match" href="reference.sub.html"> + <script type="text/javascript"> + var startTime = new Date(); + </script> + <style type="text/css"> + + /* set some basic styles so that we can get reliably exact results */ + * { margin: 0; border: 1px blue; padding: 0; border-spacing: 0; font: inherit; line-height: 1.2; color: inherit; background: transparent; } + :link, :visited { color: blue; } + + /* header and general layout */ + html { font: 20px Arial, sans-serif; border: 2cm solid gray; width: 32em; margin: 1em; } + :root { background: silver; color: black; border-width: 0 0.2em 0.2em 0; } /* left and top content edges: 1*20px = 20px */ + body { padding: 2em 2em 0; background: url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAABGdBTUEAAK%2FINwWK6QAAAAlwSFlzAAAASAAAAEgARslrPgAAABtJREFUOMtj%2FM9APmCiQO%2Bo5lHNo5pHNVNBMwAinAEnIWw89gAAACJ6VFh0U29mdHdhcmUAAHjac0zJT0pV8MxNTE8NSk1MqQQAL5wF1K4MqU0AAAAASUVORK5CYII%3D) no-repeat 99.8392283% 1px white; border: solid 1px black; margin: -0.2em 0 0 -0.2em; } /* left and top content edges: 20px-0.2*20px+1px+2*20px = 57px */ + h1:first-child { cursor: help; font-size: 5em; font-weight: bolder; margin-bottom: -0.4em; text-shadow: rgba(192, 192, 192, 1.0) 3px 3px; } /* (left:57px, top:57px) */ + #result { font-weight: bolder; width: 5.68em; text-align: right; } + #result { font-size: 5em; margin: -2.19em 0 0; } /* (right:57px+5.2*5*20px = 577px, top:57px+1.2*5*20px-0.4*5*20px+1px+1*40px+1*40px+1px+2*40px+150px-2.19*5*20px = 230px) */ + .hidden { visibility: hidden; } + #slash { color: red; color: hsla(0, 0%, 0%, 1.0); } + #instructions { margin-top: 0; font-size: 0.8em; color: gray; color: -acid3-bogus; height: 6.125em; } /* (left:57px, top:230px+1.2*5*20+0 = 350px) */ + #instructions { margin-right: -20px; padding-right: 20px; background: url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAABGdBTUEAAK%2FINwWK6QAAAAlwSFlzAAAASAAAAEgARslrPgAAABtJREFUOMtj%2FM9APmCiQO%2Bo5lHNo5pHNVNBMwAinAEnIWw89gAAACJ6VFh0U29mdHdhcmUAAHjac0zJT0pV8MxNTE8NSk1MqQQAL5wF1K4MqU0AAAAASUVORK5CYII%3D) no-repeat top right; } + #instructions span { float: right; width: 20px; margin-right: -20px; background: white; height: 20px; } + @font-face { font-family: "AcidAhemTest"; src: url(/fonts/Ahem.ttf); } + map::after { position: absolute; top: 18px; left: 638px; content: "X"; background: fuchsia; color: white; font: 20px/1 AcidAhemTest; } + iframe { float: left; height: 0; width: 0; } /* hide iframes but don't make them display: none */ + object { position: fixed; left: 130.5px; top: 84.3px; background: transparent; } /* show objects if they have content */ + .removed { position: absolute; top: 80px; left: 380px; height: 100px; width: 100px; opacity: 0; } + + /* set the line height of the line of coloured boxes so we can add them without the layout changing height */ + .buckets { font: 0/0 Arial, sans-serif; } + .buckets { padding: 0 0 150px 3px; } + + /* the next two rules give the six coloured blocks their default styles (they match the same elements); the third hides them */ + :first-child + * .buckets p { display: inline-block; vertical-align: 2em; border: 2em dotted red; padding: 1.0em 0 1.0em 2em; } + * + * > * > p { margin: 0; border: 1px solid ! important; } + .z { visibility: hidden; } /* only matches the buckets with no score */ + + /* sizes for the six buckets */ + #bucket1 { font-size: 20px; margin-left: 0.2em; padding-left: 1.3em; padding-right: 1.3em; margin-right: 0.0001px; } + #bucket2 { font-size: 24px; margin-left: 0.375em; padding-left: 30px; padding-right: 32px; margin-right: 2px; } + #bucket3 { font-size: 28px; margin-left: 8.9999px; padding-left: 17px; padding-right: 55px; margin-right: 12px; } + #bucket4 { font-size: 32px; margin-left: 0; padding-left: 84px; padding-right: 0; margin-right: 0; } + #bucket5 { font-size: 36px; margin-left: 13px; padding-left: 0; padding-right: 94px; margin-right: 25px; } + #bucket6 { font-size: 40px; margin-left: -10px; padding-left: 104px; padding-right: -10px; } + + /* colours for them */ + .z, .zP, .zPP, .zPPP, .zPPPP, .zPPPPP { background: black; } + .zPPPPPP, .zPPPPPPP, .zPPPPPPPP, .zPPPPPPPP, .zPPPPPPPPP, + .zPPPPPPPPPP { background: grey; } + .zPPPPPPPPPPP, .zPPPPPPPPPPPP, .zPPPPPPPPPPPPP, + .zPPPPPPPPPPPPPP, .zPPPPPPPPPPPPPPP { background: silver; } + #bucket1.zPPPPPPPPPPPPPPPP { background: red; } + #bucket2.zPPPPPPPPPPPPPPPP { background: orange; } + #bucket3.zPPPPPPPPPPPPPPPP { background: yellow; } + #bucket4.zPPPPPPPPPPPPPPPP { background: lime; } + #bucket5.zPPPPPPPPPPPPPPPP { background: blue; } + #bucket6.zPPPPPPPPPPPPPPPP { background: purple; } + + /* The line-height for the .bucket div is worked out as follows: + * + * The div.bucket element has a line box with a few + * inline-blocks. Each inline-block consists of: + * + * 2.0em vertical-align from baseline to bottom of inline-block + * 1px bottom border + * 1.0em bottom padding + * 1.0em top padding + * 1px top border + * + * The biggest inline-block has font-size: 40px. + * + * Thus the distance from the baseline to the top of the biggest + * inline-block is (2em+1em+1em)*2em*20px+2px = 162px. + * + * The line box itself has no other contents, and its strut has zero + * height and there is no half-leading, so the height of the + * div.bucket is 162px. + * + * (Why use line-height:0 and font-size:0? Well: + * + * The div.bucket line box would have a height that is the maximum + * of the following two sums: + * + * 1: half-leading + font descent at 1em + font ascent at 1em + half-leading + * 2: half-leading + font descent at 1em + 162px + * + * Now the half-leading is (line-height - (font-ascent + font-descent))/2, so that is really: + * + * 1: (line-height - (font-ascent + font-descent))/2 + font descent + font ascent + (line-height - (font-ascent + font-descent))/2 + * 2: (line-height - (font-ascent + font-descent))/2 + font descent + 162px + * + * Which simplify to: + * + * 1: line-height + * 2: line-height/2 + (font descent - font-ascent)/2 + 162px + * + * So if the following expression is true: + * + * line-height > line-height/2 + (font descent - font-ascent)/2 + 162px + * + * That is, if this is true: + * + * line-height > font descent - font-ascent + 324px + * + * ...then the line-height matters, otherwise the font does. Note + * that font descent - font-ascent will be in the region of + * 10px-30px (with Ahem, exactly 12px). However, if we make the + * line-height big, then the _positioning_ of the inline-blocks will + * depend on the font descent, since that is what will decide the + * distance from the bottom of the line box to the baseline of the + * block (since the baseline is set by the strut). + * + * However, in Acid2 a dependency on the font metrics was introduced + * and this caused all kinds of problems. And we can't require Ahem + * in the Acid tests, since it's unlikely most people will have it + * installed. + * + * What we want is for the font to not matter, and the baseline to + * be as high as possible. We can do that by saying that the font + * and the line-height are zero. + * + * One word of warning. If your browser has a minimum font size feature + * that forces font sizes up even when there is no text, you will need + * to disable it before running this test. + * + */ + + /* rules specific to the tests below */ + #instructions:last-child { white-space: pre-wrap; white-space: x-bogus; } + /* replaced for http://dbaron.org/mozilla/visited-privacy with the three rules after it: + #linktest:link { display: block; color: red; text-align: center; text-decoration: none; } + #linktest.pending, #linktest:visited { display: none; } */ + #linktest { position: absolute; left: 17px; top: 18px; color: red; width: 80px; text-decoration: none; font: 900 small-caps 10px sans-serif; } + #linktest:link { color: red; } + #linktest.pending, #linktest:visited { color: white; } + #\ { color: transparent; color: hsla(0, 0, 0, 1); position: fixed; top: 10px; left: 10px; font: 40px Arial, sans-serif; } + #\ #result, #\ #score { position: fixed; top: 10%; left: 10%; width: 4em; z-index: 1; color: yellow; font-size: 50px; background: fuchsia; border: solid 1em purple; } + </style> + + <!-- part of the HTTP tests --> + <link rel="stylesheet" href="empty.css"><!-- text/html file (should be ignored, <h1> will go red if it isn't) --> + + <!-- the next five script blocks are part of one of the tests --> + <script type="text/javascript"> + var d1 = "fail"; + var d2 = "fail"; + var d3 = "fail"; + var d4 = "fail"; + var d5 = "fail"; + </script> + <script type="text/javascript" src="data:text/javascript,d1%20%3D%20'one'%3B"></script> + <script type="text/javascript" src="data:text/javascript;base64,ZDIgPSAndHdvJzs%3D"></script> + <script type="text/javascript" src="data:text/javascript;base64,%5a%44%4d%67%50%53%41%6e%64%47%68%79%5a%57%55%6e%4f%77%3D%3D"></script> + <script type="text/javascript" src="data:text/javascript;base64,%20ZD%20Qg%0D%0APS%20An%20Zm91cic%0D%0A%207%20"></script> + <script type="text/javascript" src="data:text/javascript,d5%20%3D%20'five%5Cu0027s'%3B"></script> + + <!-- part of the JS regexp and \0 value tests test --> + <script type="text/javascript"> + var nullInRegexpArgumentResult = 0 < /script/.test('\0script') ? "passed" : "failed"; + </script> + + <!-- main test body --> + <script type="text/javascript"> + var notifications = {}; + function notify(file) { + // used in cross-file tests + notifications[file] = 1; + } + function fail(message) { + throw { message: message }; + } + function assert(condition, message) { + if (!condition) + fail(message); + } + function assertEquals(expression, value, message) { + if (expression != value) { + expression = (""+expression).replace(/[\r\n]+/g, "\\n"); + value = (""+value).replace(/\r?\n/g, "\\n"); + fail("expected '" + value + "' but got '" + expression + "' - " + message); + } + } + function getTestDocument() { + var iframe = document.getElementById("selectors"); + var doc = iframe.contentDocument; + for (var i = doc.documentElement.childNodes.length-1; i >= 0; i -= 1) + doc.documentElement.removeChild(doc.documentElement.childNodes[i]); + doc.documentElement.appendChild(doc.createElement('head')); + doc.documentElement.firstChild.appendChild(doc.createElement('title')); + doc.documentElement.appendChild(doc.createElement('body')); + return doc; + } + function selectorTest(tester) { + var doc = getTestDocument(); + var style = doc.createElement('style'); + style.appendChild(doc.createTextNode("* { z-index: 0; position: absolute; }\n")); + doc.documentElement.firstChild.appendChild(style); + var ruleCount = 0; + tester(doc, function (selector) { + ruleCount += 1; + style.appendChild(doc.createTextNode(selector + " { z-index: " + ruleCount + "; }\n")); + return ruleCount; + }, function(node, rule, message) { + var value = doc.defaultView.getComputedStyle(node, "").zIndex; + assert(value != 'auto', "underlying problems prevent this test from running properly"); + assertEquals(value, rule, message); + }); + } + var kungFuDeathGrip = null; // used to hold things from test to test + var tests = [ + + // there are 6 buckets with 16 tests each, plus four special tests (0, 97, 98, and 99). + + // Remove the "JS required" message and the <script> element in the <body> + function () { + // test 0: whether removing an element that is the last child correctly recomputes styles for the new last child + // also tests support for getComputedStyle, :last-child, pre-wrap, removing a <script> element + // removing script: + var scripts = document.getElementsByTagName('script'); + document.body.removeChild(scripts[scripts.length-1]); + // removing last child: + var last = document.getElementById('remove-last-child-test'); + var penultimate = last.previousSibling; // this should be the whitespace node + penultimate = penultimate.previousSibling; // this should now be the actual penultimate element + last.parentNode.removeChild(last); + assertEquals(document.defaultView.getComputedStyle(penultimate, '').whiteSpace, 'pre-wrap', "found unexpected computed style"); + return 7; + }, + + // bucket 1: DOM Traversal, DOM Range, HTTP + // DOM Traversal + function () { + // test 1: NodeFilters and Exceptions + var doc = getTestDocument(); // looks like <!DOCTYPE><html><head><title/><\head><body/><\html> (the '\'s are to avoid validation errors) + var iteration = 0; + var exception = "Roses"; + var test = function(node) { + iteration += 1; + switch (iteration) { + case 1: case 3: case 4: case 6: case 7: case 8: case 9: case 14: case 15: throw exception; + case 2: case 5: case 10: case 11: case 12: case 13: return true; // ToNumber(true) => 1 + default: throw 0; + }; + }; + var check = function(o, method) { + var ok = false; + try { + o[method](); + } catch (e) { + if (e === exception) + ok = true; + } + assert(ok, "method " + o + "." + method + "() didn't forward exception"); + }; + var i = doc.createNodeIterator(doc.documentElement, 0xFFFFFFFF, test, true); + check(i, "nextNode"); // 1 + assertEquals(i.nextNode(), doc.documentElement, "i.nextNode() didn't return the right node"); // 2 + check(i, "previousNode"); // 3 + var w = document.createTreeWalker(doc.documentElement, 0xFFFFFFFF, test, true); + check(w, "nextNode"); // 4 + assertEquals(w.nextNode(), doc.documentElement.firstChild, "w.nextNode() didn't return the right node"); // 5 + check(w, "previousNode"); // 6 + check(w, "firstChild"); // 7 + check(w, "lastChild"); // 8 + check(w, "nextSibling"); // 9 + assertEquals(iteration, 9, "iterations went wrong"); + assertEquals(w.previousSibling(), null, "w.previousSibling() didn't return the right node"); // doesn't call filter + assertEquals(iteration, 9, "filter called incorrectly for previousSibling()"); + assertEquals(w.lastChild(), doc.getElementsByTagName('title')[0], "w.lastChild() didn't return the right node"); // 10 + assertEquals(w.nextSibling(), null, "w.nextSibling() didn't return the right node"); // 11 (filter called on parent, to see if it's included, otherwise it could skip that and find a nextsibling elsewhere) + assertEquals(iteration, 11, "filter called incorrectly for nextSibling()"); + assertEquals(w.parentNode(), doc.documentElement.firstChild, "w.parentNode() didn't return the right node"); // 12 + assertEquals(w.nextSibling(), doc.documentElement.lastChild, "w.nextSibling() didn't return the right node"); // 13 + check(w, "previousSibling"); // 14 + check(w, "parentNode"); // 15 + return 1; + }, + function () { + // test 2: Removing nodes during iteration + var count = 0; + var expect = function(n, node1, node2) { + count += 1; + assert(n == count, "reached expectation " + n + " when expecting expectation " + count); + assertEquals(node1, node2, "expectation " + count + " failed"); + }; + var doc = getTestDocument(); + var t1 = doc.body.appendChild(doc.createElement('t1')); + var t2 = doc.body.appendChild(doc.createElement('t2')); + var t3 = doc.body.appendChild(doc.createElement('t3')); + var t4 = doc.body.appendChild(doc.createElement('t4')); + var callCount = 0; + var filterFunctions = [ + function (node) { expect(1, node, doc.body); return true; }, // filter 0 + function (node) { expect(3, node, t1); return true; }, // filter 1 + function (node) { expect(5, node, t2); return true; }, // filter 2 + function (node) { expect(7, node, t3); doc.body.removeChild(t4); return true; }, // filter 3 + function (node) { expect(9, node, t4); return true; }, // filter 4 + function (node) { expect(11, node, t4); doc.body.removeChild(t4); return 2 /* REJECT */; }, // filter 5 + function (node) { expect(12, node, t3); return true; }, // filter 6 + function (node) { expect(14, node, t2); doc.body.removeChild(t2); return true; }, // filter 7 + function (node) { expect(16, node, t1); return true; }, // filter 8 + ]; + var i = doc.createNodeIterator(doc.documentElement.lastChild, 0xFFFFFFFF, function (node) { return filterFunctions[callCount++](node); }, true); + // * B 1 2 3 4 + expect(2, i.nextNode(), doc.body); // filter 0 + // [B] * 1 2 3 4 + expect(4, i.nextNode(), t1); // filter 1 + // B [1] * 2 3 4 + expect(6, i.nextNode(), t2); // filter 2 + // B 1 [2] * 3 4 + expect(8, i.nextNode(), t3); // filter 3 + // B 1 2 [3] * + doc.body.appendChild(t4); + // B 1 2 [3] * 4 + expect(10, i.nextNode(), t4); // filter 4 + // B 1 2 3 [4] * + expect(13, i.previousNode(), t3); // filters 5, 6 + // B 1 2 3 * (4) // filter 5 + // B 1 2 [3] * // between 5 and 6 + // B 1 2 * (3) // filter 6 + // B 1 2 * [3] + expect(15, i.previousNode(), t2); // filter 7 + // B 1 * (2) [3] + // -- spec says "For instance, if a NodeFilter removes a node + // from a document, it can still accept the node, which + // means that the node may be returned by the NodeIterator + // or TreeWalker even though it is no longer in the subtree + // being traversed." + // -- but it also says "If changes to the iterated list do not + // remove the reference node, they do not affect the state + // of the NodeIterator." + // B 1 * [3] + expect(17, i.previousNode(), t1); // filter 8 + // B [1] * 3 + return 1; + }, + function () { + // test 3: the infinite iterator + var doc = getTestDocument(); + for (var i = 0; i < 5; i += 1) { + doc.body.appendChild(doc.createElement('section')); + doc.body.lastChild.title = i; + } + var count = 0; + var test = function() { + if (count > 3 && count < 12) + doc.body.appendChild(doc.body.firstChild); + count += 1; + return (count % 2 == 0) ? 1 : 2; + }; + var i = doc.createNodeIterator(doc.body, 0xFFFFFFFF, test, true); + assertEquals(i.nextNode().title, "0", "failure 1"); + assertEquals(i.nextNode().title, "2", "failure 2"); + assertEquals(i.nextNode().title, "4", "failure 3"); + assertEquals(i.nextNode().title, "1", "failure 4"); + assertEquals(i.nextNode().title, "3", "failure 5"); + assertEquals(i.nextNode().title, "0", "failure 6"); + assertEquals(i.nextNode().title, "2", "failure 7"); + assertEquals(i.nextNode(), null, "failure 8"); + return 1; + }, + function () { + // test 4: ignoring whitespace text nodes with node iterators + var count = 0; + var expect = function(node1, node2) { + count += 1; + assertEquals(node1, node2, "expectation " + count + " failed"); + }; + var allButWS = function (node) { + if (node.nodeType == 3 && node.data.match(/^\s*$/)) + return 2; + return 1; + }; + var i = document.createNodeIterator(document.body, 0x01 | 0x04 | 0x08 | 0x10 | 0x20, allButWS, true); + // now walk the document body and make sure everything is in the right place + expect(i.nextNode(), document.body); // 1 + expect(i.nextNode(), document.getElementsByTagName('h1')[0]); + expect(i.nextNode(), document.getElementsByTagName('h1')[0].firstChild); + expect(i.nextNode(), document.getElementsByTagName('div')[0]); + expect(i.nextNode(), document.getElementById('bucket1')); + expect(i.nextNode(), document.getElementById('bucket2')); + expect(i.nextNode(), document.getElementById('bucket3')); + expect(i.nextNode(), document.getElementById('bucket4')); + expect(i.nextNode(), document.getElementById('bucket5')); + expect(i.nextNode(), document.getElementById('bucket6')); // 10 + expect(i.nextNode(), document.getElementById('result')); + expect(i.nextNode(), document.getElementById('score')); + expect(i.nextNode(), document.getElementById('score').firstChild); + expect(i.nextNode(), document.getElementById('slash')); + expect(i.nextNode(), document.getElementById('slash').firstChild); + expect(i.nextNode(), document.getElementById('slash').nextSibling); + expect(i.nextNode(), document.getElementById('slash').nextSibling.firstChild); + expect(i.nextNode(), document.getElementsByTagName('map')[0]); + expect(i.nextNode(), document.getElementsByTagName('area')[0]); + expect(i.nextNode(), document.getElementsByTagName('iframe')[0]); // 20 + expect(i.nextNode(), document.getElementsByTagName('iframe')[0].firstChild); + expect(i.nextNode(), document.getElementsByTagName('iframe')[1]); + expect(i.nextNode(), document.getElementsByTagName('iframe')[1].firstChild); + expect(i.nextNode(), document.getElementsByTagName('iframe')[2]); + expect(i.nextNode(), document.forms[0]); + expect(i.nextNode(), document.forms.form.elements[0]); + expect(i.nextNode(), document.getElementsByTagName('table')[0]); + expect(i.nextNode(), document.getElementsByTagName('tbody')[0]); + expect(i.nextNode(), document.getElementsByTagName('tr')[0]); + expect(i.nextNode(), document.getElementsByTagName('td')[0]); + expect(i.nextNode(), document.getElementsByTagName('td')[0].getElementsByTagName('p')[0]); + expect(i.nextNode(), document.getElementById('instructions')); + expect(i.nextNode(), document.getElementById('instructions').firstChild); + expect(i.nextNode().nodeName, "SPAN"); + expect(i.nextNode().nodeName, "#text"); + expect(i.nextNode(), document.links[1]); + expect(i.nextNode(), document.links[1].firstChild); + expect(i.nextNode(), document.getElementById('instructions').lastChild); + expect(i.nextNode(), null); + // walk it backwards for good measure + expect(i.previousNode(), document.getElementById('instructions').lastChild); + expect(i.previousNode(), document.links[1].firstChild); + expect(i.previousNode(), document.links[1]); + expect(i.previousNode().nodeName, "#text"); + expect(i.previousNode().nodeName, "SPAN"); + expect(i.previousNode(), document.getElementById('instructions').firstChild); + expect(i.previousNode(), document.getElementById('instructions')); + expect(i.previousNode(), document.getElementsByTagName('td')[0].getElementsByTagName('p')[0]); + expect(i.previousNode(), document.getElementsByTagName('td')[0]); + expect(i.previousNode(), document.getElementsByTagName('tr')[0]); + expect(i.previousNode(), document.getElementsByTagName('tbody')[0]); + expect(i.previousNode(), document.getElementsByTagName('table')[0]); + expect(i.previousNode(), document.forms.form.elements[0]); + expect(i.previousNode(), document.forms[0]); + expect(i.previousNode(), document.getElementsByTagName('iframe')[2]); + expect(i.previousNode(), document.getElementsByTagName('iframe')[1].firstChild); + expect(i.previousNode(), document.getElementsByTagName('iframe')[1]); + expect(i.previousNode(), document.getElementsByTagName('iframe')[0].firstChild); + expect(i.previousNode(), document.getElementsByTagName('iframe')[0]); // 20 + expect(i.previousNode(), document.getElementsByTagName('area')[0]); + expect(i.previousNode(), document.getElementsByTagName('map')[0]); + expect(i.previousNode(), document.getElementById('slash').nextSibling.firstChild); + expect(i.previousNode(), document.getElementById('slash').nextSibling); + expect(i.previousNode(), document.getElementById('slash').firstChild); + expect(i.previousNode(), document.getElementById('slash')); + expect(i.previousNode(), document.getElementById('score').firstChild); + expect(i.previousNode(), document.getElementById('score')); + expect(i.previousNode(), document.getElementById('result')); + expect(i.previousNode(), document.getElementById('bucket6')); + expect(i.previousNode(), document.getElementById('bucket5')); + expect(i.previousNode(), document.getElementById('bucket4')); + expect(i.previousNode(), document.getElementById('bucket3')); + expect(i.previousNode(), document.getElementById('bucket2')); + expect(i.previousNode(), document.getElementById('bucket1')); + expect(i.previousNode(), document.getElementsByTagName('div')[0]); + expect(i.previousNode(), document.getElementsByTagName('h1')[0].firstChild); + expect(i.previousNode(), document.getElementsByTagName('h1')[0]); + expect(i.previousNode(), document.body); + expect(i.previousNode(), null); + return 1; + }, + function () { + // test 5: ignoring whitespace text nodes with tree walkers + var count = 0; + var expect = function(node1, node2) { + count += 1; + assertEquals(node1, node2, "expectation " + count + " failed"); + }; + var allButWS = function (node) { + if (node.nodeType == 3 && node.data.match(/^\s*$/)) + return 3; + return 1; + }; + var w = document.createTreeWalker(document.body, 0x01 | 0x04 | 0x08 | 0x10 | 0x20, allButWS, true); + expect(w.currentNode, document.body); + expect(w.parentNode(), null); + expect(w.currentNode, document.body); + expect(w.firstChild(), document.getElementsByTagName('h1')[0]); + expect(w.firstChild().nodeType, 3); + expect(w.parentNode(), document.getElementsByTagName('h1')[0]); + expect(w.nextSibling().previousSibling.nodeType, 3); + expect(w.nextSibling(), document.getElementsByTagName('p')[6]); + expect(w.nextSibling(), document.getElementsByTagName('map')[0]); + expect(w.lastChild(), document.getElementsByTagName('table')[0]); + expect(w.lastChild(), document.getElementsByTagName('tbody')[0]); + expect(w.nextNode(), document.getElementsByTagName('tr')[0]); + expect(w.nextNode(), document.getElementsByTagName('td')[0]); + expect(w.nextNode(), document.getElementsByTagName('p')[7]); + expect(w.nextNode(), document.getElementsByTagName('p')[8]); // instructions.inc paragraph + expect(w.previousSibling(), document.getElementsByTagName('map')[0]); + expect(w.previousNode().data, "100"); + expect(w.parentNode().tagName, "SPAN"); + expect(w.parentNode(), document.getElementById('result')); + expect(w.parentNode(), document.body); + expect(w.lastChild().id, "instructions"); + expect(w.lastChild().data.substr(0,1), "."); + expect(w.previousNode(), document.links[1].firstChild); + return 1; + }, + function () { + // test 6: walking outside a tree + var doc = getTestDocument(); + var p = doc.createElement('p'); + doc.body.appendChild(p); + var b = doc.body; + var w = document.createTreeWalker(b, 0xFFFFFFFF, null, true); + assertEquals(w.currentNode, b, "basic use of TreeWalker failed: currentNode"); + assertEquals(w.lastChild(), p, "basic use of TreeWalker failed: lastChild()"); + assertEquals(w.previousNode(), b, "basic use of TreeWalker failed: previousNode()"); + doc.documentElement.removeChild(b); + assertEquals(w.lastChild(), p, "TreeWalker failed after removing the current node from the tree"); + assertEquals(w.nextNode(), null, "failed to walk into the end of a subtree"); + doc.documentElement.appendChild(p); + assertEquals(w.previousNode(), doc.getElementsByTagName('title')[0], "failed to handle regrafting correctly"); + p.appendChild(b); + assertEquals(w.nextNode(), p, "couldn't retrace steps"); + assertEquals(w.nextNode(), b, "couldn't step back into root"); + assertEquals(w.previousNode(), null, "root didn't retake its rootish position"); + return 1; + }, + + // DOM Range + function () { + // test 7: basic ranges tests + var r = document.createRange(); + assert(r, "range not created"); + assert(r.collapsed, "new range wasn't collapsed"); + assertEquals(r.commonAncestorContainer, document, "new range's common ancestor wasn't the document"); + assertEquals(r.startContainer, document, "new range's start container wasn't the document"); + assertEquals(r.startOffset, 0, "new range's start offset wasn't zero"); + assertEquals(r.endContainer, document, "new range's end container wasn't the document"); + assertEquals(r.endOffset, 0, "new range's end offset wasn't zero"); + assert(r.cloneContents(), "cloneContents() didn't return an object"); + assertEquals(r.cloneContents().childNodes.length, 0, "nothing cloned was more than nothing"); + assertEquals(r.cloneRange().toString(), "", "nothing cloned stringifed to more than nothing"); + r.collapse(true); // no effect + assertEquals(r.compareBoundaryPoints(r.START_TO_END, r.cloneRange()), 0, "starting boundary point of range wasn't the same as the end boundary point of the clone range"); + r.deleteContents(); // no effect + assertEquals(r.extractContents().childNodes.length, 0, "nothing removed was more than nothing"); + var endOffset = r.endOffset; + r.insertNode(document.createComment("commented inserted to test ranges")); + r.setEnd(r.endContainer, endOffset + 1); // added to work around spec bug that smaug is blocking the errata for + try { + assert(!r.collapsed, "range with inserted comment is collapsed"); + assertEquals(r.commonAncestorContainer, document, "range with inserted comment has common ancestor that isn't the document"); + assertEquals(r.startContainer, document, "range with inserted comment has start container that isn't the document"); + assertEquals(r.startOffset, 0, "range with inserted comment has start offset that isn't zero"); + assertEquals(r.endContainer, document, "range with inserted comment has end container that isn't the document"); + assertEquals(r.endOffset, 1, "range with inserted comment has end offset that isn't after the comment"); + } finally { + document.removeChild(document.firstChild); + } + return 1; + }, + function () { + // test 8: moving boundary points + var doc = document.implementation.createDocument(null, null, null); + var root = doc.createElement("root"); + doc.appendChild(root); + var e1 = doc.createElement("e"); + root.appendChild(e1); + var e2 = doc.createElement("e"); + root.appendChild(e2); + var e3 = doc.createElement("e"); + root.appendChild(e3); + var r = doc.createRange(); + r.setStart(e2, 0); + r.setEnd(e3, 0); + assert(!r.collapsed, "non-empty range claims to be collapsed"); + r.setEnd(e1, 0); + assert(r.collapsed, "setEnd() didn't collapse the range"); + assertEquals(r.startContainer, e1, "startContainer is wrong after setEnd()"); + assertEquals(r.startOffset, 0, "startOffset is wrong after setEnd()"); + assertEquals(r.endContainer, e1, "endContainer is wrong after setEnd()"); + assertEquals(r.endOffset, 0, "endOffset is wrong after setEnd()"); + r.setStartBefore(e3); + assert(r.collapsed, "setStartBefore() didn't collapse the range"); + assertEquals(r.startContainer, root, "startContainer is wrong after setStartBefore()"); + assertEquals(r.startOffset, 2, "startOffset is wrong after setStartBefore()"); + assertEquals(r.endContainer, root, "endContainer is wrong after setStartBefore()"); + assertEquals(r.endOffset, 2, "endOffset is wrong after setStartBefore()"); + r.setEndAfter(root); + assert(!r.collapsed, "setEndAfter() didn't uncollapse the range"); + assertEquals(r.startContainer, root, "startContainer is wrong after setEndAfter()"); + assertEquals(r.startOffset, 2, "startOffset is wrong after setEndAfter()"); + assertEquals(r.endContainer, doc, "endContainer is wrong after setEndAfter()"); + assertEquals(r.endOffset, 1, "endOffset is wrong after setEndAfter()"); + r.setStartAfter(e2); + assert(!r.collapsed, "setStartAfter() collapsed the range"); + assertEquals(r.startContainer, root, "startContainer is wrong after setStartAfter()"); + assertEquals(r.startOffset, 2, "startOffset is wrong after setStartAfter()"); + assertEquals(r.endContainer, doc, "endContainer is wrong after setStartAfter()"); + assertEquals(r.endOffset, 1, "endOffset is wrong after setStartAfter()"); + var msg = ''; + try { + r.setEndBefore(doc); + msg = "no exception thrown for setEndBefore() the document itself"; + } catch (e) { +// COMMENTED OUT FOR 2011 UPDATE - we may want to merge RangeException and DOMException +// if (e.BAD_BOUNDARYPOINTS_ERR != 1) +// msg = 'not a RangeException'; +// else +// if (e.INVALID_NODE_TYPE_ERR != 2) +// msg = 'RangeException has no INVALID_NODE_TYPE_ERR'; +// else +// if ("INVALID_ACCESS_ERR" in e) +// msg = 'RangeException has DOMException constants'; +// else + if (e.code != e.INVALID_NODE_TYPE_ERR) + msg = 'wrong exception raised from setEndBefore()'; + } + assert(msg == "", msg); + assert(!r.collapsed, "setEndBefore() collapsed the range"); + assertEquals(r.startContainer, root, "startContainer is wrong after setEndBefore()"); + assertEquals(r.startOffset, 2, "startOffset is wrong after setEndBefore()"); + assertEquals(r.endContainer, doc, "endContainer is wrong after setEndBefore()"); + assertEquals(r.endOffset, 1, "endOffset is wrong after setEndBefore()"); + r.collapse(false); + assert(r.collapsed, "collapse() collapsed the range"); + assertEquals(r.startContainer, doc, "startContainer is wrong after collapse()"); + assertEquals(r.startOffset, 1, "startOffset is wrong after collapse()"); + assertEquals(r.endContainer, doc, "endContainer is wrong after collapse()"); + assertEquals(r.endOffset, 1, "endOffset is wrong after collapse()"); + r.selectNodeContents(root); + assert(!r.collapsed, "collapsed is wrong after selectNodeContents()"); + assertEquals(r.startContainer, root, "startContainer is wrong after selectNodeContents()"); + assertEquals(r.startOffset, 0, "startOffset is wrong after selectNodeContents()"); + assertEquals(r.endContainer, root, "endContainer is wrong after selectNodeContents()"); + assertEquals(r.endOffset, 3, "endOffset is wrong after selectNodeContents()"); + r.selectNode(e2); + assert(!r.collapsed, "collapsed is wrong after selectNode()"); + assertEquals(r.startContainer, root, "startContainer is wrong after selectNode()"); + assertEquals(r.startOffset, 1, "startOffset is wrong after selectNode()"); + assertEquals(r.endContainer, root, "endContainer is wrong after selectNode()"); + assertEquals(r.endOffset, 2, "endOffset is wrong after selectNode()"); + return 1; + }, + function () { + // test 9: extractContents() in a Document + var doc = getTestDocument(); + var h1 = doc.createElement('h1'); + var t1 = doc.createTextNode('Hello '); + h1.appendChild(t1); + var em = doc.createElement('em'); + var t2 = doc.createTextNode('Wonderful'); + em.appendChild(t2); + h1.appendChild(em); + var t3 = doc.createTextNode(' Kitty'); + h1.appendChild(t3); + doc.body.appendChild(h1); + var p = doc.createElement('p'); + var t4 = doc.createTextNode('How are you?'); + p.appendChild(t4); + doc.body.appendChild(p); + var r = doc.createRange(); + r.selectNodeContents(doc); + assertEquals(r.toString(), "Hello Wonderful KittyHow are you?", "toString() on range selecting Document gave wrong output"); + r.setStart(t2, 6); + r.setEnd(p, 0); + // <body><h1>Hello <em>Wonder ful<\em> Kitty<\h1><p> How are you?<\p><\body> (the '\'s are to avoid validation errors) + // ^----------------------^ + assertEquals(r.toString(), "ful Kitty", "toString() on range crossing text nodes gave wrong output"); + var f = r.extractContents(); + // <h1><em>ful<\em> Kitty<\h1><p><\p> + // ccccccccccccccccMMMMMMcccccccccccc + assertEquals(f.nodeType, 11, "failure 1"); + assert(f.childNodes.length == 2, "expected two children in the result, got " + f.childNodes.length); + assertEquals(f.childNodes[0].tagName, "H1", "failure 3"); + assert(f.childNodes[0] != h1, "failure 4"); + assertEquals(f.childNodes[0].childNodes.length, 2, "failure 5"); + assertEquals(f.childNodes[0].childNodes[0].tagName, "EM", "failure 6"); + assert(f.childNodes[0].childNodes[0] != em, "failure 7"); + assertEquals(f.childNodes[0].childNodes[0].childNodes.length, 1, "failure 8"); + assertEquals(f.childNodes[0].childNodes[0].childNodes[0].data, "ful", "failure 9"); + assert(f.childNodes[0].childNodes[0].childNodes[0] != t2, "failure 10"); + assertEquals(f.childNodes[0].childNodes[1], t3, "failure 11"); + assert(f.childNodes[0].childNodes[1] != em, "failure 12"); + assertEquals(f.childNodes[1].tagName, "P", "failure 13"); + assertEquals(f.childNodes[1].childNodes.length, 0, "failure 14"); + assert(f.childNodes[1] != p, "failure 15"); + return 1; + }, + function () { + // test 10: Ranges and Attribute Nodes +// COMMENTED OUT FOR 2011 UPDATE - turns out instead of dropping Attr entirely, as Acid3 originally expected, the API is just being refactored +// var e = document.getElementById('result'); +// if (!e.getAttributeNode) +// return 1; // support for attribute nodes is optional in Acid3, because attribute nodes might be removed from DOM Core in the future. +// // however, if they're supported, they'd better work: +// var a = e.getAttributeNode('id'); +// var r = document.createRange(); +// r.selectNodeContents(a); +// assertEquals(r.toString(), "result", "toString() didn't work for attribute node"); +// var t = a.firstChild; +// var f = r.extractContents(); +// assertEquals(f.childNodes.length, 1, "extracted contents were the wrong length"); +// assertEquals(f.childNodes[0], t, "extracted contents were the wrong node"); +// assertEquals(t.textContent, 'result', "extracted contents didn't match old attribute value"); +// assertEquals(r.toString(), '', "extracting contents didn't empty attribute value; instead equals '" + r.toString() + "'"); +// assertEquals(e.getAttribute('id'), '', "extracting contents didn't change 'id' attribute to empty string"); +// e.id = 'result'; + return 1; + }, + function () { + // test 11: Ranges and Comments + var msg; + var doc = getTestDocument(); + var c1 = doc.createComment("11111"); + doc.appendChild(c1); + var r = doc.createRange(); + r.selectNode(c1); + msg = 'wrong exception raised'; + try { + r.surroundContents(doc.createElement('a')); + msg = 'no exception raised'; + } catch (e) { + if ('code' in e) + msg += '; code = ' + e.code; + if (e.code == 3) // HIERARCHY_REQUEST_ERR + msg = ''; + } + assert(msg == '', "when inserting <a> into Document with another child: " + msg); + var c2 = doc.createComment("22222"); + doc.body.appendChild(c2); + var c3 = doc.createComment("33333"); + doc.body.appendChild(c3); + r.setStart(c2, 2); + r.setEnd(c3, 3); + var msg = 'wrong exception raised'; + try { + r.surroundContents(doc.createElement('a')); + msg = 'no exception raised'; + } catch (e) { +// COMMENTED OUT FOR 2011 UPDATE - DOM Core changes the exception from RangeException.BAD_BOUNDARYPOINTS_ERR (1) to DOMException.INVALID_STATE_ERR (11) +// if ('code' in e) +// msg += '; code = ' + e.code; +// if (e.code == 1) + msg = ''; + } + assert(msg == '', "when trying to surround two halves of comment: " + msg); + assertEquals(r.toString(), "", "comments returned text"); + return 1; + }, + function () { + // test 12: Ranges under mutations: insertion into text nodes + var doc = getTestDocument(); + var p = doc.createElement('p'); + var t1 = doc.createTextNode('12345'); + p.appendChild(t1); + var t2 = doc.createTextNode('ABCDE'); + p.appendChild(t2); + doc.body.appendChild(p); + var r = doc.createRange(); + r.setStart(p.firstChild, 2); + r.setEnd(p.firstChild, 3); + assert(!r.collapsed, "collapsed is wrong at start"); + assertEquals(r.commonAncestorContainer, p.firstChild, "commonAncestorContainer is wrong at start"); + assertEquals(r.startContainer, p.firstChild, "startContainer is wrong at start"); + assertEquals(r.startOffset, 2, "startOffset is wrong at start"); + assertEquals(r.endContainer, p.firstChild, "endContainer is wrong at start"); + assertEquals(r.endOffset, 3, "endOffset is wrong at start"); + assertEquals(r.toString(), "3", "range in text node stringification failed"); + r.insertNode(p.lastChild); + assertEquals(p.childNodes.length, 3, "insertion of node made wrong number of child nodes"); + assertEquals(p.childNodes[0], t1, "unexpected first text node"); + assertEquals(p.childNodes[0].data, "12", "unexpected first text node contents"); + assertEquals(p.childNodes[1], t2, "unexpected second text node"); + assertEquals(p.childNodes[1].data, "ABCDE", "unexpected second text node"); + assertEquals(p.childNodes[2].data, "345", "unexpected third text node contents"); + // The spec is very vague about what exactly should be in the range afterwards: + // the insertion results in a splitText(), which it says is equivalent to a truncation + // followed by an insertion, but it doesn't say what to do when you have a truncation, + // so we don't know where either the start or the end boundary points end up. + // The spec really should be clarified for how to handle splitText() and + // text node truncation in general + // The only thing that seems very clear is that the inserted text node should + // be in the range, and it has to be at the start, since insertion always puts it at + // the start. + assert(!r.collapsed, "collapsed is wrong after insertion"); + assert(r.toString().match(/^ABCDE/), "range didn't start with the expected text; range stringified to '" + r.toString() + "'"); + return 1; + }, + function () { + // test 13: Ranges under mutations: deletion + var doc = getTestDocument(); + var p = doc.createElement('p'); + p.appendChild(doc.createTextNode("12345")); + doc.body.appendChild(p); + var r = doc.createRange(); + r.setEnd(doc.body, 1); + r.setStart(p.firstChild, 2); + assert(!r.collapsed, "collapsed is wrong at start"); + assertEquals(r.commonAncestorContainer, doc.body, "commonAncestorContainer is wrong at start"); + assertEquals(r.startContainer, p.firstChild, "startContainer is wrong at start"); + assertEquals(r.startOffset, 2, "startOffset is wrong at start"); + assertEquals(r.endContainer, doc.body, "endContainer is wrong at start"); + assertEquals(r.endOffset, 1, "endOffset is wrong at start"); + doc.body.removeChild(p); + assert(r.collapsed, "collapsed is wrong after deletion"); + assertEquals(r.commonAncestorContainer, doc.body, "commonAncestorContainer is wrong after deletion"); + assertEquals(r.startContainer, doc.body, "startContainer is wrong after deletion"); + assertEquals(r.startOffset, 0, "startOffset is wrong after deletion"); + assertEquals(r.endContainer, doc.body, "endContainer is wrong after deletion"); + assertEquals(r.endOffset, 0, "endOffset is wrong after deletion"); + return 1; + }, + + // HTTP + function () { + // test 14: HTTP - Content-Type: image/png + assert(!notifications['empty.png'], "privilege escalation security bug: PNG ran script"); + var iframe = document.getElementsByTagName('iframe')[0]; + assert(iframe, "no <iframe> support"); + if (iframe && iframe.contentDocument) { + var ps = iframe.contentDocument.getElementsByTagName('p'); + if (ps.length > 0) { + if (ps[0].firstChild && ps[0].firstChild.data && ps[0].firstChild.data == 'FAIL') + fail("PNG was parsed as HTML."); + } + } + return 1; + }, + function () { + // test 15: HTTP - Content-Type: text/plain + assert(!notifications['empty.txt'], "privilege escalation security bug: text file ran script"); + var iframe = document.getElementsByTagName('iframe')[1]; + assert(iframe, "no <iframe> support"); + if (iframe && iframe.contentDocument) { + var ps = iframe.contentDocument.getElementsByTagName('p'); + if (ps.length > 0) { + if (ps[0].firstChild && ps[0].firstChild.data && ps[0].firstChild.data == 'FAIL') + fail("text/plain file was parsed as HTML"); + } + } + return 1; + }, + function () { + // test 16: <object> handling and HTTP status codes + var oC = document.createElement('object'); + oC.appendChild(document.createTextNode("FAIL")); + var oB = document.createElement('object'); + var oA = document.createElement('object'); + oA.data = "support-a.png?pipe=status(404)"; + oB.data = "support-b.png"; + oB.appendChild(oC); + oC.data = "support-c.png"; + oA.appendChild(oB); + document.getElementsByTagName("map")[0].appendChild(oA); + // assuming the above didn't raise any exceptions, this test has passed + // (the real test is whether the rendering is correct) + return 1; + }, + + // bucket 2: DOM2 Core and DOM2 Events + // Core + function () { + // test 17: hasAttribute + // missing attribute + assert(!document.getElementsByTagName('map')[0].hasAttribute('id'), "hasAttribute failure for 'id' on map"); + // implied attribute + assert(!document.getElementsByTagName('form')[0].hasAttribute('method'), "hasAttribute failure for 'method' on form"); + // actually present attribute + assert(document.getElementsByTagName('form')[0].hasAttribute('action'), "hasAttribute failure for 'action' on form"); + assertEquals(document.getElementsByTagName('form')[0].getAttribute('action'), '', "attribute 'action' on form has wrong value"); + return 2; + }, + function () { + // test 18: nodeType (this test also relies on accurate parsing of the document) + assertEquals(document.nodeType, 9, "document nodeType wrong"); + assertEquals(document.documentElement.nodeType, 1, "element nodeType wrong"); +// COMMENTED OUT FOR 2011 UPDATE - turns out instead of dropping Attr entirely, as Acid3 originally expected, the API is just being refactored +// if (document.createAttribute) // support for attribute nodes is optional in Acid3, because attribute nodes might be removed from DOM Core in the future. +// assertEquals(document.createAttribute('test').nodeType, 2, "attribute nodeType wrong"); // however, if they're supported, they'd better work + assertEquals(document.getElementById('score').firstChild.nodeType, 3, "text node nodeType wrong"); + assertEquals(document.firstChild.nodeType, 10, "DOCTYPE nodeType wrong"); + return 2; + }, + function () { + // test 19: value of constants + var e = null; + try { + document.body.appendChild(document.documentElement); + // raises a HIERARCHY_REQUEST_ERR + } catch (err) { + e = err; + } + assertEquals(document.DOCUMENT_FRAGMENT_NODE, 11, "document DOCUMENT_FRAGMENT_NODE constant missing or wrong"); + assertEquals(document.body.COMMENT_NODE, 8, "element COMMENT_NODE constant missing or wrong"); + assertEquals(document.createTextNode('').ELEMENT_NODE, 1, "text node ELEMENT_NODE constant missing or wrong"); + assert(e.HIERARCHY_REQUEST_ERR == 3, "exception HIERARCHY_REQUEST_ERR constant missing or wrong") + assertEquals(e.code, 3, "incorrect exception raised from appendChild()"); + return 2; + }, + function () { + // test 20: nulls bytes in various places + assert(!document.getElementById('bucket1\0error'), "null in getElementById() probably terminated string"); + var ok = true; + try { + document.createElement('form\0div'); + ok = false; + } catch (e) { + if (e.code != 5) + ok = false; + } + assert(ok, "didn't raise the right exception for null byte in createElement()"); + return 2; + }, + function () { + // test 21: basic namespace stuff + var element = document.createElementNS('http://ns.example.com/', 'prefix:localname'); + assertEquals(element.tagName, 'prefix:localname', "wrong tagName"); + assertEquals(element.nodeName, 'prefix:localname', "wrong nodeName"); + assertEquals(element.prefix, 'prefix', "wrong prefix"); + assertEquals(element.localName, 'localname', "wrong localName"); + assertEquals(element.namespaceURI, 'http://ns.example.com/', "wrong namespaceURI"); + return 2; + }, + function () { + // test 22: createElement() with invalid tag names + var test = function (name) { + var result; + try { + var div = document.createElement(name); + } catch (e) { + result = e; + } + assert(result, "no exception for createElement('" + name + "')"); + assertEquals(result.code, 5, "wrong exception for createElement('" + name + "')"); // INVALID_CHARACTER_ERR + } + test('<div>'); + test('0div'); + test('di v'); + test('di<v'); + test('-div'); + test('.div'); + return 2; + }, + function () { + // test 23: createElementNS() with invalid tag names + var test = function (name, ns, code) { + var result; + try { + var div = document.createElementNS(ns, name); + } catch (e) { + result = e; + } + assert(result, "no exception for createElementNS('" + ns + "', '" + name + "')"); + assertEquals(result.code, code, "wrong exception for createElementNS('" + ns + "', '" + name + "')"); + } + test('<div>', null, 5); + test('0div', null, 5); + test('di v', null, 5); + test('di<v', null, 5); + test('-div', null, 5); + test('.div', null, 5); + test('<div>', "http://example.com/", 5); + test('0div', "http://example.com/", 5); + test('di<v', "http://example.com/", 5); + test('-div', "http://example.com/", 5); + test('.div', "http://example.com/", 5); + test(':div', null, 14); + test(':div', "http://example.com/", 14); + test('d:iv', null, 14); + test('xml:test', "http://example.com/", 14); + test('xmlns:test', "http://example.com/", 14); // (technically a DOM3 Core test) + test('x:test', "http://www.w3.org/2000/xmlns/", 14); // (technically a DOM3 Core test) + document.createElementNS("http://www.w3.org/2000/xmlns/", 'xmlns:test'); // (technically a DOM3 Core test) + return 2; + }, + function () { + // test 24: event handler attributes + assertEquals(document.body.getAttribute('onload'), "update() /* this attribute's value is tested in one of the tests */ ", "onload value wrong"); + return 2; + }, + function () { + // test 25: test namespace checking in createDocumentType, and + // check that exceptions that are thrown are DOMException objects + var message = ""; + try { + document.implementation.createDocumentType('a:', '', ''); /* doesn't contain an illegal character; is malformed */ + message = "failed to raise exception"; + } catch (e) { + if (e.code != e.NAMESPACE_ERR) + message = "wrong exception"; + else if (e.INVALID_ACCESS_ERR != 15) + message = "exceptions don't have all the constants"; + } + if (message) + fail(message); + return 2; + }, + function () { + // test 26: check that document tree survives while still accessible + var d; + // e1 - an element that's in a document + d = document.implementation.createDocument(null, null, null); + var e1 = d.createElement('test'); + d.appendChild(d.createElement('root')); + d.documentElement.appendChild(e1); + assert(e1.parentNode, "e1 - parent element doesn't exist"); + assert(e1.parentNode.ownerDocument, "e1 - document doesn't exist"); + // e2 - an element that's not in a document + d = document.implementation.createDocument(null, null, null); + var e2 = d.createElement('test'); + d.createElement('root').appendChild(e2); + assert(e2.parentNode, "e2 - parent element doesn't exist"); + assert(e2.parentNode.ownerDocument, "e2 - document doesn't exist"); + // now try to decouple them + d = null; + kungFuDeathGrip = [e1, e2]; + assert(e1.parentNode, "e1 - parent element doesn't exist after dropping reference to document"); + assert(e1.parentNode.ownerDocument, "e1 - document doesn't exist after dropping reference to document"); + assert(e2.parentNode, "e2 - parent element doesn't exist after dropping reference to document"); + assert(e2.parentNode.ownerDocument, "e2 - document doesn't exist after dropping reference to document"); + var loops = new Date().valueOf() * 2.813435e-9 - 2412; // increases linearly over time + for (var i = 0; i < loops; i += 1) { + // we want to force a GC here, so we use up lots of memory + // we take the opportunity to sneak in a perf test to make DOM and JS stuff faster... + d = new Date(); + d = new (function (x) { return { toString: function () { return x.toString() } } })(d.valueOf()); + d = document.createTextNode("iteration " + i + " at " + d); + document.createElement('a').appendChild(d); + d = d.parentNode; + document.body.insertBefore(d, document.getElementById('bucket1').parentNode); + assert(document.getElementById('bucket2').nextSibling.parentNode.previousSibling.firstChild.data.match(/AT\W/i), "iteration " + i + " failed"); + d.setAttribute('class', d.textContent); + document.body.removeChild(d); + } + assert(e1.parentNode, "e1 - parent element doesn't exist after looping"); + assert(e1.parentNode.ownerDocument, "e1 - document doesn't exist after looping"); + assertEquals(e1.parentNode.ownerDocument.nodeType, 9, "e1 - document node type has wrong node type"); + assert(e2.parentNode, "e2 - parent element doesn't exist after looping"); + assert(e2.parentNode.ownerDocument, "e2 - document doesn't exist after looping"); + assertEquals(e2.parentNode.ownerDocument.nodeType, 9, "e2 - document node type has wrong node type"); + return 2; + }, + function () { + // test 27: a continuation of the previous test + var e1 = kungFuDeathGrip[0]; + var e2 = kungFuDeathGrip[1]; + kungFuDeathGrip = null; + assert(e1, "e1 - element itself didn't survive across tests"); + assert(e1.parentNode, "e1 - parent element doesn't exist after waiting"); + assert(e1.parentNode.ownerDocument, "e1 - document doesn't exist after waiting"); + assertEquals(e1.parentNode.ownerDocument.nodeType, 9, "e1 - document node type has wrong node type after waiting"); + assert(e2, "e2 - element itself didn't survive across tests"); + assert(e2.parentNode, "e2 - parent element doesn't exist after waiting"); + assert(e2.parentNode.ownerDocument, "e2 - document doesn't exist after waiting"); + assertEquals(e2.parentNode.ownerDocument.nodeType, 9, "e2 - document node type has wrong node type after waiting"); + return 2; + }, + function () { + // test 28: getElementById() + // ...and name="" + assert(document.getElementById('form') !== document.getElementsByTagName('form')[0], "getElementById() searched on 'name'"); + // ...and a space character as the ID + var div = document.createElement('div'); + div.appendChild(document.createTextNode('FAIL')); + div.id = " "; + document.body.appendChild(div); // it's hidden by CSS + assert(div === document.getElementById(" "), "getElementById() didn't return the right element"); + return 2; + }, + function () { + // test 29: check that whitespace survives cloning + var t1 = document.getElementsByTagName('table')[0]; + var t2 = t1.cloneNode(true); + assertEquals(t2.tBodies[0].rows[0].cells[0].firstChild.tagName, 'P', "<p> didn't clone right"); + assertEquals(t2.tBodies[0].rows[0].cells[0].firstChild.childNodes.length, 0, "<p> got child nodes after cloning"); + assertEquals(t2.childNodes.length, 2, "cloned table had wrong number of children"); + assertEquals(t2.lastChild.data, " ", "cloned table lost whitespace text node"); + return 2; + }, + + // Events + function () { + // test 30: dispatchEvent() + var count = 0; + var ok = true; + var test = function (event) { + if (event.detail != 6) + ok = false; + count++; + }; + // test event listener addition + document.getElementById('result').addEventListener('test', test, false); + // test event creation + var event = document.createEvent('UIEvents'); + event.initUIEvent('test', true, false, null, 6); + // test event dispatch on elements and text nodes + assert(document.getElementById('score').dispatchEvent(event), "dispatchEvent #1 failed"); + assert(document.getElementById('score').nextSibling.dispatchEvent(event), "dispatchEvent #2 failed"); + // test event listener removal + document.getElementById('result').removeEventListener('test', test, false); + assert(document.getElementById('score').dispatchEvent(event), "dispatchEvent #3 failed"); + assertEquals(count, 2, "unexpected number of events handled"); + assert(ok, "unexpected events handled"); + return 2; + }, + function () { + // test 31: event.stopPropagation() and capture + // we're going to use an input element because we can cause events to bubble from it + var input = document.createElement('input'); + var div = document.createElement('div'); + div.appendChild(input); + document.body.appendChild(div); + // the test will consist of two event handlers: + var ok = true; + var captureCount = 0; + var testCapture = function (event) { + ok = ok && + (event.type == 'click') && + (event.target == input) && + (event.currentTarget == div) && + (event.eventPhase == 1) && + (event.bubbles) && + (event.cancelable); + captureCount++; + event.stopPropagation(); // this shouldn't stop it from firing both times on the div element + }; + var testBubble = function (event) { + ok = false; + }; + // one of which is added twice: + div.addEventListener('click', function (event) { testCapture(event) }, true); + div.addEventListener('click', function (event) { testCapture(event) }, true); + div.addEventListener('click', testBubble, false); + // we cause an event to bubble like this: + input.type = 'reset'; + input.click(); + // cleanup afterwards + document.body.removeChild(div); + // capture handler should have been called twice + assertEquals(captureCount, 2, "capture handler called the wrong number of times"); + assert(ok, "capture handler called incorrectly"); + return 2; + }, + function () { + // test 32: events bubbling through Document node + // event handler: + var ok = true; + var count = 0; + var test = function (event) { + count += 1; + if (event.eventPhase != 3) + ok = false; + } + // register event handler + document.body.addEventListener('click', test, false); + // create an element that bubbles an event, and bubble it + var input = document.createElement('input'); + var div = document.createElement('div'); + div.appendChild(input); + document.body.appendChild(div); + input.type = 'reset'; + input.click(); + // unregister event handler + document.body.removeEventListener('click', test, false); + // check that it's removed for good + input.click(); + // remove the newly added elements + document.body.removeChild(div); + assertEquals(count, 1, "capture handler called the wrong number of times"); + assert(ok, "capture handler called incorrectly"); + return 2; + }, + + // bucket 3: DOM2 Views, DOM2 Style, and Selectors + function () { + // test 33: basic tests for selectors - classes, attributes + var p; + var builder = function(doc) { + p = doc.createElement("p"); + doc.body.appendChild(p); + }; + selectorTest(function (doc, add, expect) { + builder(doc); + p.className = "selectorPingTest"; + var good = add(".selectorPingTest"); + add(".SelectorPingTest"); + add(".selectorpingtest"); + expect(doc.body, 0, "failure 1"); + expect(p, good, "failure 2"); + }); + selectorTest(function (doc, add, expect) { + builder(doc); + p.className = 'a\u0020b\u0009c\u000Ad\u000De\u000Cf\u2003g\u3000h'; + var good = add(".a.b.c.d.e.f\\2003g\\3000h"); + expect(p, good, "whitespace error in class processing"); + }); + selectorTest(function (doc, add, expect) { + builder(doc); + p.className = "selectorPingTest"; + var good = add("[class=selectorPingTest]"); + add("[class=SelectorPingTest]"); + add("[class=selectorpingtest]"); + expect(doc.body, 0, "failure 3"); + expect(p, good, "class attribute matching failed"); + }); + selectorTest(function (doc, add, expect) { + builder(doc); + p.className = "selectorPingTest"; + var good = add("[title=selectorPingTest]"); + add("[title=SelectorPingTest]"); + add("[title=selectorpingtest]"); + expect(doc.body, 0, "failure 4"); + expect(p, 0, "failure 5"); + p.title = "selectorPingTest"; + expect(doc.body, 0, "failure 6"); + expect(p, good, "failure 7"); + }); + selectorTest(function (doc, add, expect) { + builder(doc); + p.setAttribute('align', 'right and left'); + var good = add("[align=\"right and left\"]"); + add("[align=left]"); + add("[align=right]"); + expect(p, good, "align attribute mismatch"); + }); + return 3; + }, + function () { + // test 34: :lang() and [|=] + var div1; + var div2; + var p; + var builder = function(doc) { + div1 = doc.createElement('div'); + div1.setAttribute("lang", "english"); + div1.setAttribute("class", "widget-tree"); + doc.body.appendChild(div1); + div2 = doc.createElement('div'); + div2.setAttribute("lang", "en-GB"); + div2.setAttribute("class", "WIDGET"); + doc.body.appendChild(div2); + p = doc.createElement('p'); + div2.appendChild(p); + }; + selectorTest(function (doc, add, expect) { + builder(doc); + var lang_en = add(":lang(en)"); + expect(div1, 0, "lang=english should not be matched by :lang(en)"); + expect(div2, lang_en, "lang=en-GB should be matched by :lang(en)"); + expect(p, lang_en, "descendants inheriting lang=en-GB should be matched by :lang(en)"); + }); + selectorTest(function (doc, add, expect) { + builder(doc); + var class_widget = add("[class|=widget]"); + expect(div1, class_widget, "class attribute should be supported by |= attribute selectors"); + expect(div2, 0, "class attribute is case-sensitive"); + }); + return 3; + }, + function () { + // test 35: :first-child + selectorTest(function (doc, add, expect) { + var notFirst = 0; + var first = add(":first-child"); + var p1 = doc.createElement("p"); + doc.body.appendChild(doc.createTextNode(" TEST ")); + doc.body.appendChild(p1); + expect(doc.documentElement, notFirst, "root element, with no parent node, claims to be a :first-child"); + expect(doc.documentElement.firstChild, first, "first child of root node didn't match :first-child"); + expect(doc.documentElement.firstChild.firstChild, first, "failure 3"); + expect(doc.body, notFirst, "failure 4"); + expect(p1, first, "failure 5"); + var p2 = doc.createElement("p"); + doc.body.appendChild(p2); + expect(doc.body, notFirst, "failure 6"); + expect(p1, first, "failure 7"); + expect(p2, notFirst, "failure 8"); + var p0 = doc.createElement("p"); + doc.body.insertBefore(p0, p1); + expect(doc.body, notFirst, "failure 9"); + expect(p0, first, "failure 10"); + expect(p1, notFirst, ":first-child still applies to element that was previously a first child"); + expect(p2, notFirst, "failure 12"); + doc.body.insertBefore(p0, p2); + expect(doc.body, notFirst, "failure 13"); + expect(p1, first, "failure 14"); + expect(p0, notFirst, "failure 15"); + expect(p2, notFirst, "failure 16"); + }); + return 3; + }, + function () { + // test 36: :last-child + var p1; + var p2; + var builder = function(doc) { + p1 = doc.createElement('p'); + p2 = doc.createElement('p'); + doc.body.appendChild(p1); + doc.body.appendChild(p2); + }; + selectorTest(function (doc, add, expect) { + builder(doc); + var last = add(":last-child"); + expect(p1, 0, "control test for :last-child failed"); + expect(p2, last, "last child did not match :last-child"); + doc.body.appendChild(p1); + expect(p2, 0, ":last-child matched element with a following sibling"); + expect(p1, last, "failure 4"); + p1.appendChild(p2); + expect(p2, last, "failure 5"); + expect(p1, last, "failure 6"); + }); + selectorTest(function (doc, add, expect) { + builder(doc); + var last = add(":last-child"); + expect(p1, 0, "failure 7"); + expect(p2, last, "failure 8"); + doc.body.insertBefore(p2, p1); + expect(p2, 0, "failure 9"); + expect(p1, last, "failure 10"); + }); + selectorTest(function (doc, add, expect) { + builder(doc); + var last = add(":last-child"); + expect(p1, 0, "failure 11"); + expect(p2, last, "failure 12"); + doc.body.removeChild(p2); + expect(p1, last, "failure 13"); + assertEquals(p1.nextSibling, null, "failure 14"); + assertEquals(p2.parentNode, null, "failure 15"); + }); + return 3; + }, + function () { + // test 37: :only-child + var p1; + var p2; + var builder = function(doc) { + p1 = doc.createElement('p'); + p2 = doc.createElement('p'); + doc.body.appendChild(p1); + doc.body.appendChild(p2); + }; + selectorTest(function (doc, add, expect) { + builder(doc); + var only = add(":only-child"); + expect(p1, 0, "control test for :only-child failed"); + expect(p2, 0, "failure 2"); + doc.body.removeChild(p2); + expect(p1, only, ":only-child did not match only child"); + p1.appendChild(p2); + expect(p2, only, "failure 4"); + expect(p1, only, "failure 5"); + }); + selectorTest(function (doc, add, expect) { + builder(doc); + var only = add(":only-child"); + expect(p1, 0, "failure 6"); + expect(p2, 0, "failure 7"); + doc.body.removeChild(p1); + expect(p2, only, "failure 8"); + p2.appendChild(p1); + expect(p2, only, "failure 9"); + expect(p1, only, "failure 10"); + }); + selectorTest(function (doc, add, expect) { + builder(doc); + var only = add(":only-child"); + expect(p1, 0, "failure 11"); + expect(p2, 0, "failure 12"); + var span1 = doc.createElement('span'); + p1.appendChild(span1); + expect(p1, 0, "failure 13"); + expect(p2, 0, "failure 14"); + expect(span1, only, "failure 15"); + var span2 = doc.createElement('span'); + p1.appendChild(span2); + expect(p1, 0, "failure 16"); + expect(p2, 0, "failure 17"); + expect(span1, 0, "failure 18"); + expect(span2, 0, "failure 19"); + }); + selectorTest(function (doc, add, expect) { + builder(doc); + var only = add(":only-child"); + expect(p1, 0, "failure 20"); + expect(p2, 0, "failure 21"); + var span1 = doc.createElement('span'); + p2.appendChild(span1); + expect(p1, 0, "failure 22"); + expect(p2, 0, "failure 23"); + expect(span1, only, "failure 24"); + var span2 = doc.createElement('span'); + p2.insertBefore(span2, span1); + expect(p1, 0, "failure 25"); + expect(p2, 0, "failure 26"); + expect(span1, 0, "failure 27"); + expect(span2, 0, "failure 28"); + }); + return 3; + }, + function () { + // test 38: :empty + selectorTest(function (doc, add, expect) { + var empty = add(":empty"); + var p = doc.createElement('p'); + doc.body.appendChild(p); + expect(p, empty, "empty p element didn't match :empty"); + var span = doc.createElement('span'); + p.appendChild(span); + expect(p, 0, "adding children didn't stop the element matching :empty"); + expect(span, empty, "empty span element didn't match :empty"); + p.removeChild(span); + expect(p, empty, "removing all children didn't make the element match :empty"); + p.appendChild(doc.createComment("c")); + p.appendChild(doc.createTextNode("")); + expect(p, empty, "element with a comment node and an empty text node didn't match :empty"); + p.appendChild(doc.createTextNode("")); + expect(p, empty, "element with a comment node and two empty text nodes didn't match :empty"); + p.lastChild.data = " "; + expect(p, 0, "adding text to a text node didn't make the element non-:empty"); + assertEquals(p.childNodes.length, 3, "text nodes may have merged"); +// COMMENTED OUT FOR 2011 UPDATE - replaceWholeText() might go away entirely +// p.childNodes[1].replaceWholeText(""); +// assertEquals(p.childNodes.length, 1, "replaceWholeText('') didn't remove text nodes"); +// REPLACEMENT: + assertEquals(p.childNodes[1].nodeType, 3, "missing text node before first removal"); + p.removeChild(p.childNodes[1]); + assertEquals(p.childNodes[1].nodeType, 3, "missing text node before second removal"); + p.removeChild(p.childNodes[1]); +// END REPLACEMENT TEST + expect(p, empty, "element with a comment node only didn't match :empty"); + p.appendChild(doc.createElementNS("http://example.com/", "test")); + expect(p, 0, "adding an element in a namespace didn't make the element non-:empty"); + }); + return 3; + }, + function () { + // test 39: :nth-child, :nth-last-child + var ps; + var builder = function(doc) { + ps = [ + doc.createElement('p'), + doc.createElement('p'), + doc.createElement('p'), + doc.createElement('p'), + doc.createElement('p'), + doc.createElement('p'), + doc.createElement('p'), + doc.createElement('p'), + doc.createElement('p'), + doc.createElement('p'), + doc.createElement('p'), + doc.createElement('p'), + doc.createElement('p') + ]; + for (var i = 0; i < ps.length; i += 1) + doc.body.appendChild(ps[i]); + }; + selectorTest(function (doc, add, expect) { + builder(doc); + var match = add(":nth-child(odd)"); + for (var i = 0; i < ps.length; i += 1) + expect(ps[i], i % 2 ? 0 : match, ":nth-child(odd) failed with child " + i); + }); + selectorTest(function (doc, add, expect) { + builder(doc); + var match = add(":nth-child(even)"); + for (var i = 0; i < ps.length; i += 1) + expect(ps[i], i % 2 ? match : 0 , ":nth-child(even) failed with child " + i); + }); + selectorTest(function (doc, add, expect) { + builder(doc); + var match = add(":nth-child(odd)"); + doc.body.removeChild(ps[5]); + for (var i = 0; i < 5; i += 1) + expect(ps[i], i % 2 ? 0 : match, ":nth-child(odd) failed after removal with child " + i); + for (var i = 6; i < ps.length; i += 1) + expect(ps[i], i % 2 ? match : 0, ":nth-child(odd) failed after removal with child " + i); + }); + selectorTest(function (doc, add, expect) { + builder(doc); + var match = add(":nth-child(even)"); + doc.body.removeChild(ps[5]); + for (var i = 0; i < 5; i += 1) + expect(ps[i], i % 2 ? match : 0, ":nth-child(even) failed after removal with child " + i); + for (var i = 6; i < ps.length; i += 1) + expect(ps[i], i % 2 ? 0 : match, ":nth-child(even) failed after removal with child " + i); + }); + selectorTest(function (doc, add, expect) { + builder(doc); + var match = add(":nth-child(-n+3)"); + for (var i = 0; i < 3; i += 1) + expect(ps[i], match, ":nth-child(-n+3) failed with child " + i); + for (var i = 3; i < ps.length; i += 1) + expect(ps[i], 0, ":nth-child(-n+3) failed with child " + i); + }); + return 3; + }, + function () { + // test 40: :first-of-type, :last-of-type, :only-of-type, :nth-of-type, :nth-last-of-type + var elements; + var builder = function(doc) { + elements = [ + doc.createElement('p'), + doc.createElement('div'), + doc.createElement('div'), + doc.createElement('p'), + doc.createElement('p'), + doc.createElement('p'), + doc.createElement('div'), + doc.createElement('address'), + doc.createElement('div'), + doc.createElement('div'), + doc.createElement('div'), + doc.createElement('p'), + doc.createElement('div'), + doc.createElement('p') + ]; + for (var i = 0; i < elements.length; i += 1) + doc.body.appendChild(elements[i]); + }; + selectorTest(function (doc, add, expect) { + builder(doc); + var match = add(":first-of-type"); + var values = [1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0]; + for (var i = 0; i < elements.length; i += 1) + expect(elements[i], values[i] ? match : 0, "part 1:" + i); + }); + selectorTest(function (doc, add, expect) { + builder(doc); + var match = add(":last-of-type"); + var values = [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1]; + for (var i = 0; i < elements.length; i += 1) + expect(elements[i], values[i] ? match : 0, "part 2:" + i); + }); + selectorTest(function (doc, add, expect) { + builder(doc); + var match = add(":only-of-type"); + var values = [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0]; + for (var i = 0; i < elements.length; i += 1) + expect(elements[i], values[i] ? match : 0, "part 3:" + i); + }); + selectorTest(function (doc, add, expect) { + builder(doc); + var match = add(":nth-of-type(3n-1)"); + var values = [0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0]; + for (var i = 0; i < elements.length; i += 1) + expect(elements[i], values[i] ? match : 0, "part 4:" + i); + }); + selectorTest(function (doc, add, expect) { + builder(doc); + var match = add(":nth-of-type(3n+1)"); + var values = [1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0]; + for (var i = 0; i < elements.length; i += 1) + expect(elements[i], values[i] ? match : 0, "part 5:" + i); + }); + selectorTest(function (doc, add, expect) { + builder(doc); + var match = add(":nth-last-of-type(2n)"); + var values = [1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0]; + for (var i = 0; i < elements.length; i += 1) + expect(elements[i], values[i] ? match : 0, "part 6:" + i); + }); + selectorTest(function (doc, add, expect) { + builder(doc); + var match = add(":nth-last-of-type(-5n+3)"); + var values; + values = [0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0]; + for (var i = 0; i < elements.length; i += 1) + expect(elements[i], values[i] ? match : 0, "part 7:" + i); + doc.body.appendChild(doc.createElement('blockquote')); + values = [0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0]; + for (var i = 0; i < elements.length; i += 1) + expect(elements[i], values[i] ? match : 0, "part 8:" + i); + doc.body.appendChild(doc.createElement('div')); + values = [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]; + for (var i = 0; i < elements.length; i += 1) + expect(elements[i], values[i] ? match : 0, "part 9:" + i); + }); + return 3; + }, + function () { + // test 41: :root, :not() + selectorTest(function (doc, add, expect) { + var match = add(":not(:root)"); + var p = doc.createElement('p'); + doc.body.appendChild(p); + expect(doc.documentElement, 0, "root was :not(:root)"); + expect(doc.documentElement.childNodes[0], match,"head was not :not(:root)"); + expect(doc.documentElement.childNodes[1], match,"body was not :not(:root)"); + expect(doc.documentElement.childNodes[0].firstChild, match,"title was not :not(:root)"); + expect(p, match,"p was not :not(:root)"); + }); + return 3; + }, + function () { + // test 42: +, ~, >, and ' ' in dynamic situations + selectorTest(function (doc, add, expect) { + var div1 = doc.createElement('div'); + div1.id = "div1"; + doc.body.appendChild(div1); + var div2 = doc.createElement('div'); + doc.body.appendChild(div2); + var div3 = doc.createElement('div'); + doc.body.appendChild(div3); + var div31 = doc.createElement('div'); + div3.appendChild(div31); + var div311 = doc.createElement('div'); + div31.appendChild(div311); + var div3111 = doc.createElement('div'); + div311.appendChild(div3111); + var match = add("#div1 ~ div div + div > div"); + expect(div1, 0, "failure 1"); + expect(div2, 0, "failure 2"); + expect(div3, 0, "failure 3"); + expect(div31, 0, "failure 4"); + expect(div311, 0, "failure 5"); + expect(div3111, 0, "failure 6"); + var div310 = doc.createElement('div'); + div31.insertBefore(div310, div311); + expect(div1, 0, "failure 7"); + expect(div2, 0, "failure 8"); + expect(div3, 0, "failure 9"); + expect(div31, 0, "failure 10"); + expect(div310, 0, "failure 11"); + expect(div311, 0, "failure 12"); + expect(div3111, match, "rule did not start matching after change"); + }); + selectorTest(function (doc, add, expect) { + var div1 = doc.createElement('div'); + div1.id = "div1"; + doc.body.appendChild(div1); + var div2 = doc.createElement('div'); + div1.appendChild(div2); + var div3 = doc.createElement('div'); + div2.appendChild(div3); + var div4 = doc.createElement('div'); + div3.appendChild(div4); + var div5 = doc.createElement('div'); + div4.appendChild(div5); + var div6 = doc.createElement('div'); + div5.appendChild(div6); + var match = add("#div1 > div div > div"); + expect(div1, 0, "failure 14"); + expect(div2, 0, "failure 15"); + expect(div3, 0, "failure 16"); + expect(div4, match, "failure 17"); + expect(div5, match, "failure 18"); + expect(div6, match, "failure 19"); + var p34 = doc.createElement('p'); + div3.insertBefore(p34, div4); + p34.insertBefore(div4, null); + expect(div1, 0, "failure 20"); + expect(div2, 0, "failure 21"); + expect(div3, 0, "failure 22"); + expect(p34, 0, "failure 23"); + expect(div4, 0, "failure 24"); + expect(div5, match, "failure 25"); + expect(div6, match, "failure 26"); + }); + selectorTest(function (doc, add, expect) { + var div1 = doc.createElement('div'); + div1.id = "div1"; + doc.body.appendChild(div1); + var div2 = doc.createElement('div'); + div1.appendChild(div2); + var div3 = doc.createElement('div'); + div2.appendChild(div3); + var div4 = doc.createElement('div'); + div3.appendChild(div4); + var div5 = doc.createElement('div'); + div4.appendChild(div5); + var div6 = doc.createElement('div'); + div5.appendChild(div6); + var match = add("#div1 > div div > div"); + expect(div1, 0, "failure 27"); + expect(div2, 0, "failure 28"); + expect(div3, 0, "failure 29"); + expect(div4, match, "failure 30"); + expect(div5, match, "failure 31"); + expect(div6, match, "failure 32"); + var p23 = doc.createElement('p'); + div2.insertBefore(p23, div3); + p23.insertBefore(div3, null); + expect(div1, 0, "failure 33"); + expect(div2, 0, "failure 34"); + expect(div3, 0, "failure 35"); + expect(p23, 0, "failure 36"); + expect(div4, match, "failure 37"); + expect(div5, match, "failure 38"); + expect(div6, match, "failure 39"); + }); + return 3; + }, + function () { + // test 43: :enabled, :disabled, :checked, etc + selectorTest(function (doc, add, expect) { + var input = doc.createElement('input'); + input.type = 'checkbox'; + doc.body.appendChild(input); + var neither = 0; + var both = add(":checked:enabled"); + var checked = add(":checked"); + var enabled = add(":enabled"); + expect(doc.body, neither, "control failure"); + expect(input, enabled, "input element didn't match :enabled"); + input.click(); + expect(input, both, "input element didn't match :checked"); + input.disabled = true; + expect(input, checked, "failure 3"); + input.checked = false; + expect(input, neither, "failure 4"); + expect(doc.body, neither, "failure 5"); + }); + selectorTest(function (doc, add, expect) { + var input1 = doc.createElement('input'); + input1.type = 'radio'; + input1.name = 'radio'; + doc.body.appendChild(input1); + var input2 = doc.createElement('input'); + input2.type = 'radio'; + input2.name = 'radio'; + doc.body.appendChild(input2); + var checked = add(":checked"); + expect(input1, 0, "failure 6"); + expect(input2, 0, "failure 7"); + input2.click(); + expect(input1, 0, "failure 6"); + expect(input2, checked, "failure 7"); + input1.checked = true; + expect(input1, checked, "failure 8"); + expect(input2, 0, "failure 9"); + input2.setAttribute("checked", "checked"); // sets defaultChecked, doesn't change actual state + expect(input1, checked, "failure 10"); + expect(input2, 0, "failure 11"); + input1.type = "text"; + expect(input1, 0, "text field matched :checked"); + }); + selectorTest(function (doc, add, expect) { + var input = doc.createElement('input'); + input.type = 'button'; + doc.body.appendChild(input); + var neither = 0; + var enabled = add(":enabled"); + var disabled = add(":disabled"); + add(":enabled:disabled"); + expect(input, enabled, "failure 12"); + input.disabled = true; + expect(input, disabled, "failure 13"); + input.removeAttribute("disabled"); + expect(input, enabled, "failure 14"); + expect(doc.body, neither, "failure 15"); + }); + return 3; + }, + function () { + // test 44: selectors without spaces before a "*" + selectorTest(function (doc, add, expect) { + doc.body.className = "test"; + var p = doc.createElement('p'); + p.className = "test"; + doc.body.appendChild(p); + add("html*.test"); + expect(doc.body, 0, "misparsed selectors"); + expect(p, 0, "really misparsed selectors"); + }); + return 3; + }, + function () { + // test 45: cssFloat and the style attribute + assert(!document.body.style.cssFloat, "body has floatation"); + document.body.setAttribute("style", "float: right"); + assertEquals(document.body.style.cssFloat, "right", "body doesn't have floatation"); + document.body.setAttribute("style", "float: none"); + assertEquals(document.body.style.cssFloat, "none", "body didn't lose floatation"); + return 3; + }, + function () { + // test 46: media queries + var doc = getTestDocument(); + var style = doc.createElement('style'); + style.setAttribute('type', 'text/css'); + style.appendChild(doc.createTextNode('@media all and (min-color: 0) { #a { text-transform: uppercase; } }')); // matches + style.appendChild(doc.createTextNode('@media not all and (min-color: 0) { #b { text-transform: uppercase; } }')); + style.appendChild(doc.createTextNode('@media only all and (min-color: 0) { #c { text-transform: uppercase; } }')); // matches + style.appendChild(doc.createTextNode('@media (bogus) { #d { text-transform: uppercase; } }')); + style.appendChild(doc.createTextNode('@media all and (bogus) { #e { text-transform: uppercase; } }')); + style.appendChild(doc.createTextNode('@media not all and (bogus) { #f { text-transform: uppercase; } }')); // commentd out but should not match + style.appendChild(doc.createTextNode('@media only all and (bogus) { #g { text-transform: uppercase; } }')); + style.appendChild(doc.createTextNode('@media (bogus), all { #h { text-transform: uppercase; } }')); // matches + style.appendChild(doc.createTextNode('@media all and (bogus), all { #i { text-transform: uppercase; } }')); // matches + style.appendChild(doc.createTextNode('@media not all and (bogus), all { #j { text-transform: uppercase; } }')); // matches + style.appendChild(doc.createTextNode('@media only all and (bogus), all { #k { text-transform: uppercase; } }')); // matches + style.appendChild(doc.createTextNode('@media all, (bogus) { #l { text-transform: uppercase; } }')); // matches + style.appendChild(doc.createTextNode('@media all, all and (bogus) { #m { text-transform: uppercase; } }')); // matches + style.appendChild(doc.createTextNode('@media all, not all and (bogus) { #n { text-transform: uppercase; } }')); // matches + style.appendChild(doc.createTextNode('@media all, only all and (bogus) { #o { text-transform: uppercase; } }')); // matches + style.appendChild(doc.createTextNode('@media all and color { #p { text-transform: uppercase; } }')); + style.appendChild(doc.createTextNode('@media all and min-color: 0 { #q { text-transform: uppercase; } }')); + style.appendChild(doc.createTextNode('@media all, all and color { #r { text-transform: uppercase; } }')); // commented out but should match + style.appendChild(doc.createTextNode('@media all, all and min-color: 0 { #s { text-transform: uppercase; } }')); // commented out but should match + style.appendChild(doc.createTextNode('@media all and min-color: 0, all { #t { text-transform: uppercase; } }')); // commented out but should match + style.appendChild(doc.createTextNode('@media (max-color: 0) and (max-monochrome: 0) { #u { text-transform: uppercase; } }')); + style.appendChild(doc.createTextNode('@media (min-color: 1), (min-monochrome: 1) { #v { text-transform: uppercase; } }')); // matches + style.appendChild(doc.createTextNode('@media all and (min-color: 0) and (min-monochrome: 0) { #w { text-transform: uppercase; } }')); // matches + style.appendChild(doc.createTextNode('@media not all and (min-color: 1), not all and (min-monochrome: 1) { #x { text-transform: uppercase; } }')); // matches + style.appendChild(doc.createTextNode('@media all and (min-height: 1em) and (min-width: 1em) { #y1 { text-transform: uppercase; } }')); + style.appendChild(doc.createTextNode('@media all and (max-height: 1em) and (min-width: 1em) { #y2 { text-transform: uppercase; } }')); + style.appendChild(doc.createTextNode('@media all and (min-height: 1em) and (max-width: 1em) { #y3 { text-transform: uppercase; } }')); + style.appendChild(doc.createTextNode('@media all and (max-height: 1em) and (max-width: 1em) { #y4 { text-transform: uppercase; } }')); // matches + doc.getElementsByTagName('head')[0].appendChild(style); + var names = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y1', 'y2', 'y3', 'y4']; + for (var i in names) { + var p = doc.createElement('p'); + p.id = names[i]; + doc.body.appendChild(p); + } + var count = 0; + var check = function (c, e) { + count += 1; + var p = doc.getElementById(c); + assertEquals(doc.defaultView.getComputedStyle(p, '').textTransform, e ? 'uppercase' : 'none', "case " + c + " failed (index " + count + ")"); + } + check('a', true); // 1 + check('b', false); + check('c', true); + check('d', false); + check('e', false); +/* COMMENTED OUT BECAUSE THE CSSWG KEEP CHANGING THE RIGHT ANSWER FOR THIS CASE + * check('f', false); + */ + check('g', false); + check('h', true); + check('i', true); + check('j', true); // 10 + check('k', true); + check('l', true); + check('m', true); + check('n', true); + check('o', true); + check('p', false); + check('q', false); +/* COMMENTED OUT BECAUSE THE CSSWG KEEP CHANGING THE RIGHT ANSWER FOR THESE TOO APPARENTLY + * check('r', true); + * check('s', true); + * check('t', true); // 20 + */ + check('u', false); + check('v', true); + check('w', true); + check('x', true); + // here the viewport is 0x0 + check('y1', false); // 25 + check('y2', false); + check('y3', false); + check('y4', true); + document.getElementById("selectors").setAttribute("style", "height: 100px; width: 100px"); + // now the viewport is more than 1em by 1em + check('y1', true); // 29 + check('y2', false); + check('y3', false); + check('y4', false); + document.getElementById("selectors").removeAttribute("style"); + // here the viewport is 0x0 again + check('y1', false); // 33 + check('y2', false); + check('y3', false); + check('y4', true); + return 3; + }, + function () { + // test 47: 'cursor' and CSS3 values + var doc = getTestDocument(); + var style = doc.createElement('style'); + style.setAttribute('type', 'text/css'); + var cursors = ['auto', 'default', 'none', 'context-menu', 'help', 'pointer', 'progress', 'wait', 'cell', 'crosshair', 'text', 'vertical-text', 'alias', 'copy', 'move', 'no-drop', 'not-allowed', 'e-resize', 'n-resize', 'ne-resize', 'nw-resize', 's-resize', 'se-resize', 'sw-resize', 'w-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'col-resize', 'row-resize', 'all-scroll']; + for (var i in cursors) { + var c = cursors[i]; + style.appendChild(doc.createTextNode('#' + c + ' { cursor: ' + c + '; }')); + } + style.appendChild(doc.createTextNode('#bogus { cursor: bogus; }')); + doc.body.previousSibling.appendChild(style); + doc.body.id = "bogus"; + assertEquals(doc.defaultView.getComputedStyle(doc.body, '').cursor, "auto", "control failed"); + for (var i in cursors) { + var c = cursors[i]; + doc.body.id = c; + assertEquals(doc.defaultView.getComputedStyle(doc.body, '').cursor, c, "cursor " + c + " not supported"); + } + return 3; + }, + function () { + // test 48: :link and :visited + var iframe = document.getElementById("selectors"); + var number = (new Date()).valueOf(); + var a = document.createElement('a'); + a.appendChild(document.createTextNode('YOU SHOULD NOT SEE THIS AT ALL')); // changed text when fixing http://dbaron.org/mozilla/visited-privacy + a.setAttribute('id', 'linktest'); + a.setAttribute('class', 'pending'); + a.setAttribute('href', iframe.getAttribute('src') + "?" + number); + document.getElementsByTagName('map')[0].appendChild(a); + iframe.setAttribute("onload", "document.getElementById('linktest').removeAttribute('class')"); + iframe.src = a.getAttribute("href"); + return 3; + }, + + // bucket 4: HTML and the DOM + // Tables + function () { + // test 49: basic table accessor ping test create*, delete*, and * + // where * is caption, tHead, tFoot. + var table = document.createElement('table'); + assert(!table.caption, "initially: caption"); + assert(table.tBodies, "initially: tBodies"); + assertEquals(table.tBodies.length, 0, "initially: tBodies.length"); + assert(table.rows, "initially: rows"); + assertEquals(table.rows.length, 0, "initially: rows.length"); + assert(!table.tFoot, "initially: tFoot"); + assert(!table.tHead, "initially: tHead"); + var caption = table.createCaption(); + var thead = table.createTHead(); + var tfoot = table.createTFoot(); + assertEquals(table.caption, caption, "after creation: caption"); + assert(table.tBodies, "after creation: tBodies"); + assertEquals(table.tBodies.length, 0, "after creation: tBodies.length"); + assert(table.rows, "after creation: rows"); + assertEquals(table.rows.length, 0, "after creation: rows.length"); + assertEquals(table.tFoot, tfoot, "after creation: tFoot"); + assertEquals(table.tHead, thead, "after creation: tHead"); + assertEquals(table.childNodes.length, 3, "after creation: childNodes.length"); + table.caption = caption; // no-op + table.tHead = thead; // no-op + table.tFoot = tfoot; // no-op + assertEquals(table.caption, caption, "after setting: caption"); + assert(table.tBodies, "after setting: tBodies"); + assertEquals(table.tBodies.length, 0, "after setting: tBodies.length"); + assert(table.rows, "after setting: rows"); + assertEquals(table.rows.length, 0, "after setting: rows.length"); + assertEquals(table.tFoot, tfoot, "after setting: tFoot"); + assertEquals(table.tHead, thead, "after setting: tHead"); + assertEquals(table.childNodes.length, 3, "after setting: childNodes.length"); + table.deleteCaption(); + table.deleteTHead(); + table.deleteTFoot(); + assert(!table.caption, "after deletion: caption"); + assert(table.tBodies, "after deletion: tBodies"); + assertEquals(table.tBodies.length, 0, "after deletion: tBodies.length"); + assert(table.rows, "after deletion: rows"); + assertEquals(table.rows.length, 0, "after deletion: rows.length"); + assert(!table.tFoot, "after deletion: tFoot"); + assert(!table.tHead, "after deletion: tHead"); + assert(!table.hasChildNodes(), "after deletion: hasChildNodes()"); + assertEquals(table.childNodes.length, 0, "after deletion: childNodes.length"); + return 4; + }, + function () { + // test 50: construct a table, and see if the table is as expected + var table = document.createElement('table'); + table.appendChild(document.createElement('tbody')); + var tr1 = document.createElement('tr'); + table.appendChild(tr1); + table.appendChild(document.createElement('caption')); + table.appendChild(document.createElement('thead')); + // <table><tbody/><tr/><caption/><thead/> + table.insertBefore(table.firstChild.nextSibling, null); // move the <tr/> to the end + // <table><tbody/><caption/><thead/><tr/> + table.replaceChild(table.firstChild, table.lastChild); // move the <tbody/> to the end and remove the <tr> + // <table><caption/><thead/><tbody/> + var tr2 = table.tBodies[0].insertRow(0); + // <table><caption/><thead/><tbody><tr/><\tbody> (the '\' is to avoid validation errors) + assertEquals(table.tBodies[0].rows[0].rowIndex, 0, "rowIndex broken"); + assertEquals(table.tBodies[0].rows[0].sectionRowIndex, 0, "sectionRowIndex broken"); + assertEquals(table.childNodes.length, 3, "wrong number of children"); + assert(table.caption, "caption broken"); + assert(table.tHead, "tHead broken"); + assert(!table.tFoot, "tFoot broken"); + assertEquals(table.tBodies.length, 1, "wrong number of tBodies"); + assertEquals(table.rows.length, 1, "wrong number of rows"); + assert(!tr1.parentNode, "orphan row has unexpected parent"); + assertEquals(table.caption, table.createCaption(), "caption creation failed"); + assertEquals(table.tFoot, null, "table has unexpected footer"); + assertEquals(table.tHead, table.createTHead(), "header creation failed"); + assertEquals(table.createTFoot(), table.tFoot, "footer creation failed"); + // either: <table><caption/><thead/><tbody><tr/><\tbody><tfoot/> + // or: <table><caption/><thead/><tfoot/><tbody><tr/><\tbody> + table.tHead.appendChild(tr1); + // either: <table><caption/><thead><tr/><\thead><tbody><tr/><\tbody><tfoot/> + // or: <table><caption/><thead><tr/><\thead><tfoot/><tbody><tr/><\tbody> + assertEquals(table.rows[0], table.tHead.firstChild, "top row not in expected position"); + assertEquals(table.rows.length, 2, "wrong number of rows after appending one"); + assertEquals(table.rows[1], table.tBodies[0].firstChild, "second row not in expected position"); + return 4; + }, + function () { + // test 51: test the ordering and creation of rows + var table = document.createElement('table'); + var rows = [ + document.createElement('tr'), // 0: ends up first child of the tfoot + document.createElement('tr'), // 1: goes at the end of the table + document.createElement('tr'), // 2: becomes second child of thead + document.createElement('tr'), // 3: becomes third child of the thead + document.createElement('tr'), // 4: not in the table + table.insertRow(0), // 5: not in the table + table.createTFoot().insertRow(0) // 6: ends up second in the tfoot + ]; + rows[6].parentNode.appendChild(rows[0]); + table.appendChild(rows[1]); + table.insertBefore(document.createElement('thead'), table.firstChild); + table.firstChild.appendChild(rows[2]); + rows[2].parentNode.appendChild(rows[3]); + rows[4].appendChild(rows[5].parentNode); + table.insertRow(0); + table.tFoot.appendChild(rows[6]); + assertEquals(table.rows.length, 6, "wrong number of rows"); + assertEquals(table.getElementsByTagName('tr').length, 6, "wrong number of tr elements"); + assertEquals(table.childNodes.length, 3, "table has wrong number of children"); + assertEquals(table.childNodes[0], table.tHead, "tHead isn't first"); + assertEquals(table.getElementsByTagName('tr')[0], table.tHead.childNodes[0], "first tr isn't in tHead correctly"); + assertEquals(table.getElementsByTagName('tr')[1], table.tHead.childNodes[1], "second tr isn't in tHead correctly"); + assertEquals(table.getElementsByTagName('tr')[1], rows[2], "second tr is the wrong row"); + assertEquals(table.getElementsByTagName('tr')[2], table.tHead.childNodes[2], "third tr isn't in tHead correctly"); + assertEquals(table.getElementsByTagName('tr')[2], rows[3], "third tr is the wrong row"); + assertEquals(table.childNodes[1], table.tFoot, "tFoot isn't second"); + assertEquals(table.getElementsByTagName('tr')[3], table.tFoot.childNodes[0], "fourth tr isn't in tFoot correctly"); + assertEquals(table.getElementsByTagName('tr')[3], rows[0], "fourth tr is the wrong row"); + assertEquals(table.getElementsByTagName('tr')[4], table.tFoot.childNodes[1], "fifth tr isn't in tFoot correctly"); + assertEquals(table.getElementsByTagName('tr')[4], rows[6], "fifth tr is the wrong row"); + assertEquals(table.getElementsByTagName('tr')[5], table.childNodes[2], "sixth tr isn't in tFoot correctly"); + assertEquals(table.getElementsByTagName('tr')[5], rows[1], "sixth tr is the wrong row"); + assertEquals(table.tBodies.length, 0, "non-zero number of tBodies"); + return 4; + }, + + // Forms + function () { + // test 52: <form> and .elements + test = document.getElementsByTagName('form')[0]; + assert(test.elements !== test, "form.elements === form"); + assert(test.elements !== test.getAttribute('elements'), "form element has an elements content attribute"); + assertEquals(test.elements.length, 1, "form element has unexpected number of controls"); + assertEquals(test.elements.length, test.length, "form element has inconsistent numbers of controls"); + return 4; + }, + function () { + // test 53: changing an <input> dynamically + var f = document.createElement('form'); + var i = document.createElement('input'); + i.name = 'first'; + i.type = 'text'; + i.value = 'test'; + f.appendChild(i); + assertEquals(i.getAttribute('name'), 'first', "name attribute wrong"); + assertEquals(i.name, 'first', "name property wrong"); + assertEquals(i.getAttribute('type'), 'text', "type attribute wrong"); + assertEquals(i.type, 'text', "type property wrong"); + assert(!i.hasAttribute('value'), "value attribute wrong"); + assertEquals(i.value, 'test', "value property wrong"); + assertEquals(f.elements.length, 1, "form's elements array has wrong size"); + assertEquals(f.elements[0], i, "form's element array doesn't have input control by index"); + assertEquals(f.elements.first, i, "form's element array doesn't have input control by name"); + assertEquals(f.elements.second, null, "form's element array has unexpected controls by name"); + i.name = 'second'; + i.type = 'password'; + i.value = 'TEST'; + assertEquals(i.getAttribute('name'), 'second', "name attribute wrong after change"); + assertEquals(i.name, 'second', "name property wrong after change"); + assertEquals(i.getAttribute('type'), 'password', "type attribute wrong after change"); + assertEquals(i.type, 'password', "type property wrong after change"); + assert(!i.hasAttribute('value'), "value attribute wrong after change"); + assertEquals(i.value, 'TEST', "value property wrong after change"); + assertEquals(f.elements.length, 1, "form's elements array has wrong size after change"); + assertEquals(f.elements[0], i, "form's element array doesn't have input control by index after change"); + assertEquals(f.elements.second, i, "form's element array doesn't have input control by name after change"); + assertEquals(f.elements.first, null, "form's element array has unexpected controls by name after change"); + return 4; + }, + function () { + // test 54: changing a parsed <input> + var i = document.getElementsByTagName('input')[0]; + // initial values + assertEquals(i.getAttribute('type'), 'HIDDEN', "input control's type content attribute was wrong"); + assertEquals(i.type, 'hidden', "input control's type DOM attribute was wrong"); + // change values + i.name = 'test'; + assertEquals(i.parentNode.elements.test, i, "input control's form didn't update"); + // check event handlers + i.parentNode.action = 'javascript:'; + var called = false; + i.parentNode.onsubmit = function (arg) { + arg.preventDefault(); + called = true; + }; + i.type = 'submit'; + i.click(); // synchronously dispatches a click event to the submit button, which submits the form, which calls onsubmit + assert(called, "click handler didn't dispatch properly"); + i.type = 'hIdDeN'; + // check numeric attributes + i.setAttribute('maxLength', '2'); + var s = i.getAttribute('maxLength'); + assert(s.match, "attribute is not a String"); + assert(!s.MIN_VALUE, "attribute is a Number"); + return 4; + }, + function () { + // test 55: moved checkboxes should keep their state + var container = document.getElementsByTagName("iframe")[0]; + var input1 = document.createElement('input'); + container.appendChild(input1); + input1.type = "checkbox"; + input1.checked = true; + assert(input1.checked, "checkbox not checked after being checked (inserted first)"); + var input2 = document.createElement('input'); + input2.type = "checkbox"; + container.appendChild(input2); + input2.checked = true; + assert(input2.checked, "checkbox not checked after being checked (inserted after type set)"); + var input3 = document.createElement('input'); + input3.type = "checkbox"; + input3.checked = true; + container.appendChild(input3); + assert(input3.checked, "checkbox not checked after being checked (inserted after being checked)"); + var target = document.getElementsByTagName("iframe")[1]; + target.appendChild(input1); + target.appendChild(input2); + target.appendChild(input3); + assert(input1.checked, "checkbox 1 not checked after being moved"); + assert(input2.checked, "checkbox 2 not checked after being moved"); + assert(input3.checked, "checkbox 3 not checked after being moved"); + return 4; + }, + function () { + // test 56: cloned radio buttons should keep their state + var form = document.getElementsByTagName("form")[0]; + var input1 = document.createElement('input'); + input1.type = "radio"; + input1.name = "radioGroup1"; + form.appendChild(input1); + var input2 = input1.cloneNode(true); + input1.parentNode.appendChild(input2); + input1.checked = true; + assert(form.elements.radioGroup1, "radio group absent"); + assert(input1.checked, "first radio button not checked"); + assert(!input2.checked, "second radio button checked"); + input2.checked = true; + assert(!input1.checked, "first radio button checked"); + assert(input2.checked, "second radio button not checked"); + var input3 = document.createElement('input'); + input3.type = "radio"; + input3.name = "radioGroup2"; + form.appendChild(input3); + assert(!input3.checked, "third radio button checked"); + input3.checked = true; + assert(!input1.checked, "first radio button newly checked"); + assert(input2.checked, "second radio button newly not checked"); + assert(input3.checked, "third radio button not checked"); + input1.checked = true; + assert(input1.checked, "first radio button ended up not checked"); + assert(!input2.checked, "second radio button ended up checked"); + assert(input3.checked, "third radio button ended up not checked"); + input1.parentNode.removeChild(input1); + input2.parentNode.removeChild(input2); + input3.parentNode.removeChild(input3); + return 4; + }, + function () { + // test 57: HTMLSelectElement.add() + var s = document.createElement('select'); + var o = document.createElement('option'); + s.add(o, null); + assert(s.firstChild === o, "add() didn't add to firstChild"); + assertEquals(s.childNodes.length, 1, "add() didn't add to childNodes"); + assert(s.childNodes[0] === o, "add() didn't add to childNodes correctly"); + assertEquals(s.options.length, 1, "add() didn't add to options"); + assert(s.options[0] === o, "add() didn't add to options correctly"); + return 4; + }, + function () { + // test 58: HTMLOptionElement.defaultSelected + var s = document.createElement('select'); + var o1 = document.createElement('option'); + var o2 = document.createElement('option'); + o2.defaultSelected = true; + var o3 = document.createElement('option'); + s.appendChild(o1); + s.appendChild(o2); + s.appendChild(o3); + assert(s.options[s.selectedIndex] === o2, "defaultSelected didn't take"); + return 4; + }, + function () { + // test 59: attributes of <button> elements + var button = document.createElement('button'); + assertEquals(button.type, "submit", "<button> doesn't have type=submit"); + button.setAttribute("type", "button"); + assertEquals(button.type, "button", "<button type=button> doesn't have type=button"); + button.removeAttribute("type"); + assertEquals(button.type, "submit", "<button> doesn't have type=submit back"); + button.setAttribute('value', 'apple'); + button.appendChild(document.createTextNode('banana')); + assertEquals(button.value, 'apple', "wrong button value"); + return 4; + }, + + // Misc DOM2 HTML + function () { + // test 60: className vs "class" vs attribute nodes + var span = document.getElementsByTagName('span')[0]; + span.setAttribute('class', 'kittens'); +// COMMENTED OUT FOR 2011 UPDATE - turns out instead of dropping Attr entirely, as Acid3 originally expected, the API is just being refactored +// if (!span.getAttributeNode) +// return 4; // support for attribute nodes is optional in Acid3, because attribute nodes might be removed from DOM Core in the future. +// var attr = span.getAttributeNode('class'); +// // however, if they're supported, they'd better work: +// assert(attr.specified, "attribute not specified"); +// assertEquals(attr.value, 'kittens', "attribute value wrong"); +// assertEquals(attr.name, 'class', "attribute name wrong"); +// attr.value = 'ocelots'; +// assertEquals(attr.value, 'ocelots', "attribute value wrong"); +// assertEquals(span.className, 'ocelots', "setting attribute value failed to be reflected in className"); + span.className = 'cats'; +// assertEquals(attr.ownerElement.getAttribute('class'), 'cats', "setting attribute value failed to be reflected in getAttribute()"); +// span.removeAttributeNode(attr); +// assert(attr.specified, "attribute not specified after removal"); +// assert(!attr.ownerElement, "attribute still owned after removal"); +// assert(!span.className, "element had class after removal"); + return 4; + }, + function () { + // test 61: className and the class attribute: space preservation + var p = document.createElement('p'); + assert(!p.hasAttribute('class'), "element had attribute on creation"); + p.setAttribute('class', ' te st '); + assert(p.hasAttribute('class'), "element did not have attribute after setting"); + assertEquals(p.getAttribute('class'), ' te st ', "class attribute's value was wrong"); + assertEquals(p.className, ' te st ', "className was wrong"); + p.className = p.className.replace(/ /g, '\n'); + assert(p.hasAttribute('class'), "element did not have attribute after replacement"); + assertEquals(p.getAttribute('class'), '\nte\n\nst\n', "class attribute's value was wrong after replacement"); + assertEquals(p.className, '\nte\n\nst\n', "className was wrong after replacement"); + p.className = ''; + assert(p.hasAttribute('class'), "element lost attribute after being set to empty string"); + assertEquals(p.getAttribute('class'), '', "class attribute's value was wrong after being emptied"); + assertEquals(p.className, '', "className was wrong after being emptied"); + return 4; + }, + function () { + // test 62: check that DOM attributes and content attributes aren't equivalent + var test; + // <div class=""> + test = document.getElementsByTagName('div')[0]; + assertEquals(test.className, 'buckets', "buckets: className wrong"); + assertEquals(test.getAttribute('class'), 'buckets', "buckets: class wrong"); + assert(!test.hasAttribute('className'), "buckets: element has className attribute"); + assert(test.className != test.getAttribute('className'), "buckets: className attribute equals className property"); + assert(!('class' in test), "buckets: element has class property") + test['class'] = "oil"; + assert(test.className != "oil", "buckets: class property affected className"); + // <label for=""> + test = document.createElement('label'); + test.htmlFor = 'jars'; + assertEquals(test.htmlFor, 'jars', "jars: htmlFor wrong"); + assertEquals(test.getAttribute('for'), 'jars', "jars: for wrong"); + assert(!test.hasAttribute('htmlFor'), "jars: element has htmlFor attribute"); + assert(test.htmlFor != test.getAttribute('htmlFor'), "jars: htmlFor attribute equals htmlFor property"); + test = document.createElement('label'); + test.setAttribute('for', 'pots'); + assertEquals(test.htmlFor, 'pots', "pots: htmlFor wrong"); + assertEquals(test.getAttribute('for'), 'pots', "pots: for wrong"); + assert(!test.hasAttribute('htmlFor'), "pots: element has htmlFor attribute"); + assert(test.htmlFor != test.getAttribute('htmlFor'), "pots: htmlFor attribute equals htmlFor property"); + assert(!('for' in test), "pots: element has for property"); + test['for'] = "oil"; + assert(test.htmlFor != "oil", "pots: for property affected htmlFor"); + // <meta http-equiv=""> + test = document.createElement('meta'); + test.setAttribute('http-equiv', 'boxes'); + assertEquals(test.httpEquiv, 'boxes', "boxes: httpEquiv wrong"); + assertEquals(test.getAttribute('http-equiv'), 'boxes', "boxes: http-equiv wrong"); + assert(!test.hasAttribute('httpEquiv'), "boxes: element has httpEquiv attribute"); + assert(test.httpEquiv != test.getAttribute('httpEquiv'), "boxes: httpEquiv attribute equals httpEquiv property"); + test = document.createElement('meta'); + test.httpEquiv = 'cans'; + assertEquals(test.httpEquiv, 'cans', "cans: httpEquiv wrong"); + assertEquals(test.getAttribute('http-equiv'), 'cans', "cans: http-equiv wrong"); + assert(!test.hasAttribute('httpEquiv'), "cans: element has httpEquiv attribute"); + assert(test.httpEquiv != test.getAttribute('httpEquiv'), "cans: httpEquiv attribute equals httpEquiv property"); + assert(!('http-equiv' in test), "cans: element has http-equiv property"); + test['http-equiv'] = "oil"; + assert(test.httpEquiv != "oil", "cans: http-equiv property affected httpEquiv"); + return 4; + }, + function () { + // test 63: attributes of the <area> element + var area = document.getElementsByTagName('area')[0]; + assertEquals(area.getAttribute('href'), '', "wrong value for href=''"); + assertEquals(area.getAttribute('shape'), 'rect', "wrong value for shape=''"); + assertEquals(area.getAttribute('coords'), '2,2,4,4', "wrong value for coords=''"); + assertEquals(area.getAttribute('alt'), '<\'>', "wrong value for alt=''"); + return 4; + }, + function () { + // test 64: more attribute tests + // attributes of the <object> element + var obj1 = document.createElement('object'); + obj1.setAttribute('data', 'test.html'); + var obj2 = document.createElement('object'); + obj2.setAttribute('data', './test.html'); + assertEquals(obj1.data, obj2.data, "object elements didn't resolve URIs correctly"); + assert(obj1.data.match(/^http:/), "object.data isn't absolute"); + obj1.appendChild(document.createElement('param')); + assertEquals(obj1.getElementsByTagName('param').length, 1, "object is missing its only child"); + // non-existent attributes + var test = document.createElement('p'); + assert(!('TWVvdywgbWV3Li4u' in test), "TWVvdywgbWV3Li4u unexpectedly found"); + assertEquals(test.TWVvdywgbWV3Li4u, undefined, ".TWVvdywgbWV3Li4u wasn't undefined"); + assertEquals(test['TWVvdywgbWV3Li4u'], undefined, "['TWVvdywgbWV3Li4u'] wasn't undefined"); + test.setAttribute('TWVvdywgbWV3Li4u', 'woof'); + assert(!('TWVvdywgbWV3Li4u' in test), "TWVvdywgbWV3Li4u unexpectedly found after setting"); + assertEquals(test.TWVvdywgbWV3Li4u, undefined, ".TWVvdywgbWV3Li4u wasn't undefined after setting"); + assertEquals(test['TWVvdywgbWV3Li4u'], undefined, "['TWVvdywgbWV3Li4u'] wasn't undefined after setting"); + assertEquals(test.getAttribute('TWVvdywgbWV3Li4u'), 'woof', "TWVvdywgbWV3Li4u has wrong value after setting"); + return 4; + }, + + // bucket 5: Tests from the Acid3 Competition + function () { + // test 65: bring in a couple of SVG files and some HTML files dynamically - preparation for later tests in this bucket + // NOTE FROM 2011 UPDATE: The svg.xml file still contains the SVG font, but it is no longer used + kungFuDeathGrip = document.createElement('p'); + kungFuDeathGrip.className = 'removed'; + var iframe, object; + // svg iframe + iframe = document.createElement('iframe'); + iframe.onload = function () { kungFuDeathGrip.title += '1' }; + iframe.src = "svg.xml"; + kungFuDeathGrip.appendChild(iframe); + // object iframe + object = document.createElement('object'); + object.onload = function () { kungFuDeathGrip.title += '2' }; + object.data = "svg.xml"; + kungFuDeathGrip.appendChild(object); + // xml iframe + iframe = document.createElement('iframe'); + iframe.onload = function () { kungFuDeathGrip.title += '3' }; + iframe.src = "empty.xml"; + kungFuDeathGrip.appendChild(iframe); + // html iframe + iframe = document.createElement('iframe'); + iframe.onload = function () { kungFuDeathGrip.title += '4' }; + iframe.src = "empty.html"; + kungFuDeathGrip.appendChild(iframe); + // html iframe + iframe = document.createElement('iframe'); + iframe.onload = function () { kungFuDeathGrip.title += '5' }; + iframe.src = "xhtml.1"; + kungFuDeathGrip.appendChild(iframe); + // html iframe + iframe = document.createElement('iframe'); + iframe.onload = function () { kungFuDeathGrip.title += '6' }; + iframe.src = "xhtml.2"; + kungFuDeathGrip.appendChild(iframe); + // html iframe + iframe = document.createElement('iframe'); + iframe.onload = function () { kungFuDeathGrip.title += '7' }; + iframe.src = "xhtml.3"; + kungFuDeathGrip.appendChild(iframe); + // add the lot to the document + document.getElementsByTagName('map')[0].appendChild(kungFuDeathGrip); + return 5; + }, + function () { + // test 66: localName on text nodes (and now other things), from Sylvain Pasche + assertEquals(document.createTextNode("test").localName, null, 'wrong localName for text node'); + assertEquals(document.createComment("test").localName, null, 'wrong localName for comment node'); + assertEquals(document.localName, null, 'wrong localName for document node'); + return 5; + }, + function () { +// COMMENTED OUT IN NOV 2013 BECAUSE DOM SPEC REMOVED THIS FEATURE +// // test 67: removedNamedItemNS on missing attributes, from Sylvain Pasche +// var p = document.createElement("p"); +// var msg = 'wrong exception raised'; +// try { +// p.attributes.removeNamedItemNS("http://www.example.com/", "absent"); +// msg = 'no exception raised'; +// } catch (e) { +// if ('code' in e) { +// if (e.code == 8) +// msg = ''; +// else +// msg += '; code = ' + e.code; +// } +// } +// assert(msg == '', "when calling removeNamedItemNS in a non existent attribute: " + msg); + return 5; + }, + function () { + // test 68: UTF-16 surrogate pairs, from David Chan + // + // In The Unicode Standard 5.0, it is explicitly permitted to + // allow malformed UTF-16, that is, to leave the string alone. + // (http://www.unicode.org/versions/Unicode5.0.0): + // + // section 2.7: "...strings in ... ECMAScript are Unicode 16-bit + // strings, but are not necessarily well-formed UTF-16 + // sequences. In normal processing, it can be far more + // efficient to allow such strings to contain code unit + // sequences that are not well-formed UTF-16 -- that is, + // isolated surrogates" + // + // On the other hand, if the application wishes to ensure + // well-formed character sequences, it may not permit the + // malformed sequence and it must regard the first codepoint as + // an error: + // + // Section 3.2: "C10. When a process interprets a code sequence + // which purports to be in a Unicode character encoding form, it + // shall treat ill-formed code unit sequences as an error + // condition and shall not interpret such sequences as + // characters. + // [...] + // For example, in UTF-8 every code unit of the form 110....2 + // must be followed by a code unit of the form 10......2. A + // sequence such as 110.....2 0.......2 is ill-formed and must + // never be generated. When faced with this ill-formed code unit + // sequence while transforming or interpreting text, a + // conformant process must treat the first code unit 110.....2 + // as an illegally terminated code unit sequence~Wfor example, + // by signaling an error, filtering the code unit out, or + // representing the code unit with a marker such as U+FFFD + // replacement character." + // + // So it would be permitted to do any of the following: + // 1) Leave the string alone + // 2) Remove the unpaired surrogate + // 3) Replace the unpaired surrogate with U+FFFD + // 4) Throw an exception + + try { + var unpaired = String.fromCharCode(0xd863); // half a surrogate pair + var before = unpaired + "text"; + var elt = document.createElement("input"); + elt.value = before; + var after = elt.value; + } + catch(ex) { + return 5; // Unpaired surrogate caused an exception - ok + } + if (after == before && before.length == 5) + return 5; // Unpaired surrogate kept - ok + if (after == "text") + return 5; // Unpaired surrogate removed - ok + var replacement = String.fromCharCode(0xfffd); + if (after == replacement + "text") + return 5; // Unpaired surrogate replaced - ok + fail("Unpaired surrogate handled wrongly (input was '" + before + "', output was '" + after + "')"); + }, + function () { + // test 69: check that the support files loaded -- preparation for the rest of the tests in this bucket + assert(!(kungFuDeathGrip == null), "kungFuDeathGrip was null"); + assert(!(kungFuDeathGrip.title == null), "kungFuDeathGrip.title was null"); + if (kungFuDeathGrip.title.length < 7) + return "retry"; + assert(!(kungFuDeathGrip.firstChild == null), "kungFuDeathGrip.firstChild was null"); + assert(!(kungFuDeathGrip.firstChild.contentDocument == null), "kungFuDeathGrip.firstChild.contentDocument was null"); + assert(!(kungFuDeathGrip.firstChild.contentDocument.getElementsByTagName == null), "kungFuDeathGrip.firstChild.contentDocument.getElementsByTagName was null"); + var t = kungFuDeathGrip.firstChild.contentDocument.getElementsByTagName('text')[0]; + assert(!(t == null), "t was null"); + assert(!(t.parentNode == null), "t.parentNode was null"); + assert(!(t.parentNode.removeChild == null), "t.parentNode.removeChild was null"); + t.parentNode.removeChild(t); + return 5; + }, + function () { + // test 70: XML encoding test + // the third child in kungFuDeathGrip is an ISO-8859-1 document sent as UTF-8. + // q.v. XML 1.0, section 4.3.3 Character Encoding in Entities + // this only tests one of a large number of conditions that should cause fatal errors + var doc = kungFuDeathGrip.childNodes[2].contentDocument; + if (!doc) + return 5; + if (doc.documentElement.tagName != "root") + return 5; + if (doc.documentElement.getElementsByTagName('test').length < 1) + return 5; + fail("UTF-8 encoded XML document with invalid character did not have a well-formedness error"); + }, + function () { + // test 71: HTML parsing, from Simon Pieters and Anne van Kesteren + var doc = kungFuDeathGrip.childNodes[3].contentDocument; + assert(doc, "missing document for test"); + try { + // siblings + doc.open(); + doc.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"><title><\/title><span><\/span><script type=\"text/javascript\"><\/script>"); + doc.close(); + assertEquals(doc.childNodes.length, 2, "wrong number of children in #document (first test)"); + assertEquals(doc.firstChild.name.toUpperCase(), "HTML", "name wrong (first test)"); // changed 2009-08-13 to add .toUpperCase() for HTML5 compat + assertEquals(doc.firstChild.publicId, "-//W3C//DTD HTML 4.0 Transitional//EN", "publicId wrong (first test)"); + if ((doc.firstChild.systemId != null) && (doc.firstChild.systemId != "")) + fail("systemId wrong (first test)"); + if (('internalSubset' in doc.firstChild) || doc.firstChild.internalSubset) + assertEquals(doc.firstChild.internalSubset, null, "internalSubset wrong (first test)"); + assertEquals(doc.documentElement.childNodes.length, 2, "wrong number of children in HTML (first test)"); + assertEquals(doc.documentElement.firstChild.nodeName, "HEAD", "misplaced HEAD element (first test)"); + assertEquals(doc.documentElement.firstChild.childNodes.length, 1, "wrong number of children in HEAD (first test)"); + assertEquals(doc.documentElement.firstChild.firstChild.tagName, "TITLE", "misplaced TITLE element (first test)"); + assertEquals(doc.documentElement.lastChild.nodeName, "BODY", "misplaced BODY element (first test)"); + assertEquals(doc.documentElement.lastChild.childNodes.length, 2, "wrong number of children in BODY (first test)"); + assertEquals(doc.documentElement.lastChild.firstChild.tagName, "SPAN", "misplaced SPAN element (first test)"); + assertEquals(doc.documentElement.lastChild.lastChild.tagName, "SCRIPT", "misplaced SCRIPT element (first test)"); + // parent/child + doc.open(); + doc.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"><title><\/title><span><script type=\"text/javascript\"><\/script><\/span>"); + doc.close(); + assertEquals(doc.childNodes.length, 2, "wrong number of children in #document (second test)"); + assertEquals(doc.firstChild.name.toUpperCase(), "HTML", "name wrong (second test)"); // changed 2009-08-13 to add .toUpperCase() for HTML5 compat + assertEquals(doc.firstChild.publicId, "-//W3C//DTD HTML 4.01 Transitional//EN", "publicId wrong (second test)"); + assertEquals(doc.firstChild.systemId, "http://www.w3.org/TR/html4/loose.dtd", "systemId wrong (second test)"); + if (('internalSubset' in doc.firstChild) || doc.firstChild.internalSubset) + assertEquals(doc.firstChild.internalSubset, null, "internalSubset wrong (second test)"); + assertEquals(doc.documentElement.childNodes.length, 2, "wrong number of children in HTML (second test)"); + assertEquals(doc.documentElement.firstChild.nodeName, "HEAD", "misplaced HEAD element (second test)"); + assertEquals(doc.documentElement.firstChild.childNodes.length, 1, "wrong number of children in HEAD (second test)"); + assertEquals(doc.documentElement.firstChild.firstChild.tagName, "TITLE", "misplaced TITLE element (second test)"); + assertEquals(doc.documentElement.lastChild.nodeName, "BODY", "misplaced BODY element (second test)"); + assertEquals(doc.documentElement.lastChild.childNodes.length, 1, "wrong number of children in BODY (second test)"); + assertEquals(doc.documentElement.lastChild.firstChild.tagName, "SPAN", "misplaced SPAN element (second test)"); + assertEquals(doc.documentElement.lastChild.firstChild.firstChild.tagName, "SCRIPT", "misplaced SCRIPT element (second test)"); + } finally { + // prepare the file for the next test + doc.open(); + doc.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"><head><title><\/title><style type=\"text/css\">img { height: 10px; }<\/style><body><p><img src=\"data:image/gif;base64,R0lGODlhAQABAID%2FAMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D\" alt=\"\">"); + doc.close(); + } + return 5; + }, + function () { + // test 72: dynamic modification of <style> blocks' text nodes, from Jonas Sicking and Garret Smith + var doc = kungFuDeathGrip.childNodes[3].contentDocument; + assert(doc, "missing document for test"); + assert(doc.images[0], "prerequisite failed: no image"); + assertEquals(doc.images[0].height, 10, "prerequisite failed: style didn't affect image"); + doc.styleSheets[0].ownerNode.firstChild.data = "img { height: 20px; }"; + assertEquals(doc.images[0].height, 20, "change failed to take effect"); + doc.styleSheets[0].ownerNode.appendChild(doc.createTextNode("img { height: 30px; }")); + assertEquals(doc.images[0].height, 30, "append failed to take effect"); + var rules = doc.styleSheets[0].cssRules; // "All CSS objects in the DOM are "live"" says section 2.1, Overview of the DOM Level 2 CSS Interfaces + doc.styleSheets[0].insertRule("img { height: 40px; }", 2); + assertEquals(doc.images[0].height, 40, "insertRule failed to take effect"); + assertEquals(doc.styleSheets[0].cssRules.length, 3, "count of rules is wrong"); + assertEquals(rules.length, 3, "cssRules isn't live"); + // while we're at it, check some other things on doc.styleSheets: + assert(doc.styleSheets[0].href === null, "internal stylesheet had a URI: " + doc.styleSheets[0].href); + assert(document.styleSheets[0].href === null, "internal acid3 stylesheet had a URI: " + document.styleSheets[0].href); + return 5; + }, + function () { + // test 73: nested events, from Jonas Sicking + var doc = kungFuDeathGrip.childNodes[3].contentDocument; + // implied events + var up = 0; + var down = 0; + var button = doc.createElement("button"); + button.type = "button"; + button.onclick = function () { up += 1; if (up < 10) button.click(); down += up; }; // not called + button.addEventListener('test', function () { up += 1; var e = doc.createEvent("HTMLEvents"); e.initEvent('test', false, false); if (up < 20) button.dispatchEvent(e); down += up; }, false); + var evt = doc.createEvent("HTMLEvents"); + evt.initEvent('test', false, false); + button.dispatchEvent(evt); + assertEquals(up, 20, "test event handler called the wrong number of times"); + assertEquals(down, 400, "test event handler called in the wrong order"); + return 5; + }, + function () { + // test 74: check getSVGDocument(), from Erik Dahlstrom + // GetSVGDocument[6]: "In the case where an SVG document is + // embedded by reference, such as when an XHTML document has an + // 'object' element whose href (or equivalent) attribute + // references an SVG document (i.e., a document whose MIME type + // is "image/svg+xml" and whose root element is thus an 'svg' + // element), the SVG user agent is required to implement the + // GetSVGDocument interface for the element which references the + // SVG document (e.g., the HTML 'object' or comparable + // referencing elements)." + // + // [6] http://www.w3.org/TR/SVG11/struct.html#InterfaceGetSVGDocument + // + // iframe + var iframe = kungFuDeathGrip.childNodes[0]; + assert(iframe, "Failed finding svg iframe."); + assert(iframe.contentDocument, "contentDocument failed for <iframe> referencing an svg document."); + if (!iframe.getSVGDocument) + fail("getSVGDocument missing on <iframe> element."); + assert(iframe.getSVGDocument(), "getSVGDocument failed for <iframe> referencing an svg document."); + assert(iframe.getSVGDocument() == iframe.contentDocument, "Mismatch between getSVGDocument and contentDocument #1."); + // object + var object = kungFuDeathGrip.childNodes[1]; + assert(object, "Failed finding svg object."); + assert(object.contentDocument, "contentDocument failed for <object> referencing an svg document."); + if (!object.getSVGDocument) + fail("getSVGDocument missing on <object> element."); + assert(object.getSVGDocument(), "getSVGDocument failed for <object> referencing an svg document."); + assert(object.getSVGDocument() == object.contentDocument, "Mismatch between getSVGDocument and contentDocument #2."); + return 5; + }, + function () { +// PARTS COMMENTED OUT FOR 2011 UPDATE - SVG Fonts, SVG SMIL animation, and XLink have met with some implementor malaise even amongst those that shipped them +// This affects tests 75 to 79 +// // test 75: SMIL in SVG, from Erik Dahlstrom +// // +// // The test begins by creating a few elements, among those is a +// // <set> element. This element is prevented from running by +// // setting begin="indefinite", which means that the animation +// // doesn't start until the 'beginElement' DOM method is called +// // on the <set> element. The animation is a simple animation +// // that sets the value of the width attribute to 0. The duration +// // of the animation is 'indefinite' which means that the value +// // will stay 0 indefinitely. The target of the animation is the +// // 'width' attribute of the <rect> element that is the parent of +// // the <set> element. When 'width' is 0 the rect is not rendered +// // according to the spec[7]. +// // +// // Some properties of the SVGAnimatedLength[2] and SVGLength[8] +// // are also inspected. Before the animation starts both baseVal +// // and animVal contain the same values[2]. Then the animation is +// // started by calling the beginElement method[9]. To make sure +// // that time passes between the triggering of the animation and +// // the time that the values are read out (in test #66), the +// // current time is set to 1000 seconds using the setCurrentTime +// // method[10]. +// // +// // [2] http://www.w3.org/TR/SVG11/types.html#InterfaceSVGAnimatedLength +// // [7] http://www.w3.org/TR/SVG11/shapes.html#RectElement +// // [8] http://www.w3.org/TR/SVG11/types.html#InterfaceSVGLength +// // [9] http://www.w3.org/TR/SVG11/animate.html#DOMInterfaces +// // [10] http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGSVGElement +// + var svgns = "http://www.w3.org/2000/svg"; + var svgdoc = kungFuDeathGrip.firstChild.contentDocument; + assert(svgdoc, "contentDocument failed on <iframe> for svg document."); + var svg = svgdoc.documentElement; + var rect = svgdoc.createElementNS(svgns, "rect"); + rect.setAttribute("fill", "red"); + rect.setAttribute("width", "100"); + rect.setAttribute("height", "100"); + rect.setAttribute("id", "rect"); +// var anim = svgdoc.createElementNS(svgns, "set"); +// anim.setAttribute("begin", "indefinite"); +// anim.setAttribute("to", "0"); +// anim.setAttribute("attributeName", "width"); +// anim.setAttribute("dur", "indefinite"); +// anim.setAttribute("fill", "freeze"); +// rect.appendChild(anim); + svg.appendChild(rect); + assert(rect.width, "SVG DOM interface SVGRectElement not supported."); +// assert(rect.width.baseVal, "SVG DOM base type SVGAnimatedLength not supported."); +// assert(rect.width.animVal, "SVG DOM base type SVGAnimatedLength not supported."); +// assertEquals(SVGLength.SVG_LENGTHTYPE_NUMBER, 1, "Incorrect SVGLength.SVG_LENGTHTYPE_NUMBER constant value."); +// assertEquals(rect.width.baseVal.unitType, SVGLength.SVG_LENGTHTYPE_NUMBER, "Incorrect unitType on width attribute."); + assertEquals(rect.getAttribute("width"), "100", "Incorrect value from getAttribute."); +// assertEquals(rect.width.baseVal.valueInSpecifiedUnits, 100, "Incorrect valueInSpecifiedUnits value."); +// assertEquals(rect.width.baseVal.value, 100, "Incorrect baseVal value before animation."); +// assertEquals(rect.width.animVal.value, 100, "Incorrect animVal value before animation."); +// anim.beginElement(); +// assertEquals(rect.width.baseVal.value, 100, "Incorrect baseVal value after starting animation."); +// svg.setCurrentTime(1000); // setting 1 second to make sure that time != 0s when we check the animVal value +// // the animation is then tested in the next test + return 5; + }, + function () { +// // test 76: SMIL in SVG, part 2, from Erik Dahlstrom +// // +// // About animVal[2]: "If the given attribute or property is +// // being animated, contains the current animated value of the +// // attribute or property, and both the object itself and its +// // contents are readonly. If the given attribute or property is +// // not currently being animated, contains the same value as +// // 'baseVal'." +// // +// // Since the duration of the animation is indefinite the value +// // is still being animated at the time it's queried. Now since +// // the 'width' attribute was animated from its original value of +// // "100" to the new value of "0" the animVal property must +// // contain the value 0. +// // +// // [2] http://www.w3.org/TR/SVG11/types.html#InterfaceSVGAnimatedLength +// + var svgdoc = kungFuDeathGrip.firstChild.contentDocument; + assert(svgdoc, "contentDocument failed on <object> for svg document."); + var rect = svgdoc.getElementById("rect"); + assert(rect, "Failed to find <rect> element in svg document."); +// assertEquals(rect.width.animVal.value, 0, "Incorrect animVal value after svg animation."); + return 5; + }, + function () { +// // test 77: external SVG fonts, from Erik Dahlstrom +// // +// // SVGFonts are described here[3], and the relevant DOM methods +// // used in the test are defined here[4]. +// // +// // Note that in order to be more predictable the svg should be +// // visible, so that clause "For non-rendering environments, the +// // user agent shall make reasonable assumptions about glyph +// // metrics." doesn't influence the results. We use 'opacity:0' +// // to hide the SVG, but arguably it's still a "rendering +// // environment". +// // +// // The font-size 4000 was chosen because that matches the +// // unitsPerEm value in the svgfont, which makes it easy to check +// // the glyph advances since they will then be exactly what was +// // specified in the svgfont. +// // +// // [3] http://www.w3.org/TR/SVG11/fonts.html +// // [4] http://www.w3.org/TR/SVG11/text.html#InterfaceSVGTextContentElement +// + var svgns = "http://www.w3.org/2000/svg"; +// var xlinkns = "http://www.w3.org/1999/xlink"; + var svgdoc = kungFuDeathGrip.firstChild.contentDocument; + assert(svgdoc, "contentDocument failed on <object> for svg document."); + var svg = svgdoc.documentElement; + var text = svgdoc.createElementNS(svgns, "text"); + text.setAttribute("y", "1em"); + text.setAttribute("font-size", "4000"); + text.setAttribute("font-family", "ACID3svgfont"); + var textContent = svgdoc.createTextNode("abc"); + text.appendChild(textContent); + svg.appendChild(text); + // The font-size 4000 was chosen because that matches the unitsPerEm value in the svgfont, + // which makes it easy to check the glyph advances since they will then be exactly what was specified in the svgfont. + assert(text.getNumberOfChars, "SVGTextContentElement.getNumberOfChars() not supported."); + assertEquals(text.getNumberOfChars(), 3, "getNumberOfChars returned incorrect string length."); +// assertEquals(text.getComputedTextLength(), 4711+42+23, "getComputedTextLength failed."); +// assertEquals(text.getSubStringLength(0,1), 42, "getSubStringLength #1 failed."); +// assertEquals(text.getSubStringLength(0,2), 42+23, "getSubStringLength #2 failed."); +// assertEquals(text.getSubStringLength(1,1), 23, "getSubStringLength #3 failed."); +// assertEquals(text.getSubStringLength(1,0), 0, "getSubStringLength #4 failed."); +///* COMMENTED OUT BECAUSE SVGWG KEEPS CHANGING THIS +// * var code = -1000; +// * try { +// * var sl = text.getSubStringLength(1,3); +// * } catch(e) { +// * code = e.code; +// * } +// * assertEquals(code, DOMException.INDEX_SIZE_ERR, "getSubStringLength #1 didn't throw exception."); +// * code = -1000; +// * try { +// * var sl = text.getSubStringLength(0,4); +// * } catch(e) { +// * code = e.code; +// * } +// * assertEquals(code, DOMException.INDEX_SIZE_ERR, "getSubStringLength #2 didn't throw exception."); +// * code = -1000; +// * try { +// * var sl = text.getSubStringLength(3,0); +// * } catch(e) { +// * code = e.code; +// * } +// * assertEquals(code, DOMException.INDEX_SIZE_ERR, "getSubStringLength #3 didn't throw exception."); +// */ +// code = -1000; +// try { +// var sl = text.getSubStringLength(-17,20); +// } catch(e) { +// code = 0; // negative values might throw native exception since the api accepts only unsigned values +// } +// assert(code == 0, "getSubStringLength #4 didn't throw exception."); +// assertEquals(text.getStartPositionOfChar(0).x, 0, "getStartPositionOfChar(0).x returned invalid value."); +// assertEquals(text.getStartPositionOfChar(1).x, 42, "getStartPositionOfChar(1).x returned invalid value."); +// assertEquals(text.getStartPositionOfChar(2).x, 42+23, "getStartPositionOfChar(2).x returned invalid value."); +// assertEquals(text.getStartPositionOfChar(0).y, 4000, "getStartPositionOfChar(0).y returned invalid value."); +// code = -1000; +// try { +// var val = text.getStartPositionOfChar(-1); +// } catch(e) { +// code = 0; // negative values might throw native exception since the api accepts only unsigned values +// } +// assert(code == 0, "getStartPositionOfChar #1 exception failed."); +// code = -1000; +// try { +// var val = text.getStartPositionOfChar(4); +// } catch(e) { +// code = e.code; +// } +// assertEquals(code, DOMException.INDEX_SIZE_ERR, "getStartPositionOfChar #2 exception failed."); +// assertEquals(text.getEndPositionOfChar(0).x, 42, "getEndPositionOfChar(0).x returned invalid value."); +// assertEquals(text.getEndPositionOfChar(1).x, 42+23, "getEndPositionOfChar(1).x returned invalid value."); +// assertEquals(text.getEndPositionOfChar(2).x, 42+23+4711, "getEndPositionOfChar(2).x returned invalid value."); +// code = -1000; +// try { +// var val = text.getEndPositionOfChar(-17); +// } catch(e) { +// code = 0; // negative values might throw native exception since the api accepts only unsigned values +// } +// assert(code == 0, "getEndPositionOfChar #1 exception failed."); +// code = -1000; +// try { +// var val = text.getEndPositionOfChar(4); +// } catch(e) { +// code = e.code; +// } +// assertEquals(code, DOMException.INDEX_SIZE_ERR, "getEndPositionOfChar #2 exception failed."); + return 5; + }, + function () { +// // test 78: SVG textPath and getRotationOfChar(), from Erik Dahlstrom +// // +// // The getRotationOfChar[4] method fetches the midpoint rotation +// // of a glyph defined by a character (in this testcase there is +// // a simple 1:1 correspondence between the two). The path is +// // defined in the svg.xml file, and consists of first a line +// // going down, then followed by a line that has a 45 degree +// // slope and then followed by a horizontal line. The length of +// // each path segment have been paired with the advance of each +// // glyph, so that each glyph will be on each of the three +// // different path segments (see text on a path layout rules[5]). +// // Thus the rotation of the first glyph is 90 degrees, the +// // second 45 degrees and the third 0 degrees. +// // +// // [4] http://www.w3.org/TR/SVG11/text.html#InterfaceSVGTextContentElement +// // [5] http://www.w3.org/TR/SVG11/text.html#TextpathLayoutRules +// + var svgns = "http://www.w3.org/2000/svg"; +// var xlinkns = "http://www.w3.org/1999/xlink"; + var svgdoc = kungFuDeathGrip.firstChild.contentDocument; + assert(svgdoc, "contentDocument failed on <object> for svg document."); + var svg = svgdoc.documentElement; +// var text = svgdoc.createElementNS(svgns, "text"); +// text.setAttribute("font-size", "4000"); +// text.setAttribute("font-family", "ACID3svgfont"); +// var textpath = svgdoc.createElementNS(svgns, "textPath"); +// textpath.setAttributeNS(xlinkns, "xlink:href", "#path"); +// var textContent = svgdoc.createTextNode("abc"); +// textpath.appendChild(textContent); +// text.appendChild(textpath); +// svg.appendChild(text); +// assertEquals(text.getRotationOfChar(0), 90, "getRotationOfChar(0) failed."); +// assertEquals(text.getRotationOfChar(1), 45, "getRotationOfChar(1) failed."); +// assertEquals(text.getRotationOfChar(2), 0, "getRotationOfChar(2) failed."); +// var code = -1000; +// try { +// var val = text.getRotationOfChar(-1) +// } catch(e) { +// code = e.code; +// } +// assertEquals(code, DOMException.INDEX_SIZE_ERR, "getRotationOfChar #1 exception failed."); +// code = -1000; +// try { +// var val = text.getRotationOfChar(4) +// } catch(e) { +// code = e.code; +// } +// assertEquals(code, DOMException.INDEX_SIZE_ERR, "getRotationOfChar #2 exception failed."); + return 5; + }, + function () { +// // test 79: a giant test for <svg:font>, from Cameron McCormack +// // This tests various features of SVG fonts from SVG 1.1. It consists of +// // a <text> element with 33 characters, styled using an SVG font that has +// // different advance values for each glyph. The script uses +// // SVGTextElementContent.getStartPositionOfChar() to determine where the +// // glyph corresponding to each character was placed, and thus to work out +// // whether the SVG font was used correctly. +// // +// // The font uses 100 units per em, and the text is set in 100px. Since +// // font-size gives the size of the em box +// // (http://www.w3.org/TR/SVG11/text.html#DOMInterfaces), the scale of the +// // coordinate system for the glyphs is the same as the SVG document. +// // +// // The expectedAdvances array holds the expected advance value for each +// // character, and expectedKerning holds the (negative) kerning for each +// // character. getPositionOfChar() returns the actual x coordinate for the +// // glyph, corresponding to the given character, and if multiple characters +// // correspond to the same glyph, the same position value is returned for +// // each of those characters. +// // +// // Here are the reasonings for the advance/kerning values. Note that for +// // a given character at index i, the expected position is +// // sum(expectedAdvances[0:i-1] + expectedKerning[0:i-1]). +// // +// // char advance kerning reasoning +// // ------- ------- ------- -------------------------------------------------- +// // A 10000 0 Normal character mapping to a single glyph. +// // B 0 0 First character of a two character glyph, so the +// // current position isn't advanced until the second +// // character. +// // C 200 0 Second character of a two character glyph, so now +// // the position is advanced. +// // B 300 0 Although there is a glyph for "BC" in the font, +// // it appears after the glyph for "B", so the single +// // character glyph for "B" should be chosen instead. +// // D 1100 0 Normal character mapping to a single glyph. +// // A 10000 200 Kerning of -200 is specified in the font between +// // the "A" and "EE" glyphs. +// // E 0 0 The first character of a two character glyph "EE". +// // E 1300 0 The second character of a two character glyph. +// // U 0 0 This is a glyph for the six characters "U+0046", +// // which happen to look like a valid unicode range. +// // This tests that the <glyph unicode=""> in the +// // font matches exact strings rather than a range, +// // as used in the kerning elements. +// // + 0 0 Second character of six character glyph. +// // 0 0 0 Third character of six character glyph. +// // 0 0 0 Fourth character of six character glyph. +// // 4 0 0 Fifth character of six character glyph. +// // 6 1700 0 Sixth character of six character glyph. +// // U 0 0 The same six character glyph that looks like a +// // Unicode range. One of the kerning elements has +// // u1="U+0046" u2="U+0046", which shouldn't match +// // this, because those attributes are interpreted +// // as Unicode ranges if they are, and normal +// // strings otherwise. Thus there should be no +// // kerning between these two glyphs. +// // G 2300 200 Kerning is between this character and the next +// // "G", since there is an <hkern> element that +// // uses a Unicode range on its u1="" attribute +// // and a glyph name on its g2="" attribute which +// // both match "G". +// // G 2300 0 Normal character with kerning before it. +// // H 3100 0 A glyph with graphical content describing the +// // glyph, rather than a d="" attribute. +// // I 4300 0 Glyphs are checked in document order for one +// // that matches, but the first glyph with +// // unicode="I" also has lang="zh", which disqualifies +// // it. Thus the second glyph with unicode="I" +// // is chosen. +// // I 4100 0 Since this I has xml:lang="zh" on it in the text, +// // the first glyph with lang="zh" matches. +// // J 4700 -4700 A normal glyph with kerning between the "J" and the +// // next glyph "A" equal to the advance of the "J" +// // glyph, so the position should stay the same. +// // A 10000 0 Normal glyph with kerning before it. +// // K 5900 0 The first glyph with unicode="K" does not match, +// // since it has orientation="v", so the second +// // glyph with unicode="K" is chosen. +// // <spc> 6100 0 The space character should select the glyph with +// // unicode=" ", despite it having a misleading +// // glyph-name="L". +// // L 6700 0 The "L" character should select the glyph with +// // unicode=" ", despite it having a misleading +// // glyph-name="spacev". +// // A 2900 0 An <altGlyph> element is used to select the +// // glyph for U+10085 instead of the one for "A". +// // U+10085 2900 0 Tests glyph selection with a non-plane-0 +// // character. +// // A 10000 0 A final normal character. +// // +// // In addition, the script tests the value returned by +// // SVGTextContentElement.getNumberOfChars(), which in this case should be 34. +// // If it returned 33, then it incorrectly counted Unicode characters instead +// // of UTF-16 codepoints (probably). +// // +// // See http://www.w3.org/TR/SVG11/fonts.html for a description of the glyph +// // matching rules, and http://www.w3.org/TR/SVG11/text.html#DOMInterfaces +// // for a description of getStartPositionOfChar() and getNumberOfChars(). +// // +// // Note also that the test uses DOMImplementation.createDocument() to create +// // the SVG document. This seems to cause browsers trouble for the SVG DOM +// // interfaces, since the document isn't being "rendered" as it might be +// // if it were in an <iframe>. Changing the test to use an <iframe> will +// // at least let you see the main part of the test running. +// + var NS = { + svg: 'http://www.w3.org/2000/svg', + xml: 'http://www.w3.org/XML/1998/namespace', +// xlink: 'http://www.w3.org/1999/xlink' + }; + + var doc = kungFuDeathGrip.childNodes[1].contentDocument; + while (doc.hasChildNodes()) + doc.removeChild(doc.firstChild); + doc.appendChild(doc.createElementNS(NS.svg, "svg:svg")); +// +// var e = function (n, as, cs) { +// var elt = doc.createElementNS(NS.svg, n); +// if (as) { +// for (var an in as) { +// var idx = an.indexOf(':'); +// var ns = null; +// if (idx != -1) +// ns = NS[an.substring(0, idx)]; +// elt.setAttributeNS(ns, an, as[an]); +// } +// } +// if (cs) { +// for (var i in cs) { +// var c = cs[i]; +// elt.appendChild(typeof c == 'string' ? doc.createTextNode(c) : c); +// } +// } +// return elt; +// } +// +// doc.documentElement.appendChild(e('font', { 'horiz-adv-x': '10000'}, [e('font-face', { 'font-family': 'HCl', 'units-per-em': '100', 'ascent': '1000', 'descent': '500'}), e('missing-glyph', null, [e('path', { 'd': 'M100,0 h800 v-100 h-800 z'})]), e('glyph', { 'unicode': 'A', 'd': 'M100,0 h100 v-100 h-100 z'}), e('glyph', { 'unicode': 'BC', 'd': 'M100,0 h100 v-100 h-100 z', 'horiz-adv-x': '200'}), e('glyph', { 'unicode': 'B', 'd': 'M100,0 h100 v-100 h-100 z', 'horiz-adv-x': '300'}), e('glyph', { 'unicode': 'C', 'd': 'M100,0 h100 v-100 h-100 z', 'horiz-adv-x': '500'}), e('glyph', { 'unicode': 'BD', 'd': 'M100,0 h100 v-100 h-100 z', 'horiz-adv-x': '700'}), e('glyph', { 'unicode': 'D', 'd': 'M100,0 h100 v-100 h-100 z', 'horiz-adv-x': '1100'}), e('glyph', { 'unicode': 'EE', 'd': 'M100,0 h100 v-100 h-100 z', 'horiz-adv-x': '1300', 'glyph-name': 'grapefruit'}), e('glyph', { 'unicode': 'U+0046', 'd': 'M100,0 h100 v-100 h-100 z', 'horiz-adv-x': '1700'}), e('glyph', { 'unicode': 'F', 'd': 'M100,0 h100 v-100 h-100 z', 'horiz-adv-x': '1900'}), e('glyph', { 'unicode': 'G', 'd': 'M100,0 h100 v-100 h-100 z', 'horiz-adv-x': '2300', 'glyph-name': 'gee'}), e('glyph', { 'unicode': '\uD800\uDC85', 'd': 'M100,0 h100 v-100 h-100 z', 'horiz-adv-x': '2900', 'id': 'astral'}), e('glyph', { 'unicode': 'H', 'horiz-adv-x': '3100'}, [e('path', { 'd': 'M100,0 h100 v-100 h-100 z'})]), e('glyph', { 'unicode': 'I', 'd': 'M100,0 h100 v-100 h-100 z', 'horiz-adv-x': '4100', 'lang': 'zh'}), e('glyph', { 'unicode': 'I', 'd': 'M100,0 h100 v-100 h-100 z', 'horiz-adv-x': '4300'}), e('glyph', { 'unicode': 'J', 'd': 'M100,0 h100 v-100 h-100 z', 'horiz-adv-x': '4700'}), e('glyph', { 'unicode': 'K', 'd': 'M100,0 h100 v-100 h-100 z', 'horiz-adv-x': '5300', 'orientation': 'v'}), e('glyph', { 'unicode': 'K', 'd': 'M100,0 h100 v-100 h-100 z', 'horiz-adv-x': '5900'}), e('glyph', { 'unicode': ' ', 'd': 'M100,0 h100 v-100 h-100 z', 'horiz-adv-x': '6100', 'glyph-name': 'L'}), e('glyph', { 'unicode': 'L', 'd': 'M100,0 h100 v-100 h-100 z', 'horiz-adv-x': '6700', 'glyph-name': 'space'}), e('hkern', { 'u1': 'A', 'u2': 'EE', 'k': '1000'}), e('hkern', { 'u1': 'A', 'g2': 'grapefruit', 'k': '-200'}), e('hkern', { 'u1': 'U+0046', 'u2': 'U+0046', 'k': '-200'}), e('hkern', { 'u1': 'U+0047-0047', 'g2': 'gee', 'k': '-200'}), e('hkern', { 'u1': 'J', 'u2': 'A', 'k': '4700'})])); +// doc.documentElement.appendChild(e('text', { 'y': '100', 'font-family': 'HCl', 'font-size': '100px', 'letter-spacing': '0px', 'word-spacing': '0px'}, ['ABCBDAEEU+0046U+0046GGHI', e('tspan', { 'xml:lang': 'zh'}, ['I']), 'JAK L', e('altGlyph', { 'xlink:href': '#astral'}, ['A']), '\uD800\uDC85A'])); +// +// var t = doc.documentElement.lastChild; +// +// var characterDescriptions = [ +// "a normal character", +// "the first character of a two-character glyph", +// "the second character of a two-character glyph", +// "a normal character, which shouldn't be the first character of a two-character glyph", +// "a normal character, which shouldn't be the second character of a two-character glyph", +// "a normal character, which has some kerning after it", +// "the first character of a two-character glyph, which has some kerning before it", +// "the second character of a two-character glyph, which has some kerning before it", +// "the first character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning after it, but this glyph does not", +// "the second character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning after it, but this glyph does not", +// "the third character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning after it, but this glyph does not", +// "the fourth character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning after it, but this glyph does not", +// "the fifth character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning after it, but this glyph does not", +// "the sixth character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning after it, but this glyph does not", +// "the first character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning before it, but this glyph does not", +// "the second character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning before it, but this glyph does not", +// "the third character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning before it, but this glyph does not", +// "the fourth character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning before it, but this glyph does not", +// "the fifth character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning before it, but this glyph does not", +// "the sixth character of a six-character glyph, which happens to look like a Unicode range, where the range-specified glyph has kerning before it, but this glyph does not", +// "a normal character, which has some kerning after it that is specified by glyph name", +// "a normal character, which has some kerning before it that is specified by glyph name", +// "a normal character, whose glyph is given by child graphical content of the <glyph> element", +// "a normal character, whose glyph should not match the one with a lang=\"\" attribute on it", +// "a normal character, whose glyph should match the one with a lang=\"\" attribute on it", +// "a normal character, which has some kerning after it that is equal to the advance of the character", +// "a normal character, which has some kerning before it that is equal to the advance of the previous character", +// "a normal character, whose glyph should not match the one with an orientation=\"v\" attribute on it", +// "a space character, which has a misleading glyph-name=\"\" attribute", +// "a normal character, which has a misleading glyph-name=\"\" attribute", +// "a normal character, whose glyph is chosen to be another by using <altGlyph>", +// "a character not in Plane 0 (high surrogate pair)", +// "a character not in Plane 0 (low surrogate pair)", +// "a normal character", +// ]; +// +// var expectedAdvances = [ +// 10000, // A +// 0, // BC [0] +// 200, // BC [1] +// 300, // B +// 1100, // D +// 10000, // A +// 0, // EE [0] +// 1300, // EE [1] +// 0, // U+0046 [0] +// 0, // U+0046 [1] +// 0, // U+0046 [2] +// 0, // U+0046 [3] +// 0, // U+0046 [4] +// 1700, // U+0046 [5] +// 0, // U+0046 [0] +// 0, // U+0046 [1] +// 0, // U+0046 [2] +// 0, // U+0046 [3] +// 0, // U+0046 [4] +// 1700, // U+0046 [5] +// 2300, // G +// 2300, // G +// 3100, // H +// 4300, // I +// 4100, // I (zh) +// 4700, // J +// 10000, // A +// 5900, // K +// 6100, // <space> +// 6700, // L +// 2900, // A (using 𐂅 altGlyph) +// 0, // 𐂅 high surrogate pair +// 2900, // 𐂅 low surrogate pair +// 10000, // A +// ]; +// +// var expectedKerning = [ +// 0, // A +// 0, // BC [0] +// 0, // BC [1] +// 0, // B +// 0, // D +// 200, // A +// 0, // EE [0] +// 0, // EE [1] +// 0, // U+0046 [0] +// 0, // U+0046 [1] +// 0, // U+0046 [2] +// 0, // U+0046 [3] +// 0, // U+0046 [4] +// 0, // U+0046 [5] +// 0, // U+0046 [0] +// 0, // U+0046 [1] +// 0, // U+0046 [2] +// 0, // U+0046 [3] +// 0, // U+0046 [4] +// 0, // U+0046 [5] +// 200, // G +// 0, // G +// 0, // H +// 0, // I +// 0, // I (zh) +// -4700, // J +// 0, // A +// 0, // K +// 0, // <space> +// 0, // L +// 0, // A (using 𐂅 altGlyph) +// 0, // 𐂅 high surrogate pair +// 0, // 𐂅 low surrogate pair +// 0, // A +// ]; +// +// assertEquals(t.getNumberOfChars(), expectedAdvances.length, 'SVGSVGTextElement.getNumberOfChars() incorrect'); +// +// var expectedPositions = [0]; +// for (var i = 0; i < expectedAdvances.length; i++) +// expectedPositions.push(expectedPositions[i] + expectedAdvances[i] + expectedKerning[i]); +// +// var actualPositions = []; +// for (var i = 0; i < t.getNumberOfChars(); i++) +// actualPositions.push(t.getStartPositionOfChar(i).x); +// actualPositions.push(t.getEndPositionOfChar(t.getNumberOfChars() - 1).x); +// +// for (var i = 0; i < expectedPositions.length; i++) { +// if (expectedPositions[i] != actualPositions[i]) { +// var s = "character position " + i + ", which is "; +// if (i == 0) { +// s += "before " + characterDescriptions[0]; +// } else if (i == expectedPositions.length - 1) { +// s += "after " + characterDescriptions[characterDescriptions.length - 1]; +// } else { +// s += "between " + characterDescriptions[i - 1] + " and " + characterDescriptions[i]; +// } +// s += ", is " + actualPositions[i] + " but should be " + expectedPositions[i] + "."; +// fail(s); +// } +// } + return 5; + }, + function () { + // test 80: remove the iframes and the object + // (when fixing the test for http://dbaron.org/mozilla/visited-privacy, + // this section was flipped around so the linktest check is done first; + // this is to prevent the 'retry' from failing the second time since by + // then the kungFuDeathGrip has been nullified, if we do it first) + // first, check that the linktest is loaded + var a = document.links[1]; + assert(!(a == null), "linktest was null"); + assert(a.textContent == "YOU SHOULD NOT SEE THIS AT ALL", "linktest link couldn't be found"); // changed text when fixing http://dbaron.org/mozilla/visited-privacy + if (a.hasAttribute('class')) + return "retry"; // linktest onload didn't fire -- could be a networking issue, check that first + assert(!(kungFuDeathGrip == null), "kungFuDeathGrip was null"); + assert(!(kungFuDeathGrip.parentNode == null), "kungFuDeathGrip.parentNode was null"); + // ok, now remove the iframes + kungFuDeathGrip.parentNode.removeChild(kungFuDeathGrip); + kungFuDeathGrip = null; + // check that the xhtml files worked right + assert(notifications['xhtml.1'], "Script in XHTML didn't execute"); + assert(!notifications['xhtml.2'], "XML well-formedness error didn't stop script from executing"); + assert(!notifications['xhtml.3'], "Script executed despite having wrong namespace"); + return 5; + }, + + // bucket 6: ECMAScript + function () { + // test 81: length of arrays with elisions at end + var t1 = [,]; + var t2 = [,,]; + assertEquals(t1.length, 1, "[,] doesn't have length 1"); + assertEquals(t2.length, 2, "[,,] doesn't have length 2"); + return 6; + }, + function () { + // test 82: length of arrays with elisions in the middle + var t3 = ['a', , 'c']; + assertEquals(t3.length, 3, "['a',,'c'] doesn't have length 3"); + assert(0 in t3, "no 0 in t3"); + assert(!(1 in t3), "unexpected 1 in t3"); + assert(2 in t3, "no 2 in t3"); + assertEquals(t3[0], 'a', "t3[0] wrong"); + assertEquals(t3[2], 'c', "t3[2] wrong"); + return 6; + }, + function () { + // test 83: array methods + var x = ['a', 'b', 'c']; + assertEquals(x.unshift('A', 'B', 'C'), 6, "array.unshift() returned the wrong value"); + var s = x.join(undefined); + assertEquals(s, 'A,B,C,a,b,c', "array.join(undefined) used wrong separator"); // qv 15.4.4.5:3 + return 6; + }, + function () { + // test 84: converting numbers to strings + assertEquals((0.0).toFixed(4), "0.0000", "toFixed(4) wrong for 0"); + assertEquals((-0.0).toFixed(4), "0.0000", "toFixed(4) wrong for -0"); + assertEquals((0.00006).toFixed(4), "0.0001", "toFixed(4) wrong for 0.00006"); + assertEquals((-0.00006).toFixed(4), "-0.0001", "toFixed(4) wrong for -0.00006"); + assertEquals((0.0).toExponential(4), "0.0000e+0", "toExponential(4) wrong for 0"); + assertEquals((-0.0).toExponential(4), "0.0000e+0", "toExponential(4) wrong for -0"); + var x = 7e-4; + assertEquals(x.toPrecision(undefined), x.toString(undefined), "toPrecision(undefined) was wrong"); + return 6; + }, + function () { + // test 85: strings and string-related operations + // substr() and negative numbers + assertEquals("scathing".substr(-7, 3), "cat", "substr() wrong with negative numbers"); + return 6; + }, + function () { + // test 86: Date tests -- methods passed no arguments + var d = new Date(); + assert(isNaN(d.setMilliseconds()), "calling setMilliseconds() with no arguments didn't result in NaN"); + assert(isNaN(d), "date wasn't made NaN"); + assert(isNaN(d.getDay()), "date wasn't made NaN"); + return 6; + }, + function () { + // test 87: Date tests -- years + var d1 = new Date(Date.UTC(99.9, 6)); + assertEquals(d1.getUTCFullYear(), 1999, "Date.UTC() didn't do proper 1900 year offsetting"); + var d2 = new Date(98.9, 6); + assertEquals(d2.getFullYear(), 1998, "new Date() didn't do proper 1900 year offsetting"); + return 6; + }, + function () { + // test 88: ES3 section 7.6:3 (unicode escapes can't be used to put non-identifier characters into identifiers) + // and there's no other place for them in the syntax (other than strings, of course) + var ok = false; + try { + eval("var test = { };\ntest.i= 0;\ntest.i\\u002b= 1;\ntest.i;\n"); + } catch (e) { + ok = true; + } + assert(ok, "\\u002b was not considered a parse error in script"); + return 6; + }, + function () { + // test 89: Regular Expressions + var ok = true; + // empty classes in regexps + try { + eval("/TA[])]/.exec('TA]')"); + // JS regexps aren't like Perl regexps, if their character + // classes start with a ] that means they're empty. So this + // is a syntax error; if we get here it's a bug. + ok = false; + } catch (e) { } + assert(ok, "orphaned bracket not considered parse error in regular expression literal"); + try { + if (eval("/[]/.exec('')")) + ok = false; + } catch (e) { + ok = false; + } + assert(ok, "/[]/ either failed to parse or matched something"); + return 6; + }, + function () { + // test 90: Regular Expressions + // not back references. + assert(!(/(1)\0(2)/.test("12")), "NUL in regexp incorrectly ignored"); + assert((/(1)\0(2)/.test("1" + "\0" + "2")), "NUL in regexp didn't match correctly"); + assert(!(/(1)\0(2)/.test("1\02")), "octal 2 unexpectedly matched NUL"); + assertEquals(nullInRegexpArgumentResult, "passed", "failed //.test() check"); // nothing to see here, move along now + // back reference to future capture + var x = /(\3)(\1)(a)/.exec('cat'); // the \3 matches the empty string, qv. ES3:15.10.2.9 + assert(x, "/(\\3)(\\1)(a)/ failed to match 'cat'"); + assertEquals(x.length, 4, "/(\\3)(\\1)(a)/ failed to return four components"); + assertEquals(x[0], "a", "/(\\3)(\\1)(a)/ failed to find 'a' in 'cat'"); + assert(x[1] === "", "/(\\3)(\\1)(a)/ failed to find '' in 'cat' as first part"); + assert(x[2] === "", "/(\\3)(\\1)(a)/ failed to find '' in 'cat' as second part"); + assertEquals(x[3], "a", "/(\\3)(\\1)(a)/ failed to find 'a' in 'cat' as third part"); + // negative lookahead + x = /(?!(text))(te.t)/.exec("text testing"); + assertEquals(x.length, 3, "negative lookahead test failed to return the right number of bits"); + assertEquals(x[0], "test", "negative lookahead test failed to find the right text"); + assert(x[1] === undefined, "negative lookahead test failed to return undefined for negative lookahead capture"); + assert(x[2] === "test", "negative lookahead test failed to find the right second capture"); + return 6; + }, + function () { + // test 91: check that properties are enumerable by default + var test = { + constructor: function() { return 1; }, + toString: function() { return 2; }, + toLocaleString: function() { return 3; }, + valueOf: function() { return 4; }, + hasOwnProperty: function() { return 5; }, + isPrototypeOf: function() { return 6; }, + propertyIsEnumerable: function() { return 7; }, + prototype: function() { return 8; }, + length: function() { return 9; }, + unique: function() { return 10; } + }; + var results = []; + for (var property in test) + results.push([test[property](), property]); + results.sort(function(a, b) { + if (a[0] < b[0]) return -1; + if (a[0] > b[0]) return 1; + return 0; + }); + assertEquals(results.length, 10, "missing properties"); + for (var index = 0; index < 10; index += 1) + assertEquals(results[index][0], index+1, "order wrong at results["+index+"] == "); + var index = 0; + assertEquals(results[index++][1], "constructor", "failed to find constructor in expected position"); + assertEquals(results[index++][1], "toString", "failed to find toString in expected position"); + assertEquals(results[index++][1], "toLocaleString", "failed to find toLocaleString in expected position"); + assertEquals(results[index++][1], "valueOf", "failed to find valueOf in expected position"); + assertEquals(results[index++][1], "hasOwnProperty", "failed to find hasOwnProperty in expected position"); + assertEquals(results[index++][1], "isPrototypeOf", "failed to find isPrototypeOf in expected position"); + assertEquals(results[index++][1], "propertyIsEnumerable", "failed to find propertyIsEnumerable in expected position"); + assertEquals(results[index++][1], "prototype", "failed to find prototype in expected position"); + assertEquals(results[index++][1], "length", "failed to find length in expected position"); + assertEquals(results[index++][1], "unique", "failed to find unique in expected position"); + return 6; + }, + function () { + // test 92: internal properties of Function objects + // constructor is not ReadOnly + var f1 = function () { 1 }; + f1.prototype.constructor = "hello world"; + var f1i = new f1(); + assert(f1i.constructor === "hello world", "Function object's prototype's constructor was ReadOnly"); + // constructor is DontEnum (indeed, no properties at all on a new Function object) + var f2 = function () { 2 }; + var f2i = new f2(); + var count = 0; + for (var property in f2i) { + assert(property != "constructor", "Function object's prototype's constructor was not DontEnum"); + count += 1; + } + assertEquals(count, 0, "Function object had unexpected properties"); + // constructor is not DontDelete + var f3 = function (a, b) { 3 }; + delete f3.prototype.constructor; + var f3i = new f3(); + assertEquals(f3i.constructor, Object.prototype.constructor, "Function object's prototype's constructor was DontDelete (or got magically replaced)"); + return 6; + }, + function () { + // test 93: FunctionExpression semantics + var functest; + var vartest = 0; + var value = (function functest(arg) { + if (arg) + return 1; + vartest = 1; + functest = function (arg) { return 2; }; // this line does nothing as 'functest' is ReadOnly here + return functest(true); // this is therefore tail recursion and returns 1 + })(false); + assertEquals(vartest, 1, "rules in 10.1.4 not followed in FunctionBody"); + assertEquals(value, 1, "semantics of FunctionExpression: function Identifier ... not followed"); + assert(!functest, "Property in step 4 of FunctionExpression: function Identifier ... leaked to parent scope"); + return 6; + }, + function () { + // test 94: exception scope + var test = 'pass'; + try { + throw 'fail'; + } catch (test) { + test += 'ing'; + } + assertEquals(test, 'pass', 'outer scope poisoned by exception catch{} block'); + return 6; + }, + function () { + // test 95: types of expressions + var a = []; var s; + s = a.length = "2147483648"; + assertEquals(typeof s, "string", "type of |\"2147483648\"| is not string"); + return 6; + }, + function () { + // test 96: encodeURI() and encodeURIComponent() and null bytes + assertEquals(encodeURIComponent(String.fromCharCode(0)), '%00', "encodeURIComponent failed to encode U+0000"); + assertEquals(encodeURI(String.fromCharCode(0)), '%00', "encodeURI failed to encode U+0000"); + return 6; + }, + + // URIs + function () { + // test 97: data: URI parsing + assertEquals(d1, "one", "data: failed as escaped"); + assertEquals(d2, "two", "data: failed as base64"); + assertEquals(d3, "three", "data: failed as base64 escaped"); + assertEquals(d4, "four", "data: failed as base64 with spaces"); + assertEquals(d5, "five's", "data: failed with backslash"); + return 7; + }, + + // XHTML + function () { + // test 98: XHTML and the DOM + // (special test) + var doctype = document.implementation.createDocumentType("html", "-//W3C//DTD XHTML 1.0 Strict//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"); +// COMMENTED OUT FOR 2011 UPDATE - doctypes are moving towards having an owner, like other nodes +// assertEquals(doctype.ownerDocument, null, "doctype's ownerDocument was wrong after creation"); + var doc = document.implementation.createDocument("http://www.w3.org/1999/xhtml", "html", doctype); + doc.documentElement.appendChild(doc.createElementNS("http://www.w3.org/1999/xhtml", "head")); + doc.documentElement.appendChild(doc.createElementNS("http://www.w3.org/1999/xhtml", "body")); + var t = doc.createElementNS("http://www.w3.org/1999/xhtml", "title"); + doc.documentElement.firstChild.appendChild(t); + // ok we have a conforming XHTML1 doc in |doc| now. + assertEquals(doctype.ownerDocument, doc, "doctype's ownerDocument didn't change when it was assigned to another document"); + assertEquals(doc.title, "", "document had unexpected title"); + t.textContent = "Sparrow"; + assertEquals(doc.title, "Sparrow", "document.title did not update dynamically"); + doc.body.appendChild(doc.createElementNS("http://www.w3.org/1999/xhtml", "form")); + assertEquals(doc.forms.length, 1, "document.forms not updated after inserting a form"); + return 7; + }, + + // Sanity + function () { + // test 99: check for the weirdest bug ever + var a = document.createElement('a'); + a.setAttribute('href', 'http://www.example.com/'); + a.appendChild(document.createTextNode('www.example.com')); + a.href = 'http://hixie.ch/'; + assertEquals(a.firstChild.data, "www.example.com", "sanity did not prevail"); + a.href = 'http://damowmow.com/'; + assertEquals(a.firstChild.data, "www.example.com", "final test failed"); + return 7; + } + + ]; + var log = ''; + var delay = 10; + var score = 0, index = 0, retry = 0, errors = 0; + function update() { + var span = document.getElementById('score'); // not cached by JS + span.nextSibling.removeAttribute('class'); // no-op after first loop + span.nextSibling.nextSibling.firstChild.data = tests.length; // no-op after first loop + if (index < tests.length) { + var zeroPaddedIndex = index < 10 ? '0' + index : index; + try { + var beforeTest = new Date(); + var result = tests[index](); + var elapsedTest = new Date() - beforeTest; + if (result == "retry") { + // some tests uses this magical mechanism to wait for support files to load + // we will give this test 500 attempts (5000ms) before aborting + retry += 1; + if (retry < 500) { + setTimeout(update, delay); + return; + } + fail("timeout -- could be a networking issue"); + } else if (result) { + var bucket = document.getElementById('bucket' + result); + if (bucket) + bucket.className += 'P'; + score += 1; + if (retry > 0) { + errors += 1; + log += "Test " + zeroPaddedIndex + " passed, but took " + retry + " attempts (less than perfect).\n"; + } else if (elapsedTest > 33) { // 30fps + errors += 1; + log += "Test " + zeroPaddedIndex + " passed, but took " + elapsedTest + "ms (less than 30fps)\n"; + } + } else { + fail("no error message"); + } + } catch (e) { + var s; + if (e.message) + s = e.message.replace(/\s+$/, ""); + else + s = e; + errors += 1; + log += "Test " + zeroPaddedIndex + " failed: " + s + "\n"; + }; + retry = 0; + index += 1; + span.firstChild.data = score; + setTimeout(update, delay); + } else { + var endTime = new Date(); + var elapsedTime = ((endTime - startTime) - (delay * tests.length)) / 1000; + log += "Total elapsed time: " + elapsedTime.toFixed(2) + "s"; + if (errors == 0) + log += "\nNo JS errors and no timing issues.\nWas the rendering pixel-for-pixel perfect too?"; + document.documentElement.classList.remove("reftest-wait"); + } + } + function report(event) { + // for debugging either click the "A" in "Acid3" (to get an alert) or shift-click it (to get a report) + if (event.shiftKey) { + var w = window.open(); + w.document.write('<pre>Failed ' + (tests.length - score) + ' of ' + tests.length + ' tests.\n' + + log.replace(/&/g,'&').replace(RegExp('<', 'g'), '<').replace('\0', '\\0') + + '<\/pre>'); + w.document.close(); + } else { + alert('Failed ' + (tests.length - score) + ' test' + (score == 1 ? '' : 's') + '.\n' + log) + } + } + </script> + <body onload="update() /* this attribute's value is tested in one of the tests */ "> + <h1 onclick="report(event)">Acid3</h1> + <div class="buckets" + ><p id="bucket1" class="z"></p + ><p id="bucket2" class="z"></p + ><p id="bucket3" class="z"></p + ><p id="bucket4" class="z"></p + ><p id="bucket5" class="z"></p + ><p id="bucket6" class="z"></p> + </div> + <p id="result"><span id="score">JS</span><span id="slash" class="hidden">/</span><span>?</span></p> + <!-- The following line is used in a number of the tests. It is done using document.write() to sidestep complaints of validity. --> + <script type="text/javascript">document.write('<map name=""><area href="" shape="rect" coords="2,2,4,4" alt="<\'>"><iframe src="empty.png">FAIL<\/iframe><iframe src="empty.txt">FAIL<\/iframe><iframe src="empty.html" id="selectors"><\/iframe><form action="" name="form"><input type=HIDDEN><\/form><table><tr><td><p><\/tbody> <\/table><\/map>');</script> + <p id="instructions">To pass the test,<span></span> a browser must use its default settings, the animation has to be smooth, the score has to end on 100/100, and the final page has to look exactly, pixel for pixel, like <a href="reference.sub.html">this reference rendering</a>.</p> + <p id="remove-last-child-test">Scripting must be enabled to use this test.</p> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/acid/acid3/xhtml.1 b/tests/wpt/web-platform-tests/acid/acid3/xhtml.1 new file mode 100755 index 00000000000..8daafce8cd2 --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/xhtml.1 @@ -0,0 +1,11 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <title>Test</title> + </head> + <body> + <p> <strong> XHTML Test </strong> </p> + <script type="text/javascript"> + parent.notify("xhtml.1") + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/acid/acid3/xhtml.1.headers b/tests/wpt/web-platform-tests/acid/acid3/xhtml.1.headers new file mode 100644 index 00000000000..f203c6368ef --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/xhtml.1.headers @@ -0,0 +1 @@ +Content-Type: text/xml diff --git a/tests/wpt/web-platform-tests/acid/acid3/xhtml.2 b/tests/wpt/web-platform-tests/acid/acid3/xhtml.2 new file mode 100755 index 00000000000..c7af4f1c27f --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/xhtml.2 @@ -0,0 +1,11 @@ +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <title>Test</title> + </head> + <body> + <p> <strong/> Parsing Test </strong> </p> + <script type="text/javascript"> + parent.notify("xhtml.2") + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/acid/acid3/xhtml.2.headers b/tests/wpt/web-platform-tests/acid/acid3/xhtml.2.headers new file mode 100644 index 00000000000..f203c6368ef --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/xhtml.2.headers @@ -0,0 +1 @@ +Content-Type: text/xml diff --git a/tests/wpt/web-platform-tests/acid/acid3/xhtml.3 b/tests/wpt/web-platform-tests/acid/acid3/xhtml.3 new file mode 100755 index 00000000000..8cd8db73608 --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/xhtml.3 @@ -0,0 +1,11 @@ +<html xmlns="http://www.w3.org/1999/xhtml#"> + <head> + <title>Test</title> + </head> + <body> + <p> <strong> Namespace Test </strong> </p> + <script type="text/javascript"> + parent.notify("xhtml.3") + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/acid/acid3/xhtml.3.headers b/tests/wpt/web-platform-tests/acid/acid3/xhtml.3.headers new file mode 100644 index 00000000000..f203c6368ef --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/xhtml.3.headers @@ -0,0 +1 @@ +Content-Type: text/xml diff --git a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_insecure_context.html b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_insecure_context.html index de900e04894..9a7c91492b5 100644 --- a/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_insecure_context.html +++ b/tests/wpt/web-platform-tests/ambient-light/AmbientLightSensor_insecure_context.html @@ -15,6 +15,6 @@ </ol> <script> -runGenericSensorInsecureContext(AmbientLightSensor); +runGenericSensorInsecureContext("AmbientLightSensor"); </script> diff --git a/tests/wpt/web-platform-tests/ambient-light/idlharness.https.html b/tests/wpt/web-platform-tests/ambient-light/idlharness.https.html index cf43d5476e2..46b019cd182 100644 --- a/tests/wpt/web-platform-tests/ambient-light/idlharness.https.html +++ b/tests/wpt/web-platform-tests/ambient-light/idlharness.https.html @@ -8,47 +8,30 @@ <script src="/resources/testharnessreport.js"></script> <script src="/resources/WebIDLParser.js"></script> <script src="/resources/idlharness.js"></script> -<div id="log"></div> - -<script id="idl" type="text/plain"> -interface EventTarget { -}; - -interface EventHandler { -}; -</script> - -<script id="ambient-light-idl" type="text/plain"> -// The interface of Sensor is defined in -// https://www.w3.org/TR/generic-sensor/#idl-index -[SecureContext, Exposed=Window] -interface Sensor : EventTarget { - readonly attribute boolean activated; - readonly attribute DOMHighResTimeStamp? timestamp; - void start(); - void stop(); - attribute EventHandler onreading; - attribute EventHandler onactivate; - attribute EventHandler onerror; -}; - -[Constructor(optional SensorOptions sensorOptions), Exposed=Window] -interface AmbientLightSensor : Sensor { - readonly attribute unrestricted double? illuminance; -}; -</script> - <script> -(() => { - "use strict"; - let idl_array = new IdlArray(); - idl_array.add_untested_idls(document.getElementById('idl').textContent); - idl_array.add_idls(document.getElementById('ambient-light-idl').textContent); +"use strict"; +function doTest([dom, generic_sensor, ambient_light]) { + const idl_array = new IdlArray(); + idl_array.add_untested_idls(dom); + idl_array.add_untested_idls('interface EventHandler {};'); + idl_array.add_idls(generic_sensor, { only: ['Sensor'] }); + idl_array.add_idls(ambient_light); idl_array.add_objects({ - AmbientLightSensor: ['new AmbientLightSensor();'] + AmbientLightSensor: ['new AmbientLightSensor()'] }); - idl_array.test(); -})(); +} + +function fetchText(url) { + return fetch(url).then((response) => response.text()); +} + +promise_test(() => { + return Promise.all([ + "/interfaces/dom.idl", + "/interfaces/generic-sensor.idl", + "/interfaces/ambient-light.idl", + ].map(fetchText)).then(doTest); +}, "Test driver"); </script> diff --git a/tests/wpt/web-platform-tests/background-fetch/mixed-content-and-allowed-schemes.https.window.js b/tests/wpt/web-platform-tests/background-fetch/mixed-content-and-allowed-schemes.https.window.js index 50614a3565b..f9ebafcbbf4 100644 --- a/tests/wpt/web-platform-tests/background-fetch/mixed-content-and-allowed-schemes.https.window.js +++ b/tests/wpt/web-platform-tests/background-fetch/mixed-content-and-allowed-schemes.https.window.js @@ -26,10 +26,9 @@ backgroundFetchTest((t, bgFetch) => { return bgFetch.fetch(uniqueTag(), 'http://[::1]'); }, 'loopback IPv6 http: fetch should register ok'); -// http://localhost is not tested here since the correct behavior from -// https://w3c.github.io/webappsec-secure-contexts/#is-origin-trustworthy -// depends on whether the UA conforms to the name resolution rules in -// https://tools.ietf.org/html/draft-west-let-localhost-be-localhost +backgroundFetchTest((t, bgFetch) => { + return bgFetch.fetch(uniqueTag(), 'http://localhost'); +}, 'localhost http: fetch should register ok'); backgroundFetchTest((t, bgFetch) => { return promise_rejects(t, new TypeError(), diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/allowed.css b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/allowed.css deleted file mode 100644 index ace54348973..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/allowed.css +++ /dev/null @@ -1,3 +0,0 @@ -#test { - color: green; -} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/base-uri-allow.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/base-uri-allow.sub.html deleted file mode 100644 index 14377740736..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/base-uri-allow.sub.html +++ /dev/null @@ -1,36 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>base-uri-allow</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["TEST COMPLETE"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -base-uri http://www1.{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline' http://www1.{{host}}:{{ports[http][0]}}; connect-src 'self'; ---> - <base href="http://www1.{{host}}:{{ports[http][0]}}/"> - <script> - test(function() { - if ('{{ports[http][0]}}' == '80' || - '{{ports[http][0]}}' == '443') { - assert_equals(document.baseURI, 'http://www1.{{host}}/'); - } else { - assert_equals(document.baseURI, 'http://www1.{{host}}' + ':{{ports[http][0]}}/'); - } - - log("TEST COMPLETE") - }); - - </script> -</head> - -<body> - <p>Check that base URIs can be set if they do not violate the page's policy.</p> - <div id="log"></div> - <script async defer src="./content-security-policy/support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/base-uri-allow.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/base-uri-allow.sub.html.sub.headers deleted file mode 100644 index e749d723890..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/base-uri-allow.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: base-uri-allow={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: base-uri http://www1.{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline' http://www1.{{host}}:{{ports[http][0]}}; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/base-uri-deny.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/base-uri-deny.sub.html deleted file mode 100644 index f2b7c591e95..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/base-uri-deny.sub.html +++ /dev/null @@ -1,33 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>base-uri-deny</title> - <base href="http://www1.{{host}}:{{ports[http][0]}}/"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS document.baseURI is document.location.href","TEST COMPLETE"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -base-uri 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> - <script> - var base = document.createElement('base'); - base.href = 'http://www1.{{host}}:{{ports[http][0]}}/'; - document.head.appendChild(base); - if (document.baseURI == document.location.href) { - log("PASS document.baseURI is document.location.href"); - log("TEST COMPLETE"); - } - - </script> -</head> - -<body> - <p>Check that base URIs cannot be set if they violate the page's policy.</p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=base-uri%20'self'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/base-uri-deny.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/base-uri-deny.sub.html.sub.headers deleted file mode 100644 index 0312c46d07c..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/base-uri-deny.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: base-uri-deny={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: base-uri 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-allowed.sub.html deleted file mode 100644 index 19cf6811c57..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-allowed.sub.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>form-action-src-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS","TEST COMPLETE"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -form-action 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> - <script> - window.addEventListener("message", function(event) { - log(event.data); - }, false); - window.addEventListener('load', function() { - setTimeout(function() { - document.getElementById('submit').click(); - log("TEST COMPLETE"); - }, 0); - }); - - </script> -</head> - -<body> - <iframe name="test_target" id="test_iframe"></iframe> - - <form action="/common/redirect.py?location=/content-security-policy/blink-contrib/resources/postmessage-pass.html" id="theform" method="post" target="test_target"> - <input type="text" name="fieldname" value="fieldvalue"> - <input type="submit" id="submit" value="submit"> - </form> - <p>Tests that allowed form actions work correctly.</p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> - </body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-allowed.sub.html.sub.headers deleted file mode 100644 index 88cbfda0ef0..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: form-action-src-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: form-action 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-blocked.sub.html deleted file mode 100644 index 0960a8a02f2..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-blocked.sub.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>form-action-src-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["TEST COMPLETE"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -form-action 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> - <script> - window.addEventListener("message", function(event) { - alert_assert(event.data); - }, false); - window.addEventListener('load', function() { - setTimeout(function() { - document.getElementById('submit').click(); - }, 0); - }); - setTimeout(function() {log("TEST COMPLETE");}, 1); - - </script> -</head> - -<body> - <iframe name="test_target" id="test_iframe"></iframe> - <form action="/common/redirect.py?location=/content-security-policy/blink-contrib/resources/postmessage-fail.html" id="theform" method="post" target="test_target"> - <input type="text" name="fieldname" value="fieldvalue"> - <input type="submit" id="submit" value="submit"> - </form> - <p>Tests that blocking form actions works correctly.</p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=form-action%20'none'"></script> - - </body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-blocked.sub.html.sub.headers deleted file mode 100644 index 29351c00843..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: form-action-src-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: form-action 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-default-ignored.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-default-ignored.sub.html deleted file mode 100644 index 32823d6806f..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-default-ignored.sub.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>form-action-src-default-ignored</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS","TEST COMPLETE"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -default-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; frame-src 'self'; ---> - <script> - window.addEventListener("message", function(event) { - log(event.data); - }, false); - window.addEventListener('load', function() { - setTimeout(function() { - document.getElementById('submit').click(); - log("TEST COMPLETE"); - }, 0); - }); - - </script> -</head> - -<body> - <iframe name="test_target" id="test_iframe"></iframe> - - <form action="/common/redirect.py?location=/content-security-policy/blink-contrib/resources/postmessage-pass.html" id="theform" method="post" target="test_target"> - <input type="text" name="fieldname" value="fieldvalue"> - <input type="submit" id="submit" value="submit"> - </form> - <p>Tests that default-src does not cascade to form-action.</p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-default-ignored.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-default-ignored.sub.html.sub.headers deleted file mode 100644 index 1abbcf50c40..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-default-ignored.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: form-action-src-default-ignored={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: default-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; style-src 'self'; frame-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-get-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-get-allowed.sub.html deleted file mode 100644 index a7d3e584b83..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-get-allowed.sub.html +++ /dev/null @@ -1,42 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>form-action-src-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS","TEST COMPLETE"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -form-action 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> - <script> - window.addEventListener("message", function(event) { - log(event.data); - }, false); - window.addEventListener('load', function() { - setTimeout(function() { - document.getElementById('submit').click(); - log("TEST COMPLETE"); - }, 0); - }); - - </script> -</head> - -<body> - <iframe name="test_target" id="test_iframe"></iframe> - - <form action="/common/redirect.py" id="theform" method="get" target="test_target"> - <input type="text" name="location" value="/content-security-policy/blink-contrib/resources/postmessage-pass.html"> - <input type="text" name="fieldname" value="fieldvalue"> - <input type="submit" id="submit" value="submit"> - </form> - <p>Tests that allowed form actions work correctly - with GET and a redirect.</p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> - </body> - -</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-get-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-get-allowed.sub.html.sub.headers deleted file mode 100644 index ac8761518c8..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-get-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: form-action-src-get-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: form-action 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-get-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-get-blocked.sub.html deleted file mode 100644 index 0910eb41964..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-get-blocked.sub.html +++ /dev/null @@ -1,43 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>form-action-src-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["TEST COMPLETE"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -form-action 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> - <script> - window.addEventListener("message", function(event) { - alert_assert(event.data); - }, false); - window.addEventListener('load', function() { - setTimeout(function() { - document.getElementById('submit').click(); - log("TEST COMPLETE"); - }, 0); - }); - - </script> -</head> - -<body> - <iframe name="test_target" id="test_iframe"></iframe> - - <form action="/common/redirect.py" id="theform" method="get" target="test_target"> - <input type="text" name="location" value="/content-security-policy/blink-contrib/resources/postmessage-fail.html"> - <input type="text" name="fieldname" value="fieldvalue"> - <input type="submit" id="submit" value="submit"> - </form> - <p>Tests that disallowed form actions are blocked - with GET and redirects.</p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=form-action%20'none' -"></script> - </body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-get-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-get-blocked.sub.html.sub.headers deleted file mode 100644 index e7a044dbcca..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-get-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: form-action-src-get-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: form-action 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-javascript-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-javascript-blocked.sub.html deleted file mode 100644 index c362ea6fdc3..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-javascript-blocked.sub.html +++ /dev/null @@ -1,34 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>form-action-src-javascript-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["TEST COMPLETE"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -form-action 'none'; script-src 'self' 'nonce-noncynonce'; connect-src 'self'; ---> - <script nonce='noncynonce'> - window.addEventListener('load', function() { - setTimeout(function() { - document.getElementById('submit').click(); - log("TEST COMPLETE"); - }, 0); - }); - </script> -</head> - -<body> - <form action="javascript:alert_assert("FAIL!")" id="theform" method="post"> - <input type="text" name="fieldname" value="fieldvalue"> - <input type="submit" id="submit" value="submit"> - </form> - <p>Tests that blocking form actions works correctly. If this test passes, a CSP violation will be generated, and will not see a JavaScript alert.</p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-javascript-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-javascript-blocked.sub.html.sub.headers deleted file mode 100644 index ffa2288c051..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-javascript-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: form-action-src-javascript-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: form-action 'none'; script-src 'self' 'nonce-noncynonce'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-redirect-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-redirect-blocked.sub.html deleted file mode 100644 index e311817eb59..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-redirect-blocked.sub.html +++ /dev/null @@ -1,41 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>form-action-src-redirect-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["TEST COMPLETE"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -form-action 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> - <script> - window.addEventListener("message", function(event) { - alert_assert(event.data); - }, false); - window.addEventListener('load', function() { - setTimeout(function() { - document.getElementById('submit').click(); - log("TEST COMPLETE"); - }, 0); - }); - setTimeout(function() {}, 1000); - - </script> -</head> - -<body> - <iframe name="test_target" id="test_iframe"></iframe> - - <form id="form1" action="/common/redirect.py?location=http://www1.{{host}}:{{ports[http][0]}}/content-security-policy/blink-contrib/resources/postmessage-fail.html" method="post" target="test_target"> - <input type="text" name="fieldname" value="fieldvalue"> - <input type="submit" id="submit" value="submit"> - </form> - <p>Tests that blocking a POST form with a redirect works correctly. If this test passes, a CSP violation will be generated.</p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=form-action%20'self'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-redirect-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-redirect-blocked.sub.html.sub.headers deleted file mode 100644 index ee767f4a77c..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/form-action-src-redirect-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: form-action-src-redirect-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: form-action 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/meta-outside-head.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/meta-outside-head.sub.html deleted file mode 100644 index 41618d4ef77..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/meta-outside-head.sub.html +++ /dev/null @@ -1,27 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>meta-outside-head</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["PASS (1/1)"]'></script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'none'; connect-src 'self'; ---> -</head> - -<body> - <meta http-equiv="Content-Security-Policy" content="script-src 'self'"> - <p>This test checks that Content Security Policy delivered via a meta element is not enforced if the element is outside the document's head.</p> - <script> - var aa = "PASS (1/1)"; - </script> - <script src="metaHelper.js"></script> - <div id="log"></div> - <script src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/meta-outside-head.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/meta-outside-head.sub.html.sub.headers deleted file mode 100644 index 3cd33519216..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/meta-outside-head.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: meta-outside-head={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: script-src 'self' 'unsafe-inline' 'none'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-mismatched-data.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-mismatched-data.sub.html deleted file mode 100644 index fe3f95878d2..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-mismatched-data.sub.html +++ /dev/null @@ -1,24 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>plugintypes-mismatched-data</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -plugin-types application/x-invalid-type; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> - -</head> - -<body> - This tests that plugin content that doesn't match the declared type doesn't load, even if the document's CSP would allow it. This test passes if "FAIL!" isn't logged. - <object type="application/x-invalid-type" data="data:application/x-webkit-test-netscape,logifloaded" log="FAIL!"></object> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-mismatched-data.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-mismatched-data.sub.html.sub.headers deleted file mode 100644 index 4e5b31b2a6b..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-mismatched-data.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: plugintypes-mismatched-data={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: plugin-types application/x-invalid-type; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-mismatched-url.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-mismatched-url.sub.html deleted file mode 100644 index bc60994ad3a..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-mismatched-url.sub.html +++ /dev/null @@ -1,24 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>plugintypes-mismatched-url</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -plugin-types application/x-invalid-type; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> - -</head> - -<body> - This tests that plugin content that doesn't match the declared type doesn't load, even if the document's CSP would allow it. This test passes if no iframe is dumped (meaning that no PluginDocument was created). - <object type="application/x-invalid-type" data="/plugins/resources/mock-plugin.pl" log="FAIL!"></object> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-mismatched-url.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-mismatched-url.sub.html.sub.headers deleted file mode 100644 index 38a7450ab72..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-mismatched-url.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: plugintypes-mismatched-url={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: plugin-types application/x-invalid-type; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-notype-data.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-notype-data.sub.html deleted file mode 100644 index eb60d5d4cff..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-notype-data.sub.html +++ /dev/null @@ -1,23 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>plugintypes-notype-data</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS: object tag onerror handler fired"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -plugin-types application/x-invalid-type; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - Given a `plugin-types` directive, plugins have to declare a type explicitly. No declared type, no load. This test passes if there's a CSP report and "FAIL!" isn't logged. - <object data="data:application/x-webkit-test-netscape" onload="log('FAIL');" onerror="log('PASS: object tag onerror handler fired');"></object> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=plugin-types+application/x-invalid-type"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-notype-data.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-notype-data.sub.html.sub.headers deleted file mode 100644 index ea938378afc..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-notype-data.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: plugintypes-notype-data={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: plugin-types application/x-invalid-type; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-notype-url.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-notype-url.sub.html deleted file mode 100644 index e9918941fd3..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-notype-url.sub.html +++ /dev/null @@ -1,24 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>plugintypes-notype-url</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -plugin-types application/x-invalid-type; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> - -</head> - -<body> - Given a `plugin-types` directive, plugins have to declare a type explicitly. No declared type, no load. This test passes if there's an error report is sent. - <object data="/plugins/resources/mock-plugin.pl" log="FAIL!"></object> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=plugin-types%20application/x-invalid-type"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-notype-url.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-notype-url.sub.html.sub.headers deleted file mode 100644 index ffe26cdf169..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-notype-url.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: plugintypes-notype-url={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: plugin-types application/x-invalid-type; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-nourl-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-nourl-allowed.sub.html deleted file mode 100644 index 222d6500d1b..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-nourl-allowed.sub.html +++ /dev/null @@ -1,23 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>plugintypes-nourl-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -plugin-types application/x-webkit-test-netscape; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - This test passes if there isn't a CSP violation sayingthe plugin was blocked. - <object type="application/x-webkit-test-netscape"></object> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-nourl-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-nourl-allowed.sub.html.sub.headers deleted file mode 100644 index 7fef2a5b560..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-nourl-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: plugintypes-nourl-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: plugin-types application/x-webkit-test-netscape; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-nourl-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-nourl-blocked.sub.html deleted file mode 100644 index b5cc5a5a40f..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-nourl-blocked.sub.html +++ /dev/null @@ -1,23 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>plugintypes-nourl-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -plugin-types text/plain; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - This test passes if there is a CSP violation sayingthe plugin was blocked. - <object type="application/x-webkit-test-netscape"></object> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=plugin-types%20text/plain"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-nourl-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-nourl-blocked.sub.html.sub.headers deleted file mode 100644 index 709bf90df99..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/plugintypes-nourl-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: plugintypes-nourl-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: plugin-types text/plain; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/script-src-wildcards-disallowed.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/script-src-wildcards-disallowed.html deleted file mode 100644 index 2a94692ee15..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/script-src-wildcards-disallowed.html +++ /dev/null @@ -1,65 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <title>script-src disallowed wildcard use</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - </head> - <body> - <!-- enforcing policy: -script-src 'nonce-nonce' *; connect-src 'self'; ---> - <script nonce="nonce"> - var t1 = async_test('data: URIs should not match *'); - t1.step(function() { - var script = document.createElement("script"); - script.src = 'data:application/javascript,'; - script.addEventListener('load', t1.step_func(function() { - assert_unreached('Should not successfully load data URI.'); - })); - script.addEventListener('error', t1.step_func(function() { - t1.done(); - })); - document.head.appendChild(script); - }); - - var t2 = async_test('blob: URIs should not match *'); - t2.step(function() { - var b = new Blob([''], { type: 'application/javascript' }); - var script = document.createElement('script'); - script.addEventListener('load', t2.step_func(function() { - assert_unreached('Should not successfully load blob URI.'); - })); - script.addEventListener('error', t2.step_func(function() { - t2.done(); - })); - - script.src = URL.createObjectURL(b); - document.head.appendChild(script); - }); - - var t3 = async_test('filesystem URIs should not match *'); - if (window.webkitRequestFileSystem) { - window.webkitRequestFileSystem(TEMPORARY, 1024*1024 /*1MB*/, function(fs) { - fs.root.getFile('fail.js', {create: true}, function(fileEntry) { - fileEntry.createWriter(function(fileWriter) { - var script = document.createElement('script'); - - script.addEventListener('load', t3.step_func(function() { - assert_unreached('Should not successfully load filesystem URI.'); - })); - script.addEventListener('error', t3.step_func(function() { - t3.done(); - })); - - script.src = fileEntry.toURL('application/javascript'); - document.body.appendChild(script); - }); - }); - }); - } else { - t3.done(); - } - </script> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/script-src-wildcards-disallowed.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/script-src-wildcards-disallowed.html.sub.headers deleted file mode 100644 index cd95439130b..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/script-src-wildcards-disallowed.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: script-src-wildcards-disallowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: script-src 'nonce-nonce' *; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-allowed.sub.html deleted file mode 100644 index a7a217448a0..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-allowed.sub.html +++ /dev/null @@ -1,42 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>scripthash-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/content-security-policy/support/alertAssert.sub.js?alerts=%5B%22PASS%20(1%2F4)%22%2C%22PASS%20(2%2F4)%22%2C%22PASS%20(3%2F4)%22%2C%22PASS%20(4%2F4)%22%5D"> - - - </script> - <!-- enforcing policy: -script-src 'self' 'sha256-IFmozo9WnnsMXVl/Ka8XzJ3Nd8yzS2zA2ME0mwtd+Ck=' 'sha256-jSpTmJKcrnHttKdYM/wCCDJoQY5tdSxNf7zd2prwFfI=' 'sha256-qbgA2XjB2EZKjn/UmK7v/K77t+fvfxA89QT/K9qPNyE=' 'sha256-K+7X5Ip3msvRvyQzf6fkrWZziuhaUIee1aLnlP5nX10='; connect-src 'self'; ---> - <script> - alert_assert('PASS (1/4)'); - - </script> - <script> - alert_assert('PASS (2/4)'); - - </script> - <script> - alert_assert('PASS (3/4)'); - - </script> - <script> - alert_assert('PASS (4/4)'); - - </script> -</head> - -<body> - <p> - This tests the effect of a valid script-hash value. It passes if no CSP violation is generated, and the alert_assert() is executed. - </p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-allowed.sub.html.sub.headers deleted file mode 100644 index e0fe373b628..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: scripthash-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: script-src 'self' 'sha256-IFmozo9WnnsMXVl/Ka8XzJ3Nd8yzS2zA2ME0mwtd+Ck=' 'sha256-jSpTmJKcrnHttKdYM/wCCDJoQY5tdSxNf7zd2prwFfI=' 'sha256-qbgA2XjB2EZKjn/UmK7v/K77t+fvfxA89QT/K9qPNyE=' 'sha256-K+7X5Ip3msvRvyQzf6fkrWZziuhaUIee1aLnlP5nX10='; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-basic-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-basic-blocked.sub.html deleted file mode 100644 index ac7b2c02f9d..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-basic-blocked.sub.html +++ /dev/null @@ -1,69 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>scripthash-basic-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script> - var t_alert = async_test('Expecting alerts: ["PASS (1/1)"]'); - var expected_alerts = ["PASS (1/1)"]; - - function alert_assert(msg) { - t_alert.step(function() { - if (msg.match(/^FAIL/i)) { - assert_unreached(msg); - t_alert.done(); - } - for (var i = 0; i < expected_alerts.length; i++) { - if (expected_alerts[i] == msg) { - assert_true(expected_alerts[i] == msg); - expected_alerts.splice(i, 1); - if (expected_alerts.length == 0) { - t_alert.done(); - } - return; - } - } - assert_unreached('unexpected alert: ' + msg); - t_log.done(); - }); - } - - </script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'sha1-Au4uYFbkf7OYd+ACMnKq96FN3qo='; connect-src 'self'; ---> - <script> - alert_assert('PASS (1/1)'); - - </script> - <script> - alert_assert('FAIL (1/4)'); - - </script> - <script> - alert_assert('FAIL (2/4)'); - - </script> - <script> - alert_assert('FAIL (3/4)'); - - </script> - <script> - alert_assert('FAIL (4/4)'); - - </script> -</head> - -<body> - <p> - This tests the effect of a valid script-hash value, with one valid script and several invalid ones. It passes if one alert is executed and a CSP violation is reported. - </p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=script-src%20'sha1-Au4uYFbkf7OYd+ACMnKq96FN3qo='"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-basic-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-basic-blocked.sub.html.sub.headers deleted file mode 100644 index 6a92e06f4f4..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-basic-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: scripthash-basic-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: script-src 'self' 'sha256-k7iO9DPkNQ7PcwPP+8XyYuRiCJ0p76Ofveol9g3mFNs=' 'sha256-EgE/bwVJ+ZLL9F5hNjDqD4C7nlFFrdDaKeNIJ2cUem4='; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-default-src.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-default-src.sub.html deleted file mode 100644 index a11a224ae11..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-default-src.sub.html +++ /dev/null @@ -1,15 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <title>script-hash allowed from default-src</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - - <script>done();</script> - </head> - - <body> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-default-src.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-default-src.sub.html.sub.headers deleted file mode 100644 index d8893af4129..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-default-src.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: scripthash-default-src={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: default-src 'self' 'sha256-sc3CeiHrlck5tH2tTC4MnBYFnI9D5zp8f9odqnmGQjE='; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-ignore-unsafeinline.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-ignore-unsafeinline.sub.html deleted file mode 100644 index 545099e080f..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-ignore-unsafeinline.sub.html +++ /dev/null @@ -1,57 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>scripthash-ignore-unsafeinline</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script> - var t_alert = async_test('Expecting alerts: ["PASS (1/1)"]'); - var expected_alerts = ["PASS (1/1)"]; - - function alert_assert(msg) { - t_alert.step(function() { - if (msg.match(/^FAIL/i)) { - assert_unreached(msg); - t_alert.done(); - } - for (var i = 0; i < expected_alerts.length; i++) { - if (expected_alerts[i] == msg) { - assert_true(expected_alerts[i] == msg); - expected_alerts.splice(i, 1); - if (expected_alerts.length == 0) { - t_alert.done(); - } - return; - } - } - assert_unreached('unexpected alert: ' + msg); - t_log.done(); - }); - } - - </script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'sha1-Au4uYFbkf7OYd+ACMnKq96FN3qo=' 'unsafe-inline'; connect-src 'self'; ---> - <script> - alert_assert('PASS (1/1)'); - - </script> - <script> - alert_assert('FAIL (1/1)'); - - </script> -</head> - -<body> - <p> - This tests that a valid hash value disables inline JavaScript, even if 'unsafe-inline' is present. - </p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=script-src%20'sha1-Au4uYFbkf7OYd+ACMnKq96FN3qo='%20'unsafe-inline'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-ignore-unsafeinline.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-ignore-unsafeinline.sub.html.sub.headers deleted file mode 100644 index fb3fc76550e..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-ignore-unsafeinline.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: scripthash-ignore-unsafeinline={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: script-src 'self' unsafe-inline' 'sha256-k7iO9DPkNQ7PcwPP+8XyYuRiCJ0p76Ofveol9g3mFNs=' 'sha256-EgE/bwVJ+ZLL9F5hNjDqD4C7nlFFrdDaKeNIJ2cUem4='; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-unicode-normalization.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-unicode-normalization.sub.html deleted file mode 100644 index bd1e0365c2e..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-unicode-normalization.sub.html +++ /dev/null @@ -1,71 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>scripthash-unicode-normalization</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - - <!-- enforcing policy: -script-src 'self' 'nonce-nonceynonce' 'sha256-dWTP4Di8KBjaiXvQ5mRquI9OoBSo921ahYxLfYSiuT8='; connect-src 'self'; ---> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -</head> - -<body> - <!-- The following two scripts contain two separate code points (U+00C5 - and U+212B, respectively) which, depending on your text editor, might be - rendered the same.However, their difference is important because, under - NFC normalization, they would become the same code point, which would be - against the spec. This test, therefore, validates that the scripts have - *different* hash values. --> - <script nonce="nonceynonce"> - var matchingContent = 'Ã…'; - var nonMatchingContent = 'â„«'; - - // This script should have a hash value of - // sha256-9UFeeZbvnMa0tLNu76v96T4Hh+UtDWHm2lPQJoTWb9c= - var scriptContent1 = "window.finish('" + matchingContent + "');"; - - // This script should have a hash value of - // sha256-iNjjXUXds31FFvkAmbC74Sxnvreug3PzGtu16udQyqM= - var scriptContent2 = "window.finish('" + nonMatchingContent + "');"; - - var script1 = document.createElement('script'); - var script2 = document.createElement('script'); - - script1.test = async_test("Only matching content runs even with NFC normalization."); - - var failure = function() { - assert_unreached(); - } - - window.finish = function(content) { - if (content == matchingContent) { - script1.test.step(function() { - script1.test.done(); - }); - } else { - script1.test.step(function() { - assert_unreached("nonMatchingContent script ran"); - }); - } - } - - script1.onerror = failure; - - document.body.appendChild(script2); - script2.textContent = scriptContent2; - document.body.appendChild(script1); - script1.textContent = scriptContent1; - </script> - - <p> - This tests Unicode normalization. While appearing the same, the strings in the scripts are different Unicode points, but through normalization, should be the same when the hash is taken. - </p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-unicode-normalization.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-unicode-normalization.sub.html.sub.headers deleted file mode 100644 index a23724f8ab4..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-unicode-normalization.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: scripthash-unicode-normalization={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: script-src 'self' 'nonce-nonceynonce' 'sha256-9UFeeZbvnMa0tLNu76v96T4Hh+UtDWHm2lPQJoTWb9c='; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-allowed.sub.html deleted file mode 100644 index c76896bfe68..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-allowed.sub.html +++ /dev/null @@ -1,64 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>scriptnonce-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script nonce="noncynonce"> - function log(msg) { - test(function() { - assert_unreached(msg) - }); - } - - </script> - <script nonce="noncynonce"> - var t_alert = async_test('Expecting alerts: ["PASS (1/2)","PASS (2/2)"]'); - var expected_alerts = ["PASS (1/2)", "PASS (2/2)"]; - - function alert_assert(msg) { - t_alert.step(function() { - if (msg.match(/^FAIL/i)) { - assert_unreached(msg); - t_alert.done(); - } - for (var i = 0; i < expected_alerts.length; i++) { - if (expected_alerts[i] == msg) { - assert_true(expected_alerts[i] == msg); - expected_alerts.splice(i, 1); - if (expected_alerts.length == 0) { - t_alert.done(); - } - return; - } - } - assert_unreached('unexpected alert: ' + msg); - t_log.done(); - }); - } - - </script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'nonce-noncynonce' 'nonce-noncy+/nonce='; connect-src 'self'; ---> - <script nonce="noncynonce"> - alert_assert('PASS (1/2)'); - - </script> - <script nonce="noncy+/nonce="> - alert_assert('PASS (2/2)'); - - </script> -</head> - -<body> - <p> - This tests the effect of a valid script-nonce value. It passes if no CSP violation is generated and the alerts are executed. - </p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-allowed.sub.html.sub.headers deleted file mode 100644 index 1e21757118d..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: scriptnonce-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: script-src 'self' 'nonce-noncynonce' 'nonce-noncy+/nonce='; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-and-scripthash.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-and-scripthash.sub.html deleted file mode 100644 index 2b333cbeade..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-and-scripthash.sub.html +++ /dev/null @@ -1,76 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>scriptnonce-and-scripthash</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script nonce="nonceynonce"> - function log(msg) { - test(function() { - assert_unreached(msg) - }); - } - - </script> - <script nonce="nonceynonce"> - var t_alert = async_test('Expecting alerts: ["PASS (1/3)","PASS (2/3)","PASS (3/3)"]'); - var expected_alerts = ["PASS (1/3)", "PASS (2/3)", "PASS (3/3)"]; - - function alert_assert(msg) { - t_alert.step(function() { - if (msg.match(/^FAIL/i)) { - assert_unreached(msg); - t_alert.done(); - } - for (var i = 0; i < expected_alerts.length; i++) { - if (expected_alerts[i] == msg) { - assert_true(expected_alerts[i] == msg); - expected_alerts.splice(i, 1); - if (expected_alerts.length == 0) { - t_alert.done(); - } - return; - } - } - assert_unreached('unexpected alert: ' + msg); - t_log.done(); - }); - } - - </script> - <!-- enforcing policy: -script-src 'self' 'sha256-LS8v1E1Ff0Hc8FobgWKNKY3sbW4rljPlZNQHyyutfKU=' 'nonce-nonceynonce'; connect-src 'self'; ---> - <script nonce="nonceynonce"> - alert_assert('PASS (1/3)'); - - </script> - <script> - alert_assert('PASS (2/3)'); - - </script> - <script nonce="nonceynonce"> - alert_assert('PASS (3/3)'); - - </script> - <script> - alert_assert('FAIL (1/2)'); - - </script> - <script nonce="notanonce"> - alert_assert('FAIL (2/2)'); - - </script> -</head> - -<body> - <p> - This tests the combined use of script hash and script nonce. It passes if a CSP violation is generated and the three alerts show PASS. - </p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=script-src%20'sha1-MfuEFRkC2LmR31AMy9KW2ZLDegA='%20'sha1-p70t5PXyndLfjKNjbyBBOL1gFiM='%20'nonce-nonceynonce'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-and-scripthash.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-and-scripthash.sub.html.sub.headers deleted file mode 100644 index afa33e6df18..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-and-scripthash.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: scriptnonce-and-scripthash={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: script-src 'self' 'sha256-LS8v1E1Ff0Hc8FobgWKNKY3sbW4rljPlZNQHyyutfKU=' 'nonce-nonceynonce'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-basic-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-basic-blocked.sub.html deleted file mode 100644 index 4815ca10013..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-basic-blocked.sub.html +++ /dev/null @@ -1,43 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>scriptnonce-basic-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/alertAssert.sub.js?alerts=["PASS (closely-quoted nonce)","PASS (nonce w/whitespace)"]'></script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'nonce-noncynonce'; connect-src 'self'; ---> - <script nonce="noncynonce"> - alert_assert('PASS (closely-quoted nonce)'); - - </script> - <script nonce=" noncynonce "> - alert_assert('PASS (nonce w/whitespace)'); - - </script> - <script nonce="noncynonce noncynonce"> - alert_assert('FAIL (1/3)'); - - </script> - <script> - alert_assert('FAIL (2/3)'); - - </script> - <script nonce="noncynonceno?"> - alert_assert('FAIL (3/3)'); - - </script> -</head> - -<body> - <p> - This tests the effect of a valid script-nonce value. It passes if a CSP violation is generated, and the two PASS alerts are executed. - </p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=script-src%20'nonce-noncynonce'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-basic-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-basic-blocked.sub.html.sub.headers deleted file mode 100644 index ee4e8b3f0b2..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-basic-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: scriptnonce-basic-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: script-src 'self' 'nonce-noncynonce'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-ignore-unsafeinline.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-ignore-unsafeinline.sub.html deleted file mode 100644 index 0d48b486d4f..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-ignore-unsafeinline.sub.html +++ /dev/null @@ -1,72 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>scriptnonce-ignore-unsafeinline</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script nonce='noncynonce'> - function log(msg) { - test(function() { - assert_unreached(msg) - }); - } - - </script> - <script nonce='noncynonce'> - var t_alert = async_test('Expecting alerts: ["PASS (1/2)","PASS (2/2)"]'); - var expected_alerts = ["PASS (1/2)", "PASS (2/2)"]; - - function alert_assert(msg) { - t_alert.step(function() { - if (msg.match(/^FAIL/i)) { - assert_unreached(msg); - t_alert.done(); - } - for (var i = 0; i < expected_alerts.length; i++) { - if (expected_alerts[i] == msg) { - assert_true(expected_alerts[i] == msg); - expected_alerts.splice(i, 1); - if (expected_alerts.length == 0) { - t_alert.done(); - } - return; - } - } - assert_unreached('unexpected alert: ' + msg); - t_log.done(); - }); - } - - </script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'nonce-noncynonce' 'nonce-noncy+/nonce=' 'unsafe-inline'; connect-src 'self'; ---> - <script nonce="noncynonce"> - - - </script> - <script nonce="noncynonce"> - alert_assert('PASS (1/2)'); - - </script> - <script nonce="noncy+/nonce="> - alert_assert('PASS (2/2)'); - - </script> - <script> - alert_assert('FAIL (1/1)'); - - </script> -</head> - -<body> - <p> - This tests that a valid nonce disables inline JavaScript, even if 'unsafe-inline' is present. - </p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=script-src%20'nonce-noncynonce'%20'nonce-noncy+/nonce='%20'unsafe-inline'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-ignore-unsafeinline.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-ignore-unsafeinline.sub.html.sub.headers deleted file mode 100644 index 9aecb94d30a..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-ignore-unsafeinline.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: scriptnonce-ignore-unsafeinline={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: script-src 'self' 'unsafe-inline' 'nonce-noncynonce' 'nonce-noncy+/nonce=' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-redirect.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-redirect.sub.html deleted file mode 100644 index a17f1fb5c30..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-redirect.sub.html +++ /dev/null @@ -1,59 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>scriptnonce-redirect</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script nonce="noncynonce"> - function log(msg) { - test(function() { - assert_unreached(msg) - }); - } - - </script> - <script nonce="noncynonce"> - var t_alert = async_test('Expecting alerts: ["PASS"]'); - var expected_alerts = ["PASS"]; - - function alert_assert(msg) { - t_alert.step(function() { - if (msg.match(/^FAIL/i)) { - assert_unreached(msg); - t_alert.done(); - } - for (var i = 0; i < expected_alerts.length; i++) { - if (expected_alerts[i] == msg) { - assert_true(expected_alerts[i] == msg); - expected_alerts.splice(i, 1); - if (expected_alerts.length == 0) { - t_alert.done(); - } - return; - } - } - assert_unreached('unexpected alert: ' + msg); - t_log.done(); - }); - } - - </script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'nonce-noncynonce'; connect-src 'self'; ---> -</head> - -<body> - This tests whether a deferred script load caused by a redirect is properly allowed by a nonce. - <script nonce="noncynonce" src="/common/redirect.py?location=http://{{host}}:{{ports[http][0]}}/content-security-policy/support/alert-pass.js"></script> - <script nonce="noncynonce"> - - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-redirect.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-redirect.sub.html.sub.headers deleted file mode 100644 index 8d71f88d55e..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scriptnonce-redirect.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: scriptnonce-redirect={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: script-src 'self' 'unsafe-inline' 'nonce-noncynonce'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-cross-origin-image-from-script.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-cross-origin-image-from-script.sub.html deleted file mode 100644 index 82cad034796..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-cross-origin-image-from-script.sub.html +++ /dev/null @@ -1,27 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>securitypolicyviolation-block-cross-origin-image-from-script</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["TEST COMPLETE"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -img-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - <script> - var x = document.createElement('script'); - x.src = 'http://{{host}}:{{ports[http][0]}}/content-security-policy/support/inject-image.js'; - document.body.appendChild(x); - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=img-src%20'none'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-cross-origin-image-from-script.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-cross-origin-image-from-script.sub.html.sub.headers deleted file mode 100644 index 723ed281ffc..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-cross-origin-image-from-script.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: securitypolicyviolation-block-cross-origin-image-from-script={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: img-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-cross-origin-image.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-cross-origin-image.sub.html deleted file mode 100644 index 9b7dc32e1bd..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-cross-origin-image.sub.html +++ /dev/null @@ -1,29 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>securitypolicyviolation-block-cross-origin-image</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["TEST COMPLETE"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -img-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - <script> - var img = document.createElement('img'); - img.src = 'http://{{host}}:{{ports[http][0]}}/security/resources/abe.png'; - document.body.appendChild(img); - log("TEST COMPLETE"); - - </script> - <p>Check that a SecurityPolicyViolationEvent strips detail from cross-origin blocked URLs.</p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=img-src%20'none'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-cross-origin-image.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-cross-origin-image.sub.html.sub.headers deleted file mode 100644 index d701a476fa4..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-cross-origin-image.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: securitypolicyviolation-block-cross-origin-image={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: img-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-image-from-script.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-image-from-script.sub.html deleted file mode 100644 index 33facfbc3a8..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-image-from-script.sub.html +++ /dev/null @@ -1,29 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>securitypolicyviolation-block-image-from-script</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["TEST COMPLETE"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -img-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - <script> - var script = document.createElement('script'); - script.src = '../support/inject-image.js'; - document.body.appendChild(script); - log("TEST COMPLETE"); - - </script> - <p>Check that a SecurityPolicyViolationEvent is fired upon blocking an image injected via script.</p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=img-src%20'none'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-image-from-script.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-image-from-script.sub.html.sub.headers deleted file mode 100644 index 6b6084dc531..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-image-from-script.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: securitypolicyviolation-block-image-from-script={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: img-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-image.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-image.sub.html deleted file mode 100644 index 3e62e2d359f..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-image.sub.html +++ /dev/null @@ -1,34 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>securitypolicyviolation-block-image</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["TEST COMPLETE"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -img-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - <script> - var img = document.createElement('img'); - img.src = '../support/fail.png'; - img.onerror = function() { - log("TEST COMPLETE"); - }; - img.onload = function() { - log("FAIL"); - }; - document.body.appendChild(img); - - </script> - <p>Check that a SecurityPolicyViolationEvent is fired upon blocking an image.</p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=img-src%20'none'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-image.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-image.sub.html.sub.headers deleted file mode 100644 index 1f4f8457845..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/securitypolicyviolation-block-image.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: securitypolicyviolation-block-image={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: img-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylehash-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylehash-allowed.sub.html deleted file mode 100644 index 282b1850257..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylehash-allowed.sub.html +++ /dev/null @@ -1,77 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>stylehash-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script> - var t_alert = async_test('Expecting alerts: ["PASS (1/4): The \'#p1\' element\'s text is green, which means the style was correctly applied.","PASS (2/4): The \'#p2\' element\'s text is green, which means the style was correctly applied.","PASS (3/4): The \'#p3\' element\'s text is green, which means the style was correctly applied.","PASS (4/4): The \'#p4\' element\'s text is green, which means the style was correctly applied."]'); - var expected_alerts = ["PASS (1/4): The '#p1' element's text is green, which means the style was correctly applied.", "PASS (2/4): The '#p2' element's text is green, which means the style was correctly applied.", "PASS (3/4): The '#p3' element's text is green, which means the style was correctly applied.", "PASS (4/4): The '#p4' element's text is green, which means the style was correctly applied."]; - - function alert_assert(msg) { - t_alert.step(function() { - if (msg.match(/^FAIL/i)) { - assert_unreached(msg); - t_alert.done(); - } - for (var i = 0; i < expected_alerts.length; i++) { - if (expected_alerts[i] == msg) { - assert_true(expected_alerts[i] == msg); - expected_alerts.splice(i, 1); - if (expected_alerts.length == 0) { - t_alert.done(); - } - return; - } - } - assert_unreached('unexpected alert: ' + msg); - t_log.done(); - }); - } - - </script> - <!-- enforcing policy: -style-src 'sha256-pAKi9r4/WB7fHydbE3F3t8i8602ij2JN8zHJpL2T5BM=' 'sha256-hndjYvzUzy2Ykuad81Cwsl1FOXX/qYs/aDVyUyNZwBw=' 'sha384-bSVm1i3sjPBRM4TwZtYTDjk9JxZMExYHWbFmP1SxDhJH4ue0Wu9OPOkY5hcqRcSt' 'sha512-440MmBLtj9Kp5Bqloogn9BqGDylY8vFsv5/zXL1zH2fJVssCoskRig4gyM+9KqwvCSapSz5CVoUGHQcxv43UQg=='; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - <p id="p1">This tests the result of a valid style hash. It passes if this text is green, and a "PASS" alert for p1 is fired.</p> - <p id="p2">This tests the result of a valid style hash. It passes if this text is green, and a "PASS" alert for p2 is fired.</p> - <p id="p3">This tests the result of a valid style hash. It passes if this text is green, and a "PASS" alert for p3 is fired.</p> - <p id="p4">This tests the result of a valid style hash. It passes if this text is green, and a "PASS" alert for p4 is fired.</p> - <style>p#p1 { color: green; }</style> - <style>p#p2 { color: green; }</style> - <style>p#p3 { color: green; }</style> - <style>p#p4 { color: green; }</style> - <script> - var color = window.getComputedStyle(document.querySelector('#p1')).color; - if (color === "rgb(0, 128, 0)") - alert_assert("PASS (1/4): The '#p1' element's text is green, which means the style was correctly applied."); - else - alert_assert("FAIL (1/4): The '#p1' element's text is " + color + ", which means the style was incorrectly applied."); - var color = window.getComputedStyle(document.querySelector('#p2')).color; - if (color === "rgb(0, 128, 0)") - alert_assert("PASS (2/4): The '#p2' element's text is green, which means the style was correctly applied."); - else - alert_assert("FAIL (2/4): The '#p2' element's text is " + color + ", which means the style was incorrectly applied."); - var color = window.getComputedStyle(document.querySelector('#p3')).color; - if (color === "rgb(0, 128, 0)") - alert_assert("PASS (3/4): The '#p3' element's text is green, which means the style was correctly applied."); - else - alert_assert("FAIL (3/4): The '#p3' element's text is " + color + ", which means the style was incorrectly applied."); - var color = window.getComputedStyle(document.querySelector('#p4')).color; - if (color === "rgb(0, 128, 0)") - alert_assert("PASS (4/4): The '#p4' element's text is green, which means the style was correctly applied."); - else - alert_assert("FAIL (4/4): The '#p4' element's text is " + color + ", which means the style was incorrectly applied."); - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylehash-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylehash-allowed.sub.html.sub.headers deleted file mode 100644 index 2b519e85ec2..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylehash-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: stylehash-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: style-src 'self' 'sha256-pAKi9r4/WB7fHydbE3F3t8i8602ij2JN8zHJpL2T5BM=' 'sha256-hndjYvzUzy2Ykuad81Cwsl1FOXX/qYs/aDVyUyNZwBw=' 'sha384-bSVm1i3sjPBRM4TwZtYTDjk9JxZMExYHWbFmP1SxDhJH4ue0Wu9OPOkY5hcqRcSt' 'sha512-440MmBLtj9Kp5Bqloogn9BqGDylY8vFsv5/zXL1zH2fJVssCoskRig4gyM+9KqwvCSapSz5CVoUGHQcxv43UQg=='; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylehash-basic-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylehash-basic-blocked.sub.html deleted file mode 100644 index 274db01403c..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylehash-basic-blocked.sub.html +++ /dev/null @@ -1,61 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>stylehash-basic-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script> - var t_alert = async_test('Expecting alerts: ["PASS: The \'p\' element\'s text is green, which means the style was correctly applied."]'); - var expected_alerts = ["PASS: The 'p' element's text is green, which means the style was correctly applied."]; - - function alert_assert(msg) { - t_alert.step(function() { - if (msg.match(/^FAIL/i)) { - assert_unreached(msg); - t_alert.done(); - } - for (var i = 0; i < expected_alerts.length; i++) { - if (expected_alerts[i] == msg) { - assert_true(expected_alerts[i] == msg); - expected_alerts.splice(i, 1); - if (expected_alerts.length == 0) { - t_alert.done(); - } - return; - } - } - assert_unreached('unexpected alert: ' + msg); - t_log.done(); - }); - } - - </script> - <!-- enforcing policy: -style-src 'sha1-pfeR5wMA6np45oqDTP6Pj3tLpJo='; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> - <style>p { color: green; }</style> - <style>p { color: red; }</style> - <style>p { color: purple; }</style> - <style>p { color: blue; }</style> -</head> - -<body> - <p> - This tests the effect of a valid style-hash value, with one valid style and several invalid ones. It passes if the valid style is applied and a CSP violation is generated. - </p> - <script> - var color = window.getComputedStyle(document.querySelector('p')).color; - if (color === "rgb(0, 128, 0)") - alert_assert("PASS: The 'p' element's text is green, which means the style was correctly applied."); - else - alert_assert("FAIL: The 'p' element's text is " + color + ", which means the style was incorrectly applied."); - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=style-src%20'sha1-pfeR5wMA6np45oqDTP6Pj3tLpJo='"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylehash-basic-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylehash-basic-blocked.sub.html.sub.headers deleted file mode 100644 index ac9ca4e870c..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylehash-basic-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: stylehash-basic-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: style-src 'self' 'sha1-pfeR5wMA6np45oqDTP6Pj3tLpJo='; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylehash-default-src.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylehash-default-src.sub.html deleted file mode 100644 index 159338c6db0..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylehash-default-src.sub.html +++ /dev/null @@ -1,21 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <title>stylehash allowed from default-src</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - </head> - - <body> - <p id="p">Test</p> - <style>p#p { color: green; }</style> - <script> - var color = window.getComputedStyle(document.querySelector('#p')).color; - assert_equals(color, "rgb(0, 128, 0)"); - done(); - </script> - - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylehash-default-src.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylehash-default-src.sub.html.sub.headers deleted file mode 100644 index 8efe9d965ef..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylehash-default-src.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: stylehash-default-src={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: default-src 'self' 'sha256-SXMrww9+PS7ymkxYbv91id+HfXeO7p1uCY0xhNb4MIw='; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylenonce-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylenonce-allowed.sub.html deleted file mode 100644 index 0cc14e7d8d5..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylenonce-allowed.sub.html +++ /dev/null @@ -1,54 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>stylenonce-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -style-src 'self' nonce-noncynonce' 'nonce-noncy+/nonce='; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> - <script></script> - <style nonce="noncynonce"> - #test1 { - color: green; - } - - </style> - <style> - #test1 { - color: red; - } - - </style> - <style nonce="noncynonce"> - #test2 { - color: green; - } - - </style> -</head> - -<body> - <p id="test1">This text should be green.</p> - <p id="test2">This text should also be green.</p> - <script> - var el = document.querySelector('#test1'); - test(function() { - assert_equals(window.getComputedStyle(el).color, "rgb(0, 128, 0)") - }); - var el = document.querySelector('#test2'); - test(function() { - assert_equals(window.getComputedStyle(el).color, "rgb(0, 128, 0)") - }); - - </script> - <p>Style correctly whitelisted via a 'nonce-*' expression in 'style-src' should be applied to the page.</p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=style-src%20'nonce-noncynonce'%20'nonce-noncy+/nonce='"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylenonce-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylenonce-allowed.sub.html.sub.headers deleted file mode 100644 index 7475be89dc8..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylenonce-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: stylenonce-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: style-src 'self' 'nonce-noncynonce' 'nonce-noncy+/nonce='; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylenonce-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylenonce-blocked.sub.html deleted file mode 100644 index 43204f64d3d..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylenonce-blocked.sub.html +++ /dev/null @@ -1,38 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>stylenonce-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <link rel="stylesheet" type="text/css" href="allowed.css"> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -style-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> - <script></script> - <style nonce="noncynonce"> - #test { - color: red; - } - - </style> -</head> - -<body> - <p id="test">This text should be green.</p> - <script> - var el = document.querySelector('#test'); - test(function() { - assert_equals(window.getComputedStyle(el).color, "rgb(0, 128, 0)") - }); - - </script> - <p>Style that does not match a 'nonce-*' expression in 'style-src' should not be applied to the page.</p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=style-src%20'self'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylenonce-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylenonce-blocked.sub.html.sub.headers deleted file mode 100644 index e51a02dd0be..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylenonce-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: stylenonce-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: style-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/blob-urls-do-not-match-self.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/blob-urls-do-not-match-self.sub.html deleted file mode 100644 index 912a29e0b86..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/blob-urls-do-not-match-self.sub.html +++ /dev/null @@ -1,36 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>blob-urls-do-not-match-self</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline'; connect-src 'self'; child-src 'self'; ---> -</head> - -<body> - <p> - blob: URLs are same-origin with the page in which they were created, but explicitly do not match the 'self' or '*' source in CSP directives because they are more akin to 'unsafe-inline' content. - </p> - <script> - function fail() { - alert_assert("FAIL!"); - } - var b = new Blob(['fail();'], { - type: 'application/javascript' - }); - var script = document.createElement('script'); - script.src = URL.createObjectURL(b); - document.body.appendChild(script); - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=script-src%20'self'%20'unsafe-inline'%20''"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/blob-urls-do-not-match-self.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/blob-urls-do-not-match-self.sub.html.sub.headers deleted file mode 100644 index cbfc8d4e47a..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/blob-urls-do-not-match-self.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: blob-urls-do-not-match-self={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline'; connect-src 'self'; child-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/blob-urls-match-blob.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/blob-urls-match-blob.sub.html deleted file mode 100644 index 819c1a699f2..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/blob-urls-match-blob.sub.html +++ /dev/null @@ -1,36 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>blob-urls-match-blob</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS (1/1)"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' blob:; connect-src 'self'; ---> -</head> - -<body> - <p> - blob: URLs are same-origin with the page in which they were created, but match only if the blob: scheme is specified. - </p> - <script> - function pass() { - log("PASS (1/1)"); - } - var b = new Blob(['pass();'], { - type: 'application/javascript' - }); - var script = document.createElement('script'); - script.src = URL.createObjectURL(b); - document.body.appendChild(script); - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/blob-urls-match-blob.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/blob-urls-match-blob.sub.html.sub.headers deleted file mode 100644 index be74e61a78b..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/blob-urls-match-blob.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: blob-urls-match-blob={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline' blob:; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/combine-header-and-meta-policies.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/combine-header-and-meta-policies.sub.html deleted file mode 100644 index 66b86f195d7..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/combine-header-and-meta-policies.sub.html +++ /dev/null @@ -1,51 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <meta http-equiv="Content-Security-Policy" content="img-src 'none'"> - <title>combine-header-and-meta-policies</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["TEST COMPLETE"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing multiple policies: -Content-Security-Policy: script-src 'self' 'unsafe-inline'; connect-src 'self'; style-src 'self' -Content-Security-Policy: img-src 'none' ---> -</head> - -<body> -<p>Test passes if both style and image are blocked and a report is generated for the - style block from the header-supplied policy.</p> - - <script> - var img = document.createElement('img'); - img.src = '../support/fail.png'; - img.onerror = function() { - log("TEST COMPLETE"); - }; - img.onload = function() { - log("FAIL"); - }; - document.body.appendChild(img); - - </script> - <style> - body { - background-color: blue; - } - - </style> - <script> - var el = document.querySelector('body'); - test(function() { - assert_equals(window.getComputedStyle(el).color, "rgb(0, 0, 0)") - }); - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=style-src%20'self'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/combine-header-and-meta-policies.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/combine-header-and-meta-policies.sub.html.sub.headers deleted file mode 100644 index b1f0e7f012d..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/combine-header-and-meta-policies.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: combine-header-and-meta-policies={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline'; connect-src 'self'; style-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/combine-multiple-header-policies.html.asis b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/combine-multiple-header-policies.html.asis deleted file mode 100644 index a14be5cd9ff..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/combine-multiple-header-policies.html.asis +++ /dev/null @@ -1,60 +0,0 @@ -HTTP/1.1 200 OK -Content-Type: text/html -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: combine-multiple-policies=d0140e7d-3800-4842-b66d-370840a4569a; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline'; connect-src 'self'; style-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID=d0140e7d-3800-4842-b66d-370840a4569a -Content-Security-Policy: img-src 'none' - -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <meta http-equiv="Content-Security-Policy" content="img-src 'none'"> - <title>combine-multiple-policies</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["TEST COMPLETE"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing multiple policies: -Content-Security-Policy: script-src 'self' 'unsafe-inline'; connect-src 'self'; styls-src 'self' -Content-Security-Policy: img-src 'none' ---> -</head> - -<body> - This test checks that we enforce all the supplied policies. This test passe if it doesn't alert fail and if the style doesn't apply. - Check that a SecurityPolicyViolationEvent is fired upon blocking an image. - <script> - var img = document.createElement('img'); - img.src = '../support/fail.png'; - img.onerror = function() { - log("TEST COMPLETE"); - }; - img.onload = function() { - log("FAIL"); - }; - document.body.appendChild(img); - - </script> - <style> - body { - background-color: blue; - } - - </style> - <script> - var el = document.querySelector('body'); - test(function() { - assert_equals(window.getComputedStyle(el).color, "rgb(0, 0, 0)") - }); - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=style-src%20'self'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-beacon-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-beacon-allowed.sub.html deleted file mode 100644 index 2beb00d020c..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-beacon-allowed.sub.html +++ /dev/null @@ -1,41 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>connect-src-beacon-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["Pass"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -connect-src 'self' http://{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline'; ---> -</head> - -<body> - <script> - if (typeof navigator.sendBeacon != 'function') { - t_log.set_status(t_log.NOTRUN, "No navigator.sendBeacon, cannot run test."); - t_log.phase = t_log.phases.HAS_RESULT; - t_log.done(); - } else { - try { - var es = navigator.sendBeacon("http://{{host}}:{{ports[http][0]}}/cors/resources/status.py"); - log("Pass"); - } catch (e) { - log("Fail"); - } - var report = document.createElement("script"); - report.src = "../support/checkReport.sub.js?reportExists=false"; - report.async = true; - report.defer = true; - document.body.appendChild(report); - - } - - </script> - <div id="log"></div> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-beacon-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-beacon-allowed.sub.html.sub.headers deleted file mode 100644 index bd3eda40a86..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-beacon-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: connect-src-beacon-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: connect-src 'self' http://{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-beacon-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-beacon-blocked.sub.html deleted file mode 100644 index f68d3c384db..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-beacon-blocked.sub.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>connect-src-beacon-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["Pass"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -connect-src 'self' http://{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline'; ---> -</head> - -<body> - <script> - if (typeof navigator.sendBeacon != 'function') { - t_log.set_status(t_log.NOTRUN, "No navigator.sendBeacon, cannot run test."); - t_log.phase = t_log.phases.HAS_RESULT; - t_log.done(); - } else { - try { - var es = navigator.sendBeacon("http://www1.{{host}}:{{ports[http][0]}}/security/contentSecurityPolicy/echo-report.php"); - log("Pass"); - } catch (e) { - log("Fail"); - } - var report = document.createElement("script"); - report.src = "../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=connect-src%20'self'"; - report.async = true; - report.defer = true; - document.body.appendChild(report); - } - - </script> - <div id="log"></div> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-beacon-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-beacon-blocked.sub.html.sub.headers deleted file mode 100644 index 69ded8da7fb..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-beacon-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: connect-src-beacon-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: connect-src 'self'; script-src 'self' 'unsafe-inline'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-beacon-redirect-to-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-beacon-redirect-to-blocked.sub.html deleted file mode 100644 index 3d03100e366..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-beacon-redirect-to-blocked.sub.html +++ /dev/null @@ -1,41 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>connect-src-beacon-redirect-to-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -connect-src 'self'; script-src 'self' 'unsafe-inline'; ---> - <script></script> -</head> - -<body> - <p>The beacon should not follow the redirect to http://www1.{{host}}:{{ports[http][0]}}/content-security-policy/support/fail.png and send a CSP violation report.</p> - <p>Verify that a CSP connect-src directive blocks redirects.</p> - <script> - if (typeof navigator.sendBeacon != 'function') { - var t = async_test(); - t.set_status(t.NOTRUN, "No navigator.sendBeacon, cannot run test."); - t.phase = t.phases.HAS_RESULT; - t.done(); - } else { - navigator.sendBeacon( - "/common/redirect.py?location=http://www1.{{host}}:{{ports[http][0]}}/content-security-policy/support/fail.png", - "ping"); - var report = document.createElement("script"); - report.src = "../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=connect-src%20'self'"; - report.async = true; - report.defer = true; - document.body.appendChild(report); - } - - </script> - <div id="log"></div> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-beacon-redirect-to-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-beacon-redirect-to-blocked.sub.html.sub.headers deleted file mode 100644 index 2c69d0dc866..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-beacon-redirect-to-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: connect-src-beacon-redirect-to-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: connect-src 'self'; script-src 'self' 'unsafe-inline'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-eventsource-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-eventsource-allowed.sub.html deleted file mode 100644 index b3a65f1c102..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-eventsource-allowed.sub.html +++ /dev/null @@ -1,30 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>connect-src-eventsource-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["Pass"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -connect-src 'self' http://{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline'; ---> -</head> - -<body> - <script> - try { - var es = new EventSource("http://{{host}}:{{ports[http][0]}}/content-security-policy/blink-contrib/resources/simple-event-stream"); - log("Pass"); - } catch (e) { - log("Fail"); - } - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-eventsource-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-eventsource-allowed.sub.html.sub.headers deleted file mode 100644 index eff5c546a8f..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-eventsource-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: connect-src-eventsource-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: connect-src 'self' http://{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-eventsource-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-eventsource-blocked.sub.html deleted file mode 100644 index 5be570c46fc..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-eventsource-blocked.sub.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>connect-src-eventsource-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["Pass"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -connect-src 'self'; script-src 'self' 'unsafe-inline'; ---> -</head> - -<body> - <script> - try { - var es = new EventSource("http://www1.{{host}}:{{ports[http][0]}}/content-security-policy/blink-contrib/resources/simple-event-stream"); - // Firefox doesn't throw an exception and takes some time to close async - if (es.readyState == EventSource.CONNECTING) { - setTimeout( function() { - es.readyState != EventSource.CLOSED ? log("Fail") : log("Pass"); - }, 2); - } else if (es.readyState == EventSource.CLOSED) { - log("Pass"); - } else { - log("Fail"); - } - - } catch (e) { - log("Pass"); - } - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=connect-src%20'self'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-eventsource-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-eventsource-blocked.sub.html.sub.headers deleted file mode 100644 index ac37816a439..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-eventsource-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: connect-src-eventsource-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: connect-src 'self'; script-src 'self' 'unsafe-inline'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-eventsource-redirect-to-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-eventsource-redirect-to-blocked.sub.html deleted file mode 100644 index a3ba4bad03a..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-eventsource-redirect-to-blocked.sub.html +++ /dev/null @@ -1,39 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>connect-src-eventsource-redirect-to-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS EventSource() did not follow the disallowed redirect.","TEST COMPLETE"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -connect-src 'self'; script-src 'self' 'unsafe-inline'; ---> - <script></script> -</head> - -<body> - <script> - var es; - try { - es = new EventSource("/common/redirect.py?location= http://www.{{host}}:{{ports[http][0]}}/content-security-policy/blink-contrib/resources/simple-event-stream"); - } catch (e) { - log("FAIL " + "EventSource() should not throw an exception."); - } - es.onload = function() { - log("FAIL " + "EventSource() should fail to follow the disallowed redirect."); - log("TEST COMPLETE"); - }; - es.onerror = function() { - log("PASS " + "EventSource() did not follow the disallowed redirect."); - log("TEST COMPLETE"); - }; - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=connect-src%20'self'/security/contentSecurityPolicy/resources/redir.php"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-eventsource-redirect-to-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-eventsource-redirect-to-blocked.sub.html.sub.headers deleted file mode 100644 index c63c8a9dea0..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-eventsource-redirect-to-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: connect-src-eventsource-redirect-to-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: connect-src 'self' http://{{host}}:{{ports[http][0]}}/security/contentSecurityPolicy/resources/redir.php; script-src 'self' 'unsafe-inline'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-websocket-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-websocket-allowed.sub.html deleted file mode 100644 index 4e8499bd424..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-websocket-allowed.sub.html +++ /dev/null @@ -1,30 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>connect-src-websocket-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["Pass"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -connect-src 'self' ws://127.0.0.1:8880; script-src 'self' 'unsafe-inline'; ---> -</head> - -<body> - <script> - try { - var ws = new WebSocket("ws://127.0.0.1:8880/echo"); - log("Pass"); - } catch (e) { - log("Fail"); - } - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-websocket-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-websocket-allowed.sub.html.sub.headers deleted file mode 100644 index 707435174f7..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-websocket-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: connect-src-websocket-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: connect-src 'self' ws://127.0.0.1:8880; script-src 'self' 'unsafe-inline'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-websocket-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-websocket-blocked.sub.html deleted file mode 100644 index 68f86dec6e7..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-websocket-blocked.sub.html +++ /dev/null @@ -1,30 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>connect-src-websocket-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["Pass"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -connect-src 'self' ws://127.0.0.1:8880; script-src 'self' 'unsafe-inline'; ---> -</head> - -<body> - <script> - try { - var ws = new WebSocket("ws://localhost:8880/echo"); - log("Fail"); - } catch (e) { - log("Pass"); - } - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=connect-src%20ws://127.0.0.1:8880"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-websocket-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-websocket-blocked.sub.html.sub.headers deleted file mode 100644 index 69036f5bdde..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-websocket-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: connect-src-websocket-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: connect-src 'self' ws://127.0.0.1:8880; script-src 'self' 'unsafe-inline'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-xmlhttprequest-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-xmlhttprequest-allowed.sub.html deleted file mode 100644 index a2ad1218646..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-xmlhttprequest-allowed.sub.html +++ /dev/null @@ -1,31 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>connect-src-xmlhttprequest-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["Pass"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -connect-src 'self' http://{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline'; ---> -</head> - -<body> - <script> - try { - var xhr = new XMLHttpRequest; - xhr.open("GET", "http://{{host}}:{{ports[http][0]}}/xmlhttprequest/resources/get.txt", true); - log("Pass"); - } catch (e) { - log("Fail"); - } - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-xmlhttprequest-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-xmlhttprequest-allowed.sub.html.sub.headers deleted file mode 100644 index dbabcad7a02..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-xmlhttprequest-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: connect-src-xmlhttprequest-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: connect-src 'self' http://{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-xmlhttprequest-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-xmlhttprequest-blocked.sub.html deleted file mode 100644 index 014bb21aed3..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-xmlhttprequest-blocked.sub.html +++ /dev/null @@ -1,37 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>connect-src-xmlhttprequest-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["Pass"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -connect-src 'self'; script-src 'self' 'unsafe-inline'; ---> -</head> - -<body> - <script> - try { - var xhr = new XMLHttpRequest; - xhr.open("GET", "http://www1.{{host}}:{{ports[http][0]}}/content-security-policy/support/fail.png", true); - xhr.send(); - xhr.onload = function() { - log("Fail"); - } - xhr.onerror = function() { - log("Pass"); - } - } catch (e) { - log("Pass"); - } - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=connect-src%20'self'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-xmlhttprequest-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-xmlhttprequest-blocked.sub.html.sub.headers deleted file mode 100644 index d338034cfc1..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-xmlhttprequest-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: connect-src-xmlhttprequest-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: connect-src 'self'; script-src 'self' 'unsafe-inline'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-xmlhttprequest-redirect-to-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-xmlhttprequest-redirect-to-blocked.sub.html deleted file mode 100644 index 6fc0769b618..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-xmlhttprequest-redirect-to-blocked.sub.html +++ /dev/null @@ -1,45 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>connect-src-xmlhttprequest-redirect-to-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS XMLHttpRequest.send() did not follow the disallowed redirect.","TEST COMPLETE"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -connect-src 'self'; script-src 'self' 'unsafe-inline'; ---> - <script id="inject_here"></script> -</head> - -<body> - <script> - var xhr = new XMLHttpRequest; - try { - xhr.open("GET", "/common/redirect.py?location=http://www1.{{host}}:{{ports[http][0]}}/content-security-policy/support/fail.asis", true); - } catch (e) { - log("FAIL " + "XMLHttpRequest.open() should not throw an exception."); - } - xhr.onload = function() { - //cons/**/ole.log(xhr.responseText); - if(xhr.responseText == "FAIL") { - log("FAIL " + "XMLHttpRequest.send() should fail to follow the disallowed redirect."); - } else { - log("PASS " + "XMLHttpRequest.send() did not follow the disallowed redirect."); - } - log("TEST COMPLETE"); - }; - xhr.onerror = function() { - log("PASS " + "XMLHttpRequest.send() did not follow the disallowed redirect."); - log("TEST COMPLETE"); - }; - xhr.send(); - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=connect-src%20'self'/security/contentSecurityPolicy/resources/redir.php"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-xmlhttprequest-redirect-to-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-xmlhttprequest-redirect-to-blocked.sub.html.sub.headers deleted file mode 100644 index 452104ecd8e..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-xmlhttprequest-redirect-to-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: connect-src-xmlhttprequest-redirect-to-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: connect-src 'self'; script-src 'self' 'unsafe-inline'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/default-src-inline-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/default-src-inline-allowed.sub.html deleted file mode 100644 index f5859087a29..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/default-src-inline-allowed.sub.html +++ /dev/null @@ -1,26 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>default-src-inline-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["PASS 1 of 2","PASS 2 of 2"]'></script> - <!-- enforcing policy: -default-src 'self' about: 'unsafe-inline'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body onload="alert_assert('PASS 2 of 2')"> - <script> - alert_assert('PASS 1 of 2'); - - </script> - <!--iframe src="javascript:alert_assert('PASS 2 of 3')"></iframe--> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/default-src-inline-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/default-src-inline-allowed.sub.html.sub.headers deleted file mode 100644 index f223f066176..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/default-src-inline-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: default-src-inline-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: default-src 'self' about: 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/default-src-inline-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/default-src-inline-blocked.sub.html deleted file mode 100644 index ad66a9d1f44..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/default-src-inline-blocked.sub.html +++ /dev/null @@ -1,27 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>default-src-inline-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <!-- enforcing policy: -default-src 'self'; connect-src 'self'; ---> -</head> - -<body> - This test passes if the inline scripts don't create failing tests and a CSP report is sent. - <script> - test(function() { - assert_unreached('FAIL inline script ran') - }); - - </script> - <script src="resources/document-write-alert-fail.js"></script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=default-src%20'self'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/default-src-inline-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/default-src-inline-blocked.sub.html.sub.headers deleted file mode 100644 index 63ea706f955..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/default-src-inline-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: default-src-inline-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: default-src 'self'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/duplicate-directive.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/duplicate-directive.sub.html deleted file mode 100644 index 4336b729b28..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/duplicate-directive.sub.html +++ /dev/null @@ -1,29 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>duplicate-directive</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["PASS (1/1)"]'></script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'unsafe-inline'; script-src 'none'; connect-src 'self'; ---> - - <script> - alert_assert('PASS (1/1)'); - - </script> -</head> - -<body> - <p> - This tests the effect of duplicated directives. It passes if the alert_assert() is executed. - </p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/duplicate-directive.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/duplicate-directive.sub.html.sub.headers deleted file mode 100644 index eefd7197f0f..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/duplicate-directive.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: duplicate-directive={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline' 'unsafe-inline'; script-src 'none'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-allowed.sub.html deleted file mode 100644 index 88da806a895..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-allowed.sub.html +++ /dev/null @@ -1,29 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>eval-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["PASS (1 of 2)","PASS (2 of 2)"]'></script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'unsafe-inline' 'unsafe-eval'; connect-src 'self'; ---> -</head> - -<body> - <script> - eval("alert_assert('PASS (1 of 2)')"); - - </script> - <script> - window.eval("alert_assert('PASS (2 of 2)')"); - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-allowed.sub.html.sub.headers deleted file mode 100644 index 6bf55a116ea..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: eval-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline' 'unsafe-inline' 'unsafe-eval'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-blocked-and-sends-report.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-blocked-and-sends-report.sub.html deleted file mode 100644 index 599b01c3138..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-blocked-and-sends-report.sub.html +++ /dev/null @@ -1,29 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>eval-blocked-and-sends-report</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS: eval() blocked."]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'self'; report-uri resources/save-report.php?test=eval-blocked-and-sends-report.html; connect-src 'self'; ---> -</head> - -<body> - <script> - try { - eval("alert_assert('FAIL')"); - } catch (e) { - log('PASS: eval() blocked.'); - } - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=script-src%20'self'%20'unsafe-inline'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-blocked-and-sends-report.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-blocked-and-sends-report.sub.html.sub.headers deleted file mode 100644 index f197e41de3a..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-blocked-and-sends-report.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: eval-blocked-and-sends-report={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-blocked-in-about-blank-iframe.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-blocked-in-about-blank-iframe.sub.html deleted file mode 100644 index 449f9d1927b..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-blocked-in-about-blank-iframe.sub.html +++ /dev/null @@ -1,10 +0,0 @@ - -<iframe src="about:blank"></iframe> -Eval should be blocked in the iframe, but inline script should be allowed. -<script> - window.onload = function() { - frames[0].log("<script>alert_assert(/PASS/); eval('alert_assert(/FAIL/);');<\/script>"); - frames[0].document.close(); - } - -</script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-blocked-in-about-blank-iframe.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-blocked-in-about-blank-iframe.sub.html.sub.headers deleted file mode 100644 index 224f25ba7b5..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-blocked-in-about-blank-iframe.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: eval-blocked-in-about-blank-iframe={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-blocked.sub.html deleted file mode 100644 index 229667e7d66..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-blocked.sub.html +++ /dev/null @@ -1,37 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>eval-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS EvalError","PASS EvalError"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - <script> - try { - eval("alert_assert('FAIL (1 of 2)')"); - } catch (e) { - log("PASS EvalError"); - } - - </script> - <script> - try { - window.eval("alert_assert('FAIL (1 of 2)')"); - } catch (e) { - log("PASS EvalError"); - } - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=script-src%20'unsafe-inline'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-blocked.sub.html.sub.headers deleted file mode 100644 index 124f56bfad3..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: eval-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setInterval-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setInterval-allowed.sub.html deleted file mode 100644 index 66fa95d31e2..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setInterval-allowed.sub.html +++ /dev/null @@ -1,31 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>eval-scripts-setInterval-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["PASS 1 of 2","PASS 2 of 2"]'></script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'unsafe-inline' 'unsafe-eval'; connect-src 'self'; ---> -</head> -<pre> -<script> - { -} -var id_string = setInterval("clearInterval(id_string); alert_assert('PASS 1 of 2')", 0); -if (id_string == 0) - log('FAIL: Return value for string (should not be 0): ' + id_string); -var id_function = setInterval(function() { - clearInterval(id_function); - alert_assert('PASS 2 of 2'); -}, 0); -if (id_function == 0) - document.write('FAIL: Return value for function (should not be 0): ' + id_function); -</script> -</pre> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setInterval-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setInterval-allowed.sub.html.sub.headers deleted file mode 100644 index f13ba4c644e..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setInterval-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: eval-scripts-setInterval-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline' 'unsafe-inline' 'unsafe-eval'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setInterval-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setInterval-blocked.sub.html deleted file mode 100644 index 45d873c8027..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setInterval-blocked.sub.html +++ /dev/null @@ -1,31 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>eval-scripts-setInterval-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["PASS"]'></script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; ---> -</head> -<pre> -<script> - { -} -var id = setInterval("alert_assert('FAIL')", 0); -if (id != 0) - log('FAIL: Return value for string (should be 0): ' + id); -var id = setInterval(function() { - clearInterval(id); - alert_assert('PASS'); -}, 0); -if (id == 0) - document.write('FAIL: Return value for function (should not be 0): ' + id); -</script> -</pre> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setInterval-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setInterval-blocked.sub.html.sub.headers deleted file mode 100644 index 1bd6b636db1..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setInterval-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: eval-scripts-setInterval-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setTimeout-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setTimeout-allowed.sub.html deleted file mode 100644 index 9b2e595e5d4..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setTimeout-allowed.sub.html +++ /dev/null @@ -1,30 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>eval-scripts-setTimeout-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["PASS 1 of 2","PASS 2 of 2"]'></script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'unsafe-inline' 'unsafe-eval'; connect-src 'self'; ---> -</head> -<pre> -<script> - { -} -var id = setTimeout("alert_assert('PASS 1 of 2')", 0); -if (id == 0) - log('FAIL: Return value for string (should not be 0): ' + id); -var id = setTimeout(function() { - alert_assert('PASS 2 of 2'); -}, 0); -if (id == 0) - document.write('FAIL: Return value for function (should not be 0): ' + id); -</script> -</pre> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setTimeout-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setTimeout-allowed.sub.html.sub.headers deleted file mode 100644 index 4d664d600b9..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setTimeout-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: eval-scripts-setTimeout-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline' 'unsafe-inline' 'unsafe-eval'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setTimeout-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setTimeout-blocked.sub.html deleted file mode 100644 index 72ed2ce1a37..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setTimeout-blocked.sub.html +++ /dev/null @@ -1,30 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>eval-scripts-setTimeout-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["PASS"]'></script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; ---> -</head> -<pre> -<script> - { -} -var id = setTimeout("alert_assert('FAIL')", 0); -if (id != 0) - log('FAIL: Return value for string (should be 0): ' + id); -var id = setTimeout(function() { - alert_assert('PASS'); -}, 0); -if (id == 0) - document.write('FAIL: Return value for function (should not be 0): ' + id); -</script> -</pre> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setTimeout-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setTimeout-blocked.sub.html.sub.headers deleted file mode 100644 index 81537fe3ebb..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/eval-scripts-setTimeout-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: eval-scripts-setTimeout-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/filesystem-urls-do-not-match-self.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/filesystem-urls-do-not-match-self.sub.html deleted file mode 100644 index f9e814a1e3b..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/filesystem-urls-do-not-match-self.sub.html +++ /dev/null @@ -1,62 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>filesystem-urls-do-not-match-self</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'self'; connect-src 'self'; ---> -</head> - -<body> - <p> - filesystem: URLs are same-origin with the page in which they were created, but explicitly do not match the 'self' or '*' source in CSP directives because they are more akin to 'unsafe-inline' content.. - </p> - <script> - if(!window.webkitRequestFileSystem) { - t_log = async_test(); - t_log.set_status(t_log.NOTRUN, "No filesystem:// support, cannot run test."); - t_log.phase = t_log.phases.HAS_RESULT; - t_log.done(); - } else { - function fail() { - alert_assert("FAIL!"); - } - window.webkitRequestFileSystem( - TEMPORARY, 1024 * 1024 /*1MB*/ , function(fs) { - fs.root.getFile('fail.js', { - create: true - }, function(fileEntry) { - fileEntry.createWriter(function(fileWriter) { - fileWriter.onwriteend = function(e) { - var script = document.createElement('script'); - script.src = fileEntry.toURL('application/javascript'); - document.body.appendChild(script); - }; - // Create a new Blob and write it to pass.js. - var b = new Blob(['fail();'], { - type: 'application/javascript' - }); - fileWriter.write(b); - }); - }); - }); - var s = document.createElement('script'); - s.async = true; - s.defer = true; - s.src = "../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=script-src%20'self'%20'unsafe-inline'%20'*'" - document.lastChild.appendChild(s); - } - - - </script> - <div id="log"></div> - -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/filesystem-urls-do-not-match-self.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/filesystem-urls-do-not-match-self.sub.html.sub.headers deleted file mode 100644 index a68e2a3df3b..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/filesystem-urls-do-not-match-self.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: filesystem-urls-do-not-match-self={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/filesystem-urls-match-filesystem.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/filesystem-urls-match-filesystem.sub.html deleted file mode 100644 index 99e8592e593..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/filesystem-urls-match-filesystem.sub.html +++ /dev/null @@ -1,59 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>filesystem-urls-match-filesystem</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS (1/1)"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'unsafe-inline' 'self'; connect-src 'self'; ---> -</head> - -<body> - <p> - filesystem: URLs are same-origin with the page in which they were created, but explicitly do not match the 'self' or '*' source in CSP directives because they are more akin to 'unsafe-inline' content, but should match filesystem: source. - </p> - <script> - if(!window.webkitRequestFileSystem) { - t_log.set_status(t_log.NOTRUN, "No filesystem:// support, cannot run test."); - t_log.phase = t_log.phases.HAS_RESULT; - t_log.done(); - } else { - function pass() { - log("PASS (1/1)"); - } - window.webkitRequestFileSystem( - TEMPORARY, 1024 * 1024 /*1MB*/ , function(fs) { - fs.root.getFile('pass.js', { - create: true - }, function(fileEntry) { - fileEntry.createWriter(function(fileWriter) { - fileWriter.onwriteend = function(e) { - var script = document.createElement('script'); - script.src = fileEntry.toURL('application/javascript'); - document.body.appendChild(script); - }; - // Create a new Blob and write it to pass.js. - var b = new Blob(['pass();'], { - type: 'application/javascript' - }); - fileWriter.write(b); - }); - }); - }); - var s = document.createElement('script'); - s.async = true; - s.defer = true; - s.src = "../support/checkReport.sub.js?reportExists=false" - document.lastChild.appendChild(s); - } - - </script> - <div id="log"></div> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/filesystem-urls-match-filesystem.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/filesystem-urls-match-filesystem.sub.html.sub.headers deleted file mode 100644 index f9956ede828..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/filesystem-urls-match-filesystem.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: filesystem-urls-match-filesystem={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline' filesystem:; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-about-blank-allowed-by-default.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-about-blank-allowed-by-default.sub.html deleted file mode 100644 index a363ce9116f..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-about-blank-allowed-by-default.sub.html +++ /dev/null @@ -1,24 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>frame-src-about-blank-allowed-by-default</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - - <!-- enforcing policy: -frame-src 'none'; object-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> - <p>These frames should not be blocked by Content-Security-Policy. - It's pointless to block about:blank iframes because - blocking a frame just results in displaying about:blank anyway! - </p> - <iframe src="about:blank"></iframe> - <object type="text/html" data="about:blank"></object> - - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-about-blank-allowed-by-default.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-about-blank-allowed-by-default.sub.html.sub.headers deleted file mode 100644 index ba1169956a3..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-about-blank-allowed-by-default.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: frame-src-about-blank-allowed-by-default={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: frame-src 'none'; object-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-about-blank-allowed-by-scheme.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-about-blank-allowed-by-scheme.sub.html deleted file mode 100644 index e4c47392c25..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-about-blank-allowed-by-scheme.sub.html +++ /dev/null @@ -1,20 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>frame-src-about-blank-allowed-by-scheme</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - - <!-- enforcing policy: -frame-src about:; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> - <p>This frame should not be blocked by Content-Security-Policy. - </p> - <iframe src="about:blank"></iframe> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-about-blank-allowed-by-scheme.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-about-blank-allowed-by-scheme.sub.html.sub.headers deleted file mode 100644 index e23b82a937b..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-about-blank-allowed-by-scheme.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: frame-src-about-blank-allowed-by-scheme={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: frame-src about:; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-allowed.sub.html deleted file mode 100644 index 1d34679c8d0..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-allowed.sub.html +++ /dev/null @@ -1,63 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <title>frame-src-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS IFrame %231 generated a load event."]'></script> - <script> - window.addEventListener("message", function(event) { - alert_assert(event.data); - }, false); - - var t_alert = async_test('Expecting alerts: ["PASS"]'); - var expected_alerts = ["PASS"]; - - function alert_assert(msg) { - t_alert.step(function() { - if (msg.match(/^FAIL/i)) { - assert_unreached(msg); - t_alert.done(); - } - for (var i = 0; i < expected_alerts.length; i++) { - if (expected_alerts[i] == msg) { - assert_true(expected_alerts[i] == msg); - expected_alerts.splice(i, 1); - if (expected_alerts.length == 0) { - t_alert.done(); - } - return; - } - } - assert_unreached('unexpected alert: ' + msg); - t_log.done(); - }); - } - - </script> - <!-- enforcing policy: -Content-Security-Policy: frame-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> - <p> - This iframe should be allowed. - </p> - <script> - window.wasPostTestScriptParsed = true; - var loads = 0; - - function loadEvent() { - loads++; - log("PASS " + "IFrame #" + loads + " generated a load event."); - } - - </script> -</head> - -<body> - <iframe src="/content-security-policy/blink-contrib/resources/postmessage-pass.html" onload="loadEvent()"></iframe> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-allowed.sub.html.sub.headers deleted file mode 100644 index 05247b4024d..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: frame-src-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: frame-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-blocked.sub.html deleted file mode 100644 index fe7555aebb5..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-blocked.sub.html +++ /dev/null @@ -1,61 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>frame-src-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS IFrame %231 generated a load event."]'></script> - <script> - window.addEventListener("message", function(event) { - alert_assert(event.data); - }, false); - - function alert_assert(msg) { - t_alert.step(function() { - if (msg.match(/^FAIL/i)) { - assert_unreached(msg); - t_alert.done(); - } - for (var i = 0; i < expected_alerts.length; i++) { - if (expected_alerts[i] == msg) { - assert_true(expected_alerts[i] == msg); - expected_alerts.splice(i, 1); - if (expected_alerts.length == 0) { - t_alert.done(); - } - return; - } - } - assert_unreached('unexpected alert: ' + msg); - t_log.done(); - }); - } - - </script> - <!-- enforcing policy: -frame-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> - <p> - IFrames blocked by CSP should generate a 'load', not 'error' event, regardless of blocked state. This means they appear to be normal cross-origin loads, thereby not leaking URL information directly to JS. - </p> - <script> - window.wasPostTestScriptParsed = true; - var loads = 0; - - function loadEvent() { - loads++; - log("PASS " + "IFrame #" + loads + " generated a load event."); - } - - </script> -</head> - -<body> - <iframe src="/content-security-policy/blink-contrib/resources/postmessage-fail.html" onload="loadEvent()" onerror="log('FAIL')"></iframe> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=frame-src%20'none'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-blocked.sub.html.sub.headers deleted file mode 100644 index bd0e6d17f32..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: frame-src-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: frame-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-cross-origin-load.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-cross-origin-load.sub.html deleted file mode 100644 index 5238e7c0f9d..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-cross-origin-load.sub.html +++ /dev/null @@ -1,66 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>frame-src-cross-origin-load</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS IFrame %231 generated a load event.","PASS IFrame %232 generated a load event.","PASS IFrame %233 generated a load event."]'></script> - <script> - window.addEventListener("message", function(event) { - alert_assert(event.data); - }, false); - - var t_alert = async_test('Expecting alerts: ["PASS","PASS"]'); - var expected_alerts = ["PASS", "PASS"]; - - function alert_assert(msg) { - t_alert.step(function() { - if (msg.match(/^FAIL/i)) { - assert_unreached(msg); - t_alert.done(); - } - for (var i = 0; i < expected_alerts.length; i++) { - if (expected_alerts[i] == msg) { - assert_true(expected_alerts[i] == msg); - expected_alerts.splice(i, 1); - if (expected_alerts.length == 0) { - t_alert.done(); - } - return; - } - } - assert_unreached('unexpected alert: ' + msg); - t_alert.done(); - }); - } - - </script> - <!-- enforcing policy: -frame-src 'self' http://www1.{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> - <p> - IFrames blocked by CSP should generate a 'load', not 'error' event, regardless of blocked state. This means they appear to be normal cross-origin loads, thereby not leaking URL information directly to JS. - </p> - <script> - window.wasPostTestScriptParsed = true; - var loads = 0; - - function loadEvent() { - loads++; - log("PASS " + "IFrame #" + loads + " generated a load event."); - } - - </script> -</head> - -<body> - <iframe src="resources/postmessage-pass.html" onload="loadEvent()"></iframe> - <iframe src="http://www1.{{host}}:{{ports[http][0]}}/content-security-policy/blink-contrib/resources/postmessage-pass.html" onload="loadEvent()"></iframe> - <iframe src="http://www2.{{host}}:{{ports[http][0]}}/content-security-policy/blink-contrib/resources/postmessage-fail.html" onload="loadEvent()" onerror="log('FAIL')"></iframe> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=frame-src%20'self'http://www1.{{host}}:{{ports[http][0]}}"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-cross-origin-load.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-cross-origin-load.sub.html.sub.headers deleted file mode 100644 index 0970bbebf3a..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/frame-src-cross-origin-load.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: frame-src-cross-origin-load={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: frame-src 'self' http://www1.{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/function-constructor-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/function-constructor-allowed.sub.html deleted file mode 100644 index 92cd088c52f..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/function-constructor-allowed.sub.html +++ /dev/null @@ -1,25 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>function-constructor-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["PASS"]'></script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'unsafe-inline' 'unsafe-eval'; connect-src 'self'; ---> -</head> - -<body> - <script> - (new Function("alert_assert('PASS')"))(); - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/function-constructor-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/function-constructor-allowed.sub.html.sub.headers deleted file mode 100644 index dd80ebaccb4..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/function-constructor-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: function-constructor-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline' 'unsafe-inline' 'unsafe-eval'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/function-constructor-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/function-constructor-blocked.sub.html deleted file mode 100644 index be0c574776e..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/function-constructor-blocked.sub.html +++ /dev/null @@ -1,29 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>function-constructor-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS EvalError"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - <script> - try { - (new Function("alert_assert('FAIL')"))(); - } catch (e) { - log("PASS EvalError"); - } - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=script-src%20'unsafe-inline'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/function-constructor-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/function-constructor-blocked.sub.html.sub.headers deleted file mode 100644 index eb7da39cb91..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/function-constructor-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: function-constructor-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/icon-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/icon-allowed.sub.html deleted file mode 100644 index 8bacdd30594..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/icon-allowed.sub.html +++ /dev/null @@ -1,19 +0,0 @@ -<!DOCTYPE html> -<html> -<script> - {} - - function createLink(rel, src) { - var link = document.createElement('link'); - link.rel = rel; - link.href = src; - document.head.appendChild(link); - } - window.addEventListener('DOMContentLoaded', function() { - createLink('icon', 'http://localhost/foo?q=from_icon'); {} - }); - -</script> -<p>Use callbacks to show that favicons are loaded as allowed by CSP when link tags are dynamically added to the page.</p> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/icon-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/icon-allowed.sub.html.sub.headers deleted file mode 100644 index b7d557b52ed..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/icon-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: icon-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: img-src http://localhost; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/icon-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/icon-blocked.sub.html deleted file mode 100644 index 978f25f63d1..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/icon-blocked.sub.html +++ /dev/null @@ -1,17 +0,0 @@ -<!DOCTYPE html> -<html> -<script> - function createLink(rel, src) { - var link = document.createElement('link'); - link.rel = rel; - link.href = src; - document.head.appendChild(link); - } - window.addEventListener('DOMContentLoaded', function() { - createLink('icon', 'http://localhost/foo?q=from_icon'); {} - }); - -</script> -<p>Use callbacks to show that favicons are not loaded in violation of CSP when link tags are dynamically added to the page.</p> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/icon-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/icon-blocked.sub.html.sub.headers deleted file mode 100644 index c4dc69985ca..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/icon-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: icon-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: img-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/iframe-inside-csp.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/iframe-inside-csp.sub.html deleted file mode 100644 index f3d1e142415..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/iframe-inside-csp.sub.html +++ /dev/null @@ -1 +0,0 @@ -<iframe src="resources/sandboxed-eval.php"></iframe> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/iframe-inside-csp.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/iframe-inside-csp.sub.html.sub.headers deleted file mode 100644 index 2cb1c72149c..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/iframe-inside-csp.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: iframe-inside-csp={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline' 'self'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/image-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/image-allowed.sub.html deleted file mode 100644 index c087692db9a..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/image-allowed.sub.html +++ /dev/null @@ -1,22 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>image-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["PASS"]'></script> - <!-- enforcing policy: -img-src *; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - <img src="../support/pass.png" onload="alert_assert(this.width == 168 ? 'PASS' : 'FAIL')"> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/image-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/image-allowed.sub.html.sub.headers deleted file mode 100644 index 3b85fc689b2..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/image-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: image-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: img-src *; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/image-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/image-blocked.sub.html deleted file mode 100644 index e572070ef6e..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/image-blocked.sub.html +++ /dev/null @@ -1,23 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>image-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["PASS"]'></script> - <!-- enforcing policy: -img-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - This test passes if it doesn't alert FAIL and does alert PASS. - <img src="../support/pass.png" onload='alert_assert("FAIL")' onerror='alert_assert("PASS")'> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=img-src%20'none'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/image-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/image-blocked.sub.html.sub.headers deleted file mode 100644 index c58bb88bb37..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/image-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: image-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: img-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/image-full-host-wildcard-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/image-full-host-wildcard-allowed.sub.html deleted file mode 100644 index 6482654cdf3..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/image-full-host-wildcard-allowed.sub.html +++ /dev/null @@ -1,22 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>image-full-host-wildcard-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["PASS"]'></script> - <!-- enforcing policy: -img-src http://*.{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - <img src="http://www1.{{host}}:{{ports[http][0]}}/content-security-policy/support/pass.png" onload="alert_assert(this.width == 168 ? 'PASS' : 'FAIL')"> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/image-full-host-wildcard-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/image-full-host-wildcard-allowed.sub.html.sub.headers deleted file mode 100644 index 0f384f0931d..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/image-full-host-wildcard-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: image-full-host-wildcard-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: img-src http://*.{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-script-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-script-allowed.sub.html deleted file mode 100644 index 8ec6fe43303..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-script-allowed.sub.html +++ /dev/null @@ -1,22 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>injected-inline-script-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["Pass 1 of 2","Pass 2 of 2"]'></script> - <!-- enforcing policy: - script-src 'self' 'unsafe-inline'; connect-src 'self'; - --> -</head> - -<body> - <script src="resources/inject-script.js"></script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-script-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-script-allowed.sub.html.sub.headers deleted file mode 100644 index 7f345392489..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-script-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: injected-inline-script-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-script-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-script-blocked.sub.html deleted file mode 100644 index bee3f9abd54..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-script-blocked.sub.html +++ /dev/null @@ -1,20 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>injected-inline-script-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <!-- enforcing policy: -script-src 'self'; connect-src 'self'; ---> -</head> - -<body> - <script src="resources/inject-script.js"></script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=script-src%20'self'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-script-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-script-blocked.sub.html.sub.headers deleted file mode 100644 index e90dec673c0..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-script-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: injected-inline-script-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-style-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-style-allowed.sub.html deleted file mode 100644 index f52289e4964..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-style-allowed.sub.html +++ /dev/null @@ -1,35 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>injected-inline-style-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS: 2 stylesheets on the page."]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -style-src 'unsafe-inline'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - <div id="test1"> - FAIL 1/2 - </div> - <div id="test2"> - FAIL 2/2 - </div> - <script src="resources/inject-style.js"></script> - <script> - if (document.styleSheets.length === 2) - log("PASS: 2 stylesheets on the page."); - else - document.write("FAIL: " + document.styleSheets.length + " stylesheets on the page (should be 2)."); - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-style-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-style-allowed.sub.html.sub.headers deleted file mode 100644 index 8a48dc2487b..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-style-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: injected-inline-style-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: style-src 'unsafe-inline'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-style-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-style-blocked.sub.html deleted file mode 100644 index 1ed46cb6532..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-style-blocked.sub.html +++ /dev/null @@ -1,32 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>injected-inline-style-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -style-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - <div id="test1"> - PASS 1/2 - </div> - <div id="test2"> - PASS 2/2 - </div> - <script src="resources/inject-style.js"></script> - <script> - log(document.styleSheets.length == 0 ? "PASS" : "FAIL"); - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=style-src%20'none'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-style-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-style-blocked.sub.html.sub.headers deleted file mode 100644 index d3f0a5efb85..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/injected-inline-style-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: injected-inline-style-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: style-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-allowed-while-cloning-objects.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-allowed-while-cloning-objects.sub.html deleted file mode 100644 index efb5043ade4..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-allowed-while-cloning-objects.sub.html +++ /dev/null @@ -1,128 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>inline-style-allowed-while-cloning-objects</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -style-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> - <script> - window.onload = function() { - window.nodes = document.getElementById('nodes'); - window.node1 = document.getElementById('node1'); - window.node1.style.background = "yellow"; - window.node1.style.color = "red"; - window.node2 = document.getElementById('node1').cloneNode(true); - window.node2.id = "node2"; - window.node3 = document.getElementById('node3'); - window.node3.style.background = "blue"; - window.node3.style.color = "green"; - window.node4 = document.getElementById('node3').cloneNode(false); - window.node4.id = "node4"; - window.node4.innerHTML = "Node #4"; - nodes.appendChild(node1); - nodes.appendChild(node2); - nodes.appendChild(node3); - nodes.appendChild(node4); - test(function() { - assert_equals(node1.style.background.match(/yellow/)[0], "yellow") - }); - test(function() { - assert_equals(node2.style.background.match(/yellow/)[0], "yellow") - }); - test(function() { - assert_equals(node3.style.background.match(/blue/)[0], "blue") - }); - test(function() { - assert_equals(node4.style.background.match(/blue/)[0], "blue") - }); - test(function() { - assert_equals(node1.style.color, "red") - }); - test(function() { - assert_equals(node2.style.color, "red") - }); - test(function() { - assert_equals(node3.style.color, "green") - }); - test(function() { - assert_equals(node4.style.color, "green") - }); - test(function() { - assert_equals(window.getComputedStyle(node1).background, window.getComputedStyle(node2).background) - }); - test(function() { - assert_equals(window.getComputedStyle(node3).background, window.getComputedStyle(node4).background) - }); - test(function() { - assert_equals(window.getComputedStyle(node1).color, window.getComputedStyle(node2).color) - }); - test(function() { - assert_equals(window.getComputedStyle(node3).color, window.getComputedStyle(node4).color) - }); - window.ops = document.getElementById('ops'); - ops.style.color = 'red'; - window.clonedOps = ops.cloneNode(true); - window.violetOps = document.getElementById('violetOps'); - violetOps.style.background = 'rgb(238, 130, 238)'; - document.getElementsByTagName('body')[0].appendChild(clonedOps); - test(function() { - assert_equals(ops.style.background, "") - }); - test(function() { - assert_equals(ops.style.color, "red") - }); - test(function() { - assert_equals(clonedOps.style.background, "") - }); - test(function() { - assert_equals(violetOps.style.background.match(/rgb\(238, 130, 238\)/)[0], "rgb(238, 130, 238)") - }); - test(function() { - assert_equals(window.getComputedStyle(clonedOps).background, window.getComputedStyle(ops).background) - }); - test(function() { - assert_equals(window.getComputedStyle(clonedOps).color, window.getComputedStyle(ops).color) - }); - test(function() { - assert_equals(window.getComputedStyle(ops).background, window.getComputedStyle(violetOps).background) - }); - test(function() { - assert_equals(window.getComputedStyle(clonedOps).background, window.getComputedStyle(violetOps).background) - }); - test(function() { - assert_equals(ops.id, "ops") - }); - test(function() { - assert_equals(ops.id, clonedOps.id) - }); - }; - - </script> -</head> - -<body> - <p> - This test ensures that styles can be set by object.cloneNode() - </p> - <div id="nodes"> - This is a div (nodes) - <div id="node1"> This is a div. (node 1 or 2)</div> - <div id="node3"> This is a div. (node 3 or 4)</div> - </div> - <div id="ops" style="background: rgb(238, 130, 238)"> - Yet another div. - </div> - <div id="violetOps"> - Yet another div. - </div> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=style-src%20'self'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-allowed-while-cloning-objects.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-allowed-while-cloning-objects.sub.html.sub.headers deleted file mode 100644 index 963fa175175..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-allowed-while-cloning-objects.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: inline-style-allowed-while-cloning-objects={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: style-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-allowed.sub.html deleted file mode 100644 index bf5ac125d25..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-allowed.sub.html +++ /dev/null @@ -1,31 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>inline-style-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -style-src 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; ---> - <style> - .target { - background-color: blue; - } - - </style> -</head> - -<body class="target"> - <script> - log(document.styleSheets.length > 0 ? 'PASS' : 'FAIL'); - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-allowed.sub.html.sub.headers deleted file mode 100644 index 8ff58f55f2c..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: inline-style-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: style-src 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-attribute-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-attribute-allowed.sub.html deleted file mode 100644 index ab446040a60..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-attribute-allowed.sub.html +++ /dev/null @@ -1,25 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>inline-style-attribute-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -style-src 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body style="background-color: blue;"> - <script> - log(document.body.style.length > 0 ? 'PASS' : 'FAIL'); - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-attribute-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-attribute-allowed.sub.html.sub.headers deleted file mode 100644 index 7d765e2b698..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-attribute-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: inline-style-attribute-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: style-src 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-attribute-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-attribute-blocked.sub.html deleted file mode 100644 index 90efe9fe7e1..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-attribute-blocked.sub.html +++ /dev/null @@ -1,25 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>inline-style-attribute-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -style-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body style="background-color: blue;"> - <script> - log(document.body.style.length > 0 ? 'FAIL' : 'PASS'); - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=style-src%20'none'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-attribute-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-attribute-blocked.sub.html.sub.headers deleted file mode 100644 index 0b1ec14c1df..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-attribute-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: inline-style-attribute-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: style-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-attribute-on-html.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-attribute-on-html.sub.html deleted file mode 100644 index b002af987d4..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-attribute-on-html.sub.html +++ /dev/null @@ -1,28 +0,0 @@ -<!DOCTYPE html> -<html style="background-color: blue;"> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <meta http-equiv="Content-Security-Policy" content="style-src 'self'"> - <title>inline-style-attribute-on-html</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -style-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - <p>Even though this page has a CSP policy the blocks inline style, the style attribute on the HTML element still takes effect because it preceeds the meta element. - </p> - <script> - log(document.documentElement.style.length > 0 ? 'PASS' : 'FAIL'); - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-attribute-on-html.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-attribute-on-html.sub.html.sub.headers deleted file mode 100644 index 66bf93faa1c..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-attribute-on-html.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: inline-style-attribute-on-html={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-blocked.sub.html deleted file mode 100644 index 3f7756e4498..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-blocked.sub.html +++ /dev/null @@ -1,31 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>inline-style-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -style-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; ---> - <style> - .target { - background-color: blue; - } - - </style> -</head> - -<body class="target"> - <script> - log(document.styleSheets.length > 0 ? 'FAIL' : 'PASS'); - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=style-src%20'none'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-blocked.sub.html.sub.headers deleted file mode 100644 index 0b83063268d..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/inline-style-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: inline-style-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: style-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/manifest-src-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/manifest-src-allowed.sub.html.sub.headers deleted file mode 100644 index 3fbdc7337c6..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/manifest-src-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: manifest-src-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: manifest-src *; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/manifest-src-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/manifest-src-blocked.sub.html.sub.headers deleted file mode 100644 index 4d6e5e39564..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/manifest-src-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: manifest-src-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: manifest-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/media-src-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/media-src-allowed.sub.html deleted file mode 100644 index 4cb4002d978..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/media-src-allowed.sub.html +++ /dev/null @@ -1,14 +0,0 @@ -<video></video> -<script src="../../../media-resources/media-file.js"></script> -<script src="../../../media-resources/video-test.js"></script> -<script> - waitForEvent('loadedmetadata', function() { - alert_assert('PASS'); - endTestLater(); - }); - // Find a supported media file. - var mediaFile = findMediaFile("video", "content/test"); - var mimeType = mimeTypeForFile(mediaFile); - video.src = "http://{{host}}:{{ports[http][0]}}/resources/load-and-stall.cgi?name=../../../media/" + mediaFile + "&mimeType=" + mimeType + "&stallAt=100000"; - -</script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/media-src-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/media-src-allowed.sub.html.sub.headers deleted file mode 100644 index b0401f7c762..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/media-src-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: media-src-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: media-src http://{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/media-src-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/media-src-blocked.sub.html deleted file mode 100644 index 57c8d5f650b..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/media-src-blocked.sub.html +++ /dev/null @@ -1,15 +0,0 @@ -<video></video> -<script src="../../../media-resources/media-file.js"></script> -<script src="../../../media-resources/video-test.js"></script> -<p>This test passes if it doesn't alert failure.</p> -<script> - waitForEvent('loadedmetadata', function() { - alert_assert('FAIL'); - }); - addEventListener('load', endTestLater, false); - // Find a supported media file. - var mediaFile = findMediaFile("video", "content/test"); - var mimeType = mimeTypeForFile(mediaFile); - video.src = "http://{{host}}:{{ports[http][0]}}/resources/load-and-stall.cgi?name=../../../media/" + mediaFile + "&mimeType=" + mimeType + "&stallAt=100000"; - -</script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/media-src-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/media-src-blocked.sub.html.sub.headers deleted file mode 100644 index 86c56953dbc..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/media-src-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: media-src-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: media-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/media-src-track-block.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/media-src-track-block.sub.html deleted file mode 100644 index c8036ce174c..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/media-src-track-block.sub.html +++ /dev/null @@ -1,39 +0,0 @@ -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>media-src-track-block</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["PASS"]'></script> - <!-- enforcing policy: -media-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> - <script> - function loaded() { - alert_assert("FAIL"); - } - - function errored() { - alert_assert("PASS"); - } - - function start() { - var track = document.querySelector('track'); - track.track.mode = "hidden"; - track.setAttribute('src', 'resources/track.vtt'); - } - - </script> -</head> - -<body onload="start()"> - <video> - <track kind="captions" onload="loaded()" onerror="errored()"> - </video> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=media-src%20'none'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/media-src-track-block.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/media-src-track-block.sub.html.sub.headers deleted file mode 100644 index 85c496e74f3..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/media-src-track-block.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: media-src-track-block={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: media-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-in-svg-foreignobject.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-in-svg-foreignobject.sub.html deleted file mode 100644 index 358b7af1a7e..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-in-svg-foreignobject.sub.html +++ /dev/null @@ -1,28 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>object-in-svg-foreignobject</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -object-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - <p>This test ensures that objects inside SVG foreignobject elements are beholden to the same policy as the rest of the document. This test passes if there i a CSP violation saying the plugin was blocked.</p> - <svg> - <foreignobject> - <object xmlns="http://www.w3.org/1999/xhtml" data="/plugins/resources/mock-plugin.pl"> - </object> - </foreignobject> - </svg> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=object-src%20'none'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-in-svg-foreignobject.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-in-svg-foreignobject.sub.html.sub.headers deleted file mode 100644 index a196a15589e..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-in-svg-foreignobject.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: object-in-svg-foreignobject={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: object-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-no-url-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-no-url-allowed.sub.html deleted file mode 100644 index 2e2bef25d3e..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-no-url-allowed.sub.html +++ /dev/null @@ -1,23 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>object-src-no-url-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -object-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - This test passes if there isn't a CSP violation saying the plugin was blocked. - <object type="application/x-webkit-test-netscape"></object> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-no-url-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-no-url-allowed.sub.html.sub.headers deleted file mode 100644 index 3746103fe4a..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-no-url-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: object-src-no-url-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: object-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-no-url-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-no-url-blocked.sub.html deleted file mode 100644 index ad3eebcaeb5..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-no-url-blocked.sub.html +++ /dev/null @@ -1,23 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>object-src-no-url-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -object-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - This test passes if there is a CSP violation saying the plugin was blocked. - <object type="application/x-webkit-test-netscape"></object> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=object-src%20'none'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-no-url-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-no-url-blocked.sub.html.sub.headers deleted file mode 100644 index dba0ece704a..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-no-url-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: object-src-no-url-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: object-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-url-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-url-allowed.sub.html deleted file mode 100644 index dace2c417d6..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-url-allowed.sub.html +++ /dev/null @@ -1,23 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>object-src-url-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -object-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - This test passes if there is no CSP violation saying the plugin was blocked. - <object data="/content-security-policy/support/pass.png"></object> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-url-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-url-allowed.sub.html.sub.headers deleted file mode 100644 index bce19c1defc..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-url-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: object-src-url-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: object-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-url-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-url-blocked.sub.html deleted file mode 100644 index 4f12d747b01..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-url-blocked.sub.html +++ /dev/null @@ -1,23 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>object-src-url-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -object-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - This test passes if there is a CSP violation saying the plugin was blocked. - <object data="/plugins/resources/mock-plugin.pl"></object> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=object-src%20'none'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-url-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-url-blocked.sub.html.sub.headers deleted file mode 100644 index 1447fd0fce2..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/object-src-url-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: object-src-url-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: object-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/policy-does-not-affect-child.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/policy-does-not-affect-child.sub.html deleted file mode 100644 index a43e4be27c2..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/policy-does-not-affect-child.sub.html +++ /dev/null @@ -1 +0,0 @@ -<iframe src="resources/alert-pass.html"></iframe> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/policy-does-not-affect-child.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/policy-does-not-affect-child.sub.html.sub.headers deleted file mode 100644 index ff37e37ee6f..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/policy-does-not-affect-child.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: policy-does-not-affect-child={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline' 'self'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-blocked-data-uri.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-blocked-data-uri.sub.html deleted file mode 100644 index dea8a87a31b..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-blocked-data-uri.sub.html +++ /dev/null @@ -1,22 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>report-blocked-data-uri</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -img-src 'none'; report-uri resources/save-report.php?test=report-blocked-data-uri.html; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - <img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=img-src%20'none'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-blocked-data-uri.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-blocked-data-uri.sub.html.sub.headers deleted file mode 100644 index 8530a1cc4a1..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-blocked-data-uri.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: report-blocked-data-uri={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: img-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-cross-origin-no-cookies.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-cross-origin-no-cookies.sub.html deleted file mode 100644 index ed2cd2a742d..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-cross-origin-no-cookies.sub.html +++ /dev/null @@ -1,24 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>report-cross-origin-no-cookies</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -img-src 'none'; report-uri http://www1.{{host}}:{{ports[http][0]}}/content-security-policy/support/report.py?op=put&reportID=; script-src 'self' 'unsafe-inline' http://www1.{{host}}:{{ports[http][0]}}; connect-src 'self'; ---> - <script src="http://www1.{{host}}:{{ports[http][0]}}/content-security-policy/blink-contrib/resources/set-cookie.js"></script> -</head> - -<body> - <!-- This image will generate a CSP violation report. --> - <img src="resources/abe.png"> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=img-src%20'none'&noCookies=true"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-cross-origin-no-cookies.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-cross-origin-no-cookies.sub.html.sub.headers deleted file mode 100644 index 5a71229752e..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-cross-origin-no-cookies.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: report-cross-origin-no-cookies={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: img-src 'none'; script-src 'self' 'unsafe-inline' http://www1.{{host}}:{{ports[http][0]}}; connect-src 'self'; report-uri http://www1.{{host}}:{{ports[http][0]}}/content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-disallowed-from-meta.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-disallowed-from-meta.sub.html deleted file mode 100644 index cb001a22094..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-disallowed-from-meta.sub.html +++ /dev/null @@ -1,24 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>report-disallowed-from-meta</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["PASS"]'></script> - <!-- enforcing policy: -img-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> - <meta http-equiv="Content-Security-Policy" content="img-src 'none'; report-uri /content-security-policy/support/report.py?op=put&reportID=5ada7c32-1c46-4b79-a95f-af33fcf95f8e"> -</head> - -<body> - This image should be blocked, but should not show up in the violation report because meta policies MUST ignore report-uri. - <img src="../resources/abe.png" onerror="alert_assert('PASS')" onload="alert_assert('FAIL')"> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-disallowed-from-meta.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-disallowed-from-meta.sub.html.sub.headers deleted file mode 100644 index 4c620525a37..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-disallowed-from-meta.sub.html.sub.headers +++ /dev/null @@ -1,5 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: report-disallowed-from-meta=5ada7c32-1c46-4b79-a95f-af33fcf95f8e; Path=/content-security-policy/blink-contrib
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-same-origin-with-cookies.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-same-origin-with-cookies.sub.html deleted file mode 100644 index e90cb066b06..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-same-origin-with-cookies.sub.html +++ /dev/null @@ -1,24 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>report-cross-origin-no-cookies</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -img-src 'none'; report-uri http://www1.{{host}}:{{ports[http][0]}}/content-security-policy/support/report.py?op=put&reportID=; script-src 'self' 'unsafe-inline' http://www1.{{host}}:{{ports[http][0]}}; connect-src 'self'; ---> - <script src="/content-security-policy/blink-contrib/resources/set-cookie.js"></script> -</head> - -<body> - <!-- This image will generate a CSP violation report. --> - <img src="resources/abe.png"> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=img-src%20'none'&noCookies=true"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-same-origin-with-cookies.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-same-origin-with-cookies.sub.html.sub.headers deleted file mode 100644 index 4655de25482..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-same-origin-with-cookies.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: report-same-origin-with-cookies={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: img-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-uri-from-inline-javascript.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-uri-from-inline-javascript.sub.html deleted file mode 100644 index cf3f72f1e7d..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-uri-from-inline-javascript.sub.html +++ /dev/null @@ -1,28 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>report-uri-from-inline-javascript</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -img-src 'none'; report-uri resources/save-report.php?test=report-uri-from-inline-javascript.html; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - <script> - // This script block will trigger a violation report. - var i = document.createElement('img'); - i.src = 'resources/abe.png'; - document.body.appendChild(i); - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=img-src%20'none'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-uri-from-inline-javascript.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-uri-from-inline-javascript.sub.html.sub.headers deleted file mode 100644 index c37a9ff8d73..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-uri-from-inline-javascript.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: report-uri-from-inline-javascript={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: img-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-uri-from-javascript.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-uri-from-javascript.sub.html deleted file mode 100644 index 790a75bdad3..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-uri-from-javascript.sub.html +++ /dev/null @@ -1,22 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>report-uri-from-javascript</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -img-src 'none'; report-uri resources/save-report.php?test=report-uri-from-javascript.html; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body> - <script src="resources/inject-image.js"></script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=img-src%20'none'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-uri-from-javascript.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-uri-from-javascript.sub.html.sub.headers deleted file mode 100644 index ed6560118b6..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-uri-from-javascript.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: report-uri-from-javascript={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: img-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-uri.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-uri.sub.html deleted file mode 100644 index 9ffb835f2bf..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-uri.sub.html +++ /dev/null @@ -1,6 +0,0 @@ -<script src="resources/report-test.js"></script> -<script> - // This script block will trigger a violation report. - alert_assert('FAIL'); - -</script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-uri.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-uri.sub.html.sub.headers deleted file mode 100644 index 1416ea7f1d2..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/report-uri.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: report-uri={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline' 'self'; report-uri resources/save-report.php?test=report-uri.html; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/alert-fail.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/alert-fail.html deleted file mode 100644 index c0fb8173d50..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/alert-fail.html +++ /dev/null @@ -1,4 +0,0 @@ -<script> - alert('FAIL'); - -</script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/alert-pass.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/alert-pass.html deleted file mode 100644 index 50e753d0d32..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/alert-pass.html +++ /dev/null @@ -1,4 +0,0 @@ -<script> - alert('PASS'); - -</script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/blue.css b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/blue.css deleted file mode 100644 index 54aeecc12f5..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/blue.css +++ /dev/null @@ -1,3 +0,0 @@ -.target { - background-color: blue; -} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/generate-csp-report.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/generate-csp-report.html deleted file mode 100644 index 887f44f48b6..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/generate-csp-report.html +++ /dev/null @@ -1,7 +0,0 @@ -<meta http-equiv="Content-Security-Policy" content="script-src 'self'; report-uri save-report.php?test=generate-csp-report.html"> -<script> - // This script block will trigger a violation report. - alert('FAIL'); - -</script> -<script src="go-to-echo-report.js"></script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/go-to-echo-report.js b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/go-to-echo-report.js deleted file mode 100644 index 6dae030e009..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/go-to-echo-report.js +++ /dev/null @@ -1,7 +0,0 @@ -window.onload = function() { - var test = window.location.pathname.replace(/^.+\//, ''); - var match = window.location.search.match(/^\?test=([^&]+)/); - if (match) - test = match[1]; - window.location = "/security/contentSecurityPolicy/resources/echo-report.php?test=" + test; -} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/inject-image.js b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/inject-image.js deleted file mode 100644 index 1e1f93b394a..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/inject-image.js +++ /dev/null @@ -1,4 +0,0 @@ -// This script block will trigger a violation report. -var i = document.createElement('img'); -i.src = '/security/resources/abe.png'; -document.body.appendChild(i); diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/inject-script.js b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/inject-script.js deleted file mode 100644 index 15537198507..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/inject-script.js +++ /dev/null @@ -1,5 +0,0 @@ -document.write("<script>alert_assert('Pass 1 of 2');</script>"); - -var s = document.createElement('script'); -s.textContent = "alert_assert('Pass 2 of 2');"; -document.body.appendChild(s); diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/postmessage-fail.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/postmessage-fail.html deleted file mode 100644 index a0308ad98b4..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/postmessage-fail.html +++ /dev/null @@ -1,4 +0,0 @@ -<script> - window.parent.postMessage('FAIL', '*'); - -</script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/postmessage-pass.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/postmessage-pass.html deleted file mode 100644 index 700167b5db8..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/postmessage-pass.html +++ /dev/null @@ -1,4 +0,0 @@ -<script> - window.parent.postMessage('PASS', '*'); - -</script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/script.js b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/script.js deleted file mode 100644 index 54eaf530c59..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/script.js +++ /dev/null @@ -1,2 +0,0 @@ -var result = document.getElementById("result"); -result.firstChild.nodeValue = result.attributes.getNamedItem("text").value; diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/set-cookie.js.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/set-cookie.js.sub.headers deleted file mode 100644 index 1d5fbba1785..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/set-cookie.js.sub.headers +++ /dev/null @@ -1 +0,0 @@ -Set-Cookie: report-cookie=true
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/shared-worker-make-xhr-allowed.sub.js b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/shared-worker-make-xhr-allowed.sub.js deleted file mode 100644 index 28937d05dab..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/shared-worker-make-xhr-allowed.sub.js +++ /dev/null @@ -1,23 +0,0 @@ -onconnect = function (event) { - var port = event.ports[0]; - var xhr = new XMLHttpRequest; - xhr.onerror = function () { - port.postMessage("xhr blocked"); - port.postMessage("TEST COMPLETE"); - }; - xhr.onload = function () { - if (xhr.responseText == "FAIL") { - port.postMessage("xhr allowed"); - } else { - port.postMessage("xhr blocked"); - } - port.postMessage("TEST COMPLETE"); - }; - try { - xhr.open("GET", "/common/redirect.py?location=http://www1.{{host}}:{{ports[http][0]}}/content-security-policy/support/fail.asis", true); - xhr.send(); - } catch (e) { - port.postMessage("xhr blocked"); - port.postMessage("TEST COMPLETE"); - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/shared-worker-make-xhr-blocked.sub.js b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/shared-worker-make-xhr-blocked.sub.js deleted file mode 100644 index 28937d05dab..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/shared-worker-make-xhr-blocked.sub.js +++ /dev/null @@ -1,23 +0,0 @@ -onconnect = function (event) { - var port = event.ports[0]; - var xhr = new XMLHttpRequest; - xhr.onerror = function () { - port.postMessage("xhr blocked"); - port.postMessage("TEST COMPLETE"); - }; - xhr.onload = function () { - if (xhr.responseText == "FAIL") { - port.postMessage("xhr allowed"); - } else { - port.postMessage("xhr blocked"); - } - port.postMessage("TEST COMPLETE"); - }; - try { - xhr.open("GET", "/common/redirect.py?location=http://www1.{{host}}:{{ports[http][0]}}/content-security-policy/support/fail.asis", true); - xhr.send(); - } catch (e) { - port.postMessage("xhr blocked"); - port.postMessage("TEST COMPLETE"); - } -}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/simple-event-stream b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/simple-event-stream deleted file mode 100644 index e467657bcb2..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/simple-event-stream +++ /dev/null @@ -1 +0,0 @@ -data: hello diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/simple-event-stream.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/simple-event-stream.headers deleted file mode 100644 index 9bb8badcad4..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/simple-event-stream.headers +++ /dev/null @@ -1 +0,0 @@ -Content-Type: text/event-stream diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/track.vtt b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/track.vtt deleted file mode 100644 index 365e9ae150b..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/track.vtt +++ /dev/null @@ -1 +0,0 @@ -Subtitles! diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-importscripts.js b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-importscripts.js deleted file mode 100644 index 65ec6f44624..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-importscripts.js +++ /dev/null @@ -1,6 +0,0 @@ -try { - importScripts("/content-security-policy/blink-contrib/resources/post-message.js"); - postMessage("importScripts allowed"); -} catch (e) { - postMessage("importScripts blocked"); -} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-allow-scripts-subframe.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-allow-scripts-subframe.sub.html deleted file mode 100644 index c755504b160..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-allow-scripts-subframe.sub.html +++ /dev/null @@ -1,3 +0,0 @@ - -This test passes if it does alert pass. -<iframe src="data:text/html,<script>alert_assert('PASS');</script>"></iframe> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-allow-scripts-subframe.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-allow-scripts-subframe.sub.html.sub.headers deleted file mode 100644 index 4c79457285e..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-allow-scripts-subframe.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: sandbox-allow-scripts-subframe={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: sandbox allow-scripts; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-allow-scripts.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-allow-scripts.sub.html deleted file mode 100644 index 3bdaa12ea97..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-allow-scripts.sub.html +++ /dev/null @@ -1,6 +0,0 @@ - -This test passes if it does alert pass. -<script> - alert_assert('PASS'); - -</script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-allow-scripts.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-allow-scripts.sub.html.sub.headers deleted file mode 100644 index b6df57d1723..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-allow-scripts.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: sandbox-allow-scripts={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: sandbox allow-scripts; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-empty-subframe.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-empty-subframe.sub.html deleted file mode 100644 index 5ddccfaa30b..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-empty-subframe.sub.html +++ /dev/null @@ -1,3 +0,0 @@ - -This test passes if it doesn't alert fail. -<iframe src="data:text/html,<script>alert_assert('FAIL');</script>"></iframe> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-empty-subframe.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-empty-subframe.sub.html.sub.headers deleted file mode 100644 index 5287112d6cb..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-empty-subframe.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: sandbox-empty-subframe={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: sandbox; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-empty.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-empty.sub.html deleted file mode 100644 index 4e04e9875c2..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-empty.sub.html +++ /dev/null @@ -1,6 +0,0 @@ - -This test passes if it doesn't alert fail. -<script> - alert_assert('FAIL'); - -</script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-empty.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-empty.sub.html.sub.headers deleted file mode 100644 index f7d31c95942..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/sandbox-empty.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: sandbox-empty={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: sandbox; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/script-src-overrides-default-src.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/script-src-overrides-default-src.sub.html deleted file mode 100644 index cf4aab20189..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/script-src-overrides-default-src.sub.html +++ /dev/null @@ -1,25 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>script-src-overrides-default-src</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["PASS 1 of 2","PASS 2 of 2"]'></script> - <!-- enforcing policy: -default-src about:; script-src 'self' 'unsafe-inline' 'self' 'unsafe-inline'; connect-src 'self'; ---> -</head> - -<body onload="alert_assert('PASS 2 of 2')"> - <script> - alert_assert('PASS 1 of 2'); - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/script-src-overrides-default-src.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/script-src-overrides-default-src.sub.html.sub.headers deleted file mode 100644 index 5d3456433f1..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/script-src-overrides-default-src.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: script-src-overrides-default-src={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: default-src about:; script-src 'self' 'unsafe-inline'; style-src 'self'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/self-doesnt-match-blob.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/self-doesnt-match-blob.sub.html deleted file mode 100644 index 5f388622c41..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/self-doesnt-match-blob.sub.html +++ /dev/null @@ -1,49 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>worker-connect-src-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["TEST COMPLETE"]'></script> - <!-- enforcing policy: -connect-src 'self'; script-src 'self' 'unsafe-inline'; child-src 'self'; ---> - -</head> -<p>This test loads a worker, from a guid. - The worker should be blocked from loading with a child-src policy of 'self' - as the blob: scheme must be specified explicitly. - A report should be sent to the report-uri specified - with this resource.</p> -<body> - <script> - try { - var blob = new Blob([ - "postMessage('FAIL');" + - "postMessage('TEST COMPLETE');" - ], - {type : 'application/javascript'}); - var url = URL.createObjectURL(blob); - var worker = new Worker(url); - worker.onmessage = function(event) { - alert_assert(event.data); - }; - worker.onerror = function(event) { - alert_assert('TEST COMPLETE'); - event.preventDefault(); - } - } catch (e) { - alert_assert('TEST COMPLETE'); - } - function timeout() { - alert_assert('TEST COMPLETE'); - } - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=child-src%20'self'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/self-doesnt-match-blob.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/self-doesnt-match-blob.sub.html.sub.headers deleted file mode 100644 index 05843484b88..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/self-doesnt-match-blob.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: self-doesnt-match-blob={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: connect-src 'self'; script-src 'self' 'unsafe-inline'; child-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/shared-worker-connect-src-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/shared-worker-connect-src-allowed.sub.html deleted file mode 100644 index 17da111a84c..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/shared-worker-connect-src-allowed.sub.html +++ /dev/null @@ -1,43 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>shared-worker-connect-src-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["xhr allowed","TEST COMPLETE"]'></script> - <!-- enforcing policy: -connect-src 'self' http://{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline'; ---> - -</head> - -<body> - <script> - if(typeof SharedWorker != 'function') { - t_alert.set_status(t_alert.NOTRUN, "No SharedWorker, cannot run test."); - t_alert.phase = t_alert.phases.HAS_RESULT; - t_alert.done(); - } else { - try { - var worker = new SharedWorker('http://{{host}}:{{ports[http][0]}}/content-security-policy/blink-contrib/resources/shared-worker-make-xhr-allowed.sub.js'); - worker.port.onmessage = function(event) { - alert_assert(event.data); - }; - } catch (e) { - alert_assert(e); - } - var report = document.createElement("script"); - report.src = "../support/checkReport.sub.js?reportExists=false"; - report.async = true; - report.defer = true; - document.body.appendChild(report); - } - - </script> - <div id="log"></div> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/shared-worker-connect-src-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/shared-worker-connect-src-allowed.sub.html.sub.headers deleted file mode 100644 index eefff95c671..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/shared-worker-connect-src-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: shared-worker-connect-src-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: connect-src 'self' http://www1.{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/shared-worker-connect-src-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/shared-worker-connect-src-blocked.sub.html deleted file mode 100644 index 63225bf275e..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/shared-worker-connect-src-blocked.sub.html +++ /dev/null @@ -1,50 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>shared-worker-connect-src-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["xhr blocked","TEST COMPLETE"]'></script> - <!-- enforcing policy: -connect-src *; script-src 'self' 'unsafe-inline'; ---> - -</head> - -<body> - <p>This test loads a shared worker, delivered with its own - policy. The worker should be blocked from making an XHR - as that policy specifies a connect-src 'none', though - this resource's policy is connect-src *. No report - should be sent since the worker's policy doesn't specify - a report-uri.</p> - <script> - if(typeof SharedWorker != 'function') { - t_alert.set_status(t_alert.NOTRUN, "No SharedWorker, cannot run test."); - t_alert.phase = t_alert.phases.HAS_RESULT; - t_alert.done(); - } else { - try { - var worker = new SharedWorker('http://{{host}}:{{ports[http][0]}}/content-security-policy/blink-contrib/resources/shared-worker-make-xhr-blocked.sub.js'); - worker.port.onmessage = function(event) { - alert_assert(event.data); - }; - } catch (e) { - alert_assert(e); - } - var report = document.createElement("script"); - report.src = "../support/checkReport.sub.js?reportExists=false"; - report.async = true; - report.defer = true; - document.body.appendChild(report); - } - - - </script> - <div id="log"></div> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/shared-worker-connect-src-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/shared-worker-connect-src-blocked.sub.html.sub.headers deleted file mode 100644 index bb4fb4c90c6..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/shared-worker-connect-src-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: shared-worker-connect-src-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: connect-src *; script-src 'self' 'unsafe-inline'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/source-list-parsing-paths-03.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/source-list-parsing-paths-03.sub.html deleted file mode 100644 index b60eccb9ba9..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/source-list-parsing-paths-03.sub.html +++ /dev/null @@ -1,22 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>source-list-parsing-paths-03</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'unsafe-inline' example.com/js/; connect-src 'self'; ---> -</head> - -<body> - <p>This test passes if the source expression does not throw an "invalid source" error.</p> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/source-list-parsing-paths-03.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/source-list-parsing-paths-03.sub.html.sub.headers deleted file mode 100644 index 58e7a22df39..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/source-list-parsing-paths-03.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: source-list-parsing-paths-03={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline' 'unsafe-inline' example.com/js/; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/srcdoc-doesnt-bypass-script-src.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/srcdoc-doesnt-bypass-script-src.sub.html deleted file mode 100644 index 50b76688fa3..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/srcdoc-doesnt-bypass-script-src.sub.html +++ /dev/null @@ -1,22 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>srcdoc-doesnt-bypass-script-src</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/alertAssert.sub.js?alerts=%5B%5D"></script> - <!-- enforcing policy: -script-src 'self'; connect-src 'self'; ---> -</head> - -<body> - This test passes if it doesn't alert fail. - <iframe srcdoc="<script>window.parent.alert_assert('FAIL')</script>"></iframe> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=script-src%20'self'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/srcdoc-doesnt-bypass-script-src.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/srcdoc-doesnt-bypass-script-src.sub.html.sub.headers deleted file mode 100644 index e2ffd11854b..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/srcdoc-doesnt-bypass-script-src.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: srcdoc-doesnt-bypass-script-src={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/star-doesnt-match-blob.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/star-doesnt-match-blob.sub.html deleted file mode 100644 index fac12b52a65..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/star-doesnt-match-blob.sub.html +++ /dev/null @@ -1,49 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>worker-connect-src-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["TEST COMPLETE"]'></script> - <!-- enforcing policy: -connect-src 'self'; script-src 'self' 'unsafe-inline'; child-src *; ---> - -</head> -<p>This test loads a worker, from a guid. - The worker should be blocked from loading with a child-src policy of * - as the blob: scheme must be specified explicitly. - A report should be sent to the report-uri specified - with this resource.</p> -<body> - <script> - try { - var blob = new Blob([ - "postMessage('FAIL');" + - "postMessage('TEST COMPLETE');" - ], - {type : 'application/javascript'}); - var url = URL.createObjectURL(blob); - var worker = new Worker(url); - worker.onmessage = function(event) { - alert_assert(event.data); - }; - worker.onerror = function(event) { - event.preventDefault(); - alert_assert('TEST COMPLETE'); - } - } catch (e) { - alert_assert('TEST COMPLETE'); - } - function timeout() { - alert_assert('TEST COMPLETE'); - } - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=child-src%20'self'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/star-doesnt-match-blob.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/star-doesnt-match-blob.sub.html.sub.headers deleted file mode 100644 index 9f7db5b0f6f..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/star-doesnt-match-blob.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: star-doesnt-match-blob={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: connect-src 'self'; script-src 'self' 'unsafe-inline'; child-src *; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/style-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/style-allowed.sub.html deleted file mode 100644 index 176a8e3eff3..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/style-allowed.sub.html +++ /dev/null @@ -1,26 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>style-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -style-src *; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; ---> - <link rel="stylesheet" href="resources/blue.css"> -</head> - -<body> - <script> - log(document.styleSheets.length > 0 ? 'PASS' : 'FAIL'); - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/style-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/style-allowed.sub.html.sub.headers deleted file mode 100644 index cdf39454879..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/style-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: style-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: style-src *; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/style-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/style-blocked.sub.html deleted file mode 100644 index 847e05b6ac6..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/style-blocked.sub.html +++ /dev/null @@ -1,26 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>style-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -style-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; ---> - <link rel="stylesheet" href="resources/blue.css"> -</head> - -<body> - <script> - log(document.styleSheets.length > 0 ? 'FAIL' : 'PASS'); - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=style-src%20'none'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/style-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/style-blocked.sub.html.sub.headers deleted file mode 100644 index 54c3272a382..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/style-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: style-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: style-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-connect-src-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-connect-src-allowed.sub.html deleted file mode 100644 index 923149199a4..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-connect-src-allowed.sub.html +++ /dev/null @@ -1,33 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>worker-connect-src-allowed</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["xhr allowed"]'></script> - <!-- enforcing policy: -connect-src 'self' http://{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline'; ---> - -</head> - -<body> - <script> - try { - var worker = new Worker('http://{{host}}:{{ports[http][0]}}/content-security-policy/blink-contrib/resources/worker-make-xhr.sub.js'); - worker.onmessage = function(event) { - alert_assert(event.data); - }; - } catch (e) { - alert_assert(e); - } - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-connect-src-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-connect-src-allowed.sub.html.sub.headers deleted file mode 100644 index 92ef91f0d8e..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-connect-src-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: worker-connect-src-allowed={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: connect-src 'self'; script-src 'self' 'unsafe-inline'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-connect-src-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-connect-src-blocked.sub.html deleted file mode 100644 index 0541322902d..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-connect-src-blocked.sub.html +++ /dev/null @@ -1,38 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>worker-connect-src-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["xhr blocked","TEST COMPLETE"]'></script> - <!-- enforcing policy: -connect-src *; script-src 'self' 'unsafe-inline'; ---> - -</head> -<p>This test loads a worker, which is delivered with its own - policy. The worker should be blocked from making an XHR - as that policy specifies a connect-src 'none', though - this resource's policy is connect-src *. No report - should be sent since the worker's policy doesn't specify - a report-uri.</p> -<body> - <script> - try { - var worker = new Worker('http://{{host}}:{{ports[http][0]}}/content-security-policy/blink-contrib/resources/worker-make-xhr-blocked.sub.js'); - worker.onmessage = function(event) { - alert_assert(event.data); - }; - } catch (e) { - alert_assert(e); - } - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-connect-src-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-connect-src-blocked.sub.html.sub.headers deleted file mode 100644 index e302aa84aa8..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-connect-src-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: worker-connect-src-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: connect-src *; script-src 'self' 'unsafe-inline'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-eval-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-eval-blocked.sub.html deleted file mode 100644 index ac96e0f4d7f..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-eval-blocked.sub.html +++ /dev/null @@ -1,37 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>worker-eval-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["eval blocked"]'></script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'self'; connect-src 'self'; ---> -</head> - -<body> - <p>This test loads a worker, delivered with its own policy. - The eval() call in the worker should be forbidden by that - policy. No report should be generated because the worker - policy does not set a report-uri (although this parent - resource does).</p> - <script> - try { - var worker = new Worker('http://{{host}}:{{ports[http][0]}}/content-security-policy/blink-contrib/resources/worker-eval.js'); - worker.onmessage = function(event) { - alert_assert(event.data); - }; - } catch (e) { - alert_assert(e); - } - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-eval-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-eval-blocked.sub.html.sub.headers deleted file mode 100644 index 8964f80abad..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-eval-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: worker-eval-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-from-guid.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-from-guid.sub.html deleted file mode 100644 index b290b82f649..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-from-guid.sub.html +++ /dev/null @@ -1,65 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>worker-connect-src-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["xhr blocked","TEST COMPLETE"]'></script> - <!-- enforcing policy: -connect-src 'self'; script-src 'self' 'unsafe-inline' blob:; ---> - -</head> -<p>This test loads a worker, from a guid. - The worker should be blocked from making an XHR - to www1 as this resource's policy is connect-src 'self - and a guid Worker should inherit is parent's policy. - A report should be sent to the report-uri specified - with this resource.</p> -<body> - <script> - try { - var blob = new Blob([ - "var xhr = new XMLHttpRequest;" + - "xhr.onerror = function () {" + - " postMessage('xhr blocked');" + - " postMessage('TEST COMPLETE');" + - "};" + - "xhr.onload = function () {" + - " if (xhr.responseText == 'FAIL') {" + - " postMessage('xhr allowed');" + - " } else {" + - " postMessage('xhr blocked');" + - " }" + - " postMessage('TEST COMPLETE');" + - "};" + - "try { " + - " xhr.open(" + - " 'GET'," + - " 'http://www1.{{host}}:{{ports[http][0]}}/content-security-policy/support/fail.asis'," + - " true" + - " );" + - " xhr.send();" + - "} catch (e) {" + - " postMessage('xhr blocked');" + - " postMessage('TEST COMPLETE');" + - "}"], - {type : 'application/javascript'}); - var url = URL.createObjectURL(blob); - var worker = new Worker(url); - worker.onmessage = function(event) { - alert_assert(event.data); - }; - } catch (e) { - alert_assert(e); - } - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=connect-src%20'self'"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-from-guid.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-from-guid.sub.html.sub.headers deleted file mode 100644 index d94d31ace8c..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-from-guid.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: worker-from-guid={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: connect-src 'self'; script-src 'self' 'unsafe-inline' blob:; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-function-function-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-function-function-blocked.sub.html deleted file mode 100644 index 1db574780dc..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-function-function-blocked.sub.html +++ /dev/null @@ -1,38 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>worker-function-function-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["Function() function blocked"]'></script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'self' 'unsafe-inline'; connect-src 'self'; ---> - -</head> - -<body> - <p>This test loads a worker, delivered with its own policy. - The Function constructor should be forbidden by that - policy. No report should be generated because the worker - policy does not set a report-uri (although this parent - resource does).</p> - <script> - try { - var worker = new Worker('http://{{host}}:{{ports[http][0]}}/content-security-policy/blink-contrib/resources/worker-function-function.js'); - worker.onmessage = function(event) { - alert_assert(event.data); - }; - } catch (e) { - alert_assert(e); - } - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-function-function-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-function-function-blocked.sub.html.sub.headers deleted file mode 100644 index b012518ece4..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-function-function-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: worker-function-function-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-importscripts-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-importscripts-blocked.sub.html deleted file mode 100644 index 9ec49c03025..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-importscripts-blocked.sub.html +++ /dev/null @@ -1,43 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>worker-importscripts-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["TEST COMPLETE"]'></script> - <script src="../support/alertAssert.sub.js?alerts=[]"></script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'unsafe-eval' 'unsafe-inline' 127.0.0.1:8000; connect-src 'self'; ---> - <script></script> -</head> - -<body> - <script> - window.wasPostTestScriptParsed = true; - var result = ''; - try { - var worker = new Worker('http://{{host}}:{{ports[http][0]}}/content-security-policy/blink-contrib/resources/worker-importscripts.js'); - worker.onmessage = function(event) { - result = event.data; - test(function() { - assert_equals(result, 'importScripts blocked') - }); - log("TEST COMPLETE"); - }; - } catch (e) { - result = e; - test(function() { - assert_equals(result, 'importScripts blocked') - }); - log("TEST COMPLETE"); - } - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-importscripts-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-importscripts-blocked.sub.html.sub.headers deleted file mode 100644 index 04de51d1400..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-importscripts-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: worker-importscripts-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-script-src.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-script-src.sub.html deleted file mode 100644 index 9caf77224f9..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-script-src.sub.html +++ /dev/null @@ -1,33 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>worker-script-src</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["PASS"]'></script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> - -</head> - -<body> - <script> - try { - var foo = new Worker('http://{{host}}:{{ports[http][0]}}/content-security-policy/blink-contrib/resources/post-message.js'); - foo.onmessage = function(event) { - alert_assert("PASS"); - }; - } catch (e) { - alert_assert(e); - } - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-script-src.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-script-src.sub.html.sub.headers deleted file mode 100644 index 76e5a3ba202..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-script-src.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: worker-script-src={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-set-timeout-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-set-timeout-blocked.sub.html deleted file mode 100644 index 119121ca51c..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-set-timeout-blocked.sub.html +++ /dev/null @@ -1,33 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> - <title>worker-set-timeout-blocked</title> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="../support/logTest.sub.js?logs=[]"></script> - <script src='../support/alertAssert.sub.js?alerts=["setTimeout blocked"]'></script> - <!-- enforcing policy: -script-src 'self' 'unsafe-inline' 'self' 'unsafe-inline'; connect-src 'self'; ---> - -</head> - -<body> - <script> - try { - var worker = new Worker('http://{{host}}:{{ports[http][0]}}/content-security-policy/blink-contrib/resources/worker-set-timeout.js'); - worker.onmessage = function(event) { - alert_assert(event.data); - }; - } catch (e) { - alert_assert(e); - } - - </script> - <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> -</body> - -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-set-timeout-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-set-timeout-blocked.sub.html.sub.headers deleted file mode 100644 index fb6b3d0a254..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/worker-set-timeout-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: worker-set-timeout-blocked={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: script-src 'self' 'unsafe-inline' 'self' 'unsafe-eval'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/xsl-blocked-expected.png b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/xsl-blocked-expected.png Binary files differdeleted file mode 100644 index b5daa8555e8..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/xsl-blocked-expected.png +++ /dev/null diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/xsl-unaffected-by-style-src-1-expected.png b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/xsl-unaffected-by-style-src-1-expected.png Binary files differdeleted file mode 100644 index b5daa8555e8..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/xsl-unaffected-by-style-src-1-expected.png +++ /dev/null diff --git a/tests/wpt/web-platform-tests/content-security-policy/blob/blob-urls-do-not-match-self.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blob/blob-urls-do-not-match-self.sub.html new file mode 100644 index 00000000000..1bf96df17c0 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/blob/blob-urls-do-not-match-self.sub.html @@ -0,0 +1,36 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self'; child-src 'self';"> + <title>blob-urls-do-not-match-self</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["violated-directive=script-src"]'></script> + <script src='../support/alertAssert.sub.js?alerts=[]'></script> +</head> + +<body> + <p> + blob: URLs are same-origin with the page in which they were created, but explicitly do not match the 'self' or '*' source in CSP directives because they are more akin to 'unsafe-inline' content. + </p> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + function fail() { + alert_assert("FAIL!"); + } + var b = new Blob(['fail();'], { + type: 'application/javascript' + }); + var script = document.createElement('script'); + script.src = URL.createObjectURL(b); + document.body.appendChild(script); + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blob/blob-urls-match-blob.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blob/blob-urls-match-blob.sub.html new file mode 100644 index 00000000000..41b06b30247 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/blob/blob-urls-match-blob.sub.html @@ -0,0 +1,37 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' blob:; connect-src 'self';"> + <title>blob-urls-match-blob</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS (1/1)"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <p> + blob: URLs are same-origin with the page in which they were created, but match only if the blob: scheme is specified. + </p> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("FAIL"); + }); + + function pass() { + log("PASS (1/1)"); + } + var b = new Blob(['pass();'], { + type: 'application/javascript' + }); + var script = document.createElement('script'); + script.src = URL.createObjectURL(b); + document.body.appendChild(script); + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blob/self-doesnt-match-blob.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blob/self-doesnt-match-blob.sub.html new file mode 100644 index 00000000000..48ad34dbe88 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/blob/self-doesnt-match-blob.sub.html @@ -0,0 +1,49 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="connect-src 'self'; script-src 'self' 'unsafe-inline'; child-src 'self';"> + <title>worker-connect-src-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["violated-directive=worker-src","TEST COMPLETE"]'></script> + <script src='../support/alertAssert.sub.js?alerts=[]'></script> +</head> +<p>This test loads a worker, from a guid. + The worker should be blocked from loading with a child-src policy of 'self' + as the blob: scheme must be specified explicitly. + A report should be sent to the report-uri specified + with this resource.</p> +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + + try { + var blob = new Blob([ + "postMessage('FAIL');" + + "postMessage('TEST COMPLETE');" + ], + {type : 'application/javascript'}); + var url = URL.createObjectURL(blob); + var worker = new Worker(url); + worker.onmessage = function(event) { + alert_assert(event.data); + }; + worker.onerror = function(event) { + log('TEST COMPLETE'); + event.preventDefault(); + } + } catch (e) { + log('TEST COMPLETE'); + } + function timeout() { + log('TEST COMPLETE'); + } + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blob/star-doesnt-match-blob.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blob/star-doesnt-match-blob.sub.html new file mode 100644 index 00000000000..0a184a84974 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/blob/star-doesnt-match-blob.sub.html @@ -0,0 +1,49 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="connect-src 'self'; script-src 'self' 'unsafe-inline'; child-src *;"> + <title>worker-connect-src-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["violated-directive=worker-src","TEST COMPLETE"]'></script> + +</head> +<p>This test loads a worker, from a guid. + The worker should be blocked from loading with a child-src policy of * + as the blob: scheme must be specified explicitly. + A report should be sent to the report-uri specified + with this resource.</p> +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + + try { + var blob = new Blob([ + "postMessage('FAIL');" + + "postMessage('TEST COMPLETE');" + ], + {type : 'application/javascript'}); + var url = URL.createObjectURL(blob); + var worker = new Worker(url); + worker.onmessage = function(event) { + log(event.data); + }; + worker.onerror = function(event) { + event.preventDefault(); + log('TEST COMPLETE'); + } + } catch (e) { + log('TEST COMPLETE'); + } + function timeout() { + log('TEST COMPLETE'); + } + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-about-blank-allowed-by-default.sub.html b/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-about-blank-allowed-by-default.sub.html index cf39bcdd5b3..0e48be67320 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-about-blank-allowed-by-default.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-about-blank-allowed-by-default.sub.html @@ -3,22 +3,27 @@ <head> <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="child-src 'none'; object-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> <title>child-src-about-blank-allowed-by-default</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> - - <!-- enforcing policy: -child-src 'none'; object-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> <p>These frames should not be blocked by Content-Security-Policy. It's pointless to block about:blank iframes because blocking a frame just results in displaying about:blank anyway! </p> + <script> + var t = async_test("Check that frames load without throwing any violation events"); + window.addEventListener("securitypolicyviolation", t.unreached_func("Should not have fired any events")); + </script> + <iframe src="about:blank"></iframe> <object type="text/html" data="about:blank"></object> <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> + + <script> + t.done(); + </script> </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-about-blank-allowed-by-default.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-about-blank-allowed-by-default.sub.html.sub.headers deleted file mode 100644 index 68b2fb2fb89..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-about-blank-allowed-by-default.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: child-src-about-blank-allowed-by-default={{$id:uuid()}}; Path=/content-security-policy/child-src -Content-Security-Policy: child-src 'none'; object-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-about-blank-allowed-by-scheme.sub.html b/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-about-blank-allowed-by-scheme.sub.html index d94eff6843c..89e8529c172 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-about-blank-allowed-by-scheme.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-about-blank-allowed-by-scheme.sub.html @@ -3,18 +3,23 @@ <head> <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="child-src about:; script-src 'self' 'unsafe-inline'; connect-src 'self';"> <title>child-src-about-blank-allowed-by-scheme</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> - - <!-- enforcing policy: -child-src about:; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> <p>This frame should not be blocked by Content-Security-Policy. </p> + <script> + var t = async_test("Check that frames load without throwing any violation events"); + window.addEventListener("securitypolicyviolation", t.unreached_func("Should not have fired any events")); + </script> + <iframe src="about:blank"></iframe> <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> + + <script> + t.done(); + </script> </body> </html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-about-blank-allowed-by-scheme.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-about-blank-allowed-by-scheme.sub.html.sub.headers deleted file mode 100644 index 9ff84d67dd2..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-about-blank-allowed-by-scheme.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: child-src-about-blank-allowed-by-scheme={{$id:uuid()}}; Path=/content-security-policy/child-src -Content-Security-Policy: child-src about:; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-allowed.sub.html index 6fee98883da..29ded4c486e 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-allowed.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-allowed.sub.html @@ -3,6 +3,7 @@ <head> <title>child-src-allowed</title> + <meta http-equiv="Content-Security-Policy" content="child-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src='../support/logTest.sub.js?logs=["PASS IFrame %231 generated a load event."]'></script> @@ -10,6 +11,10 @@ window.addEventListener("message", function(event) { alert_assert(event.data); }, false); + + window.addEventListener("securitypolicyviolation", function(e) { + alert_assert("Fail"); + }); var t_alert = async_test('Expecting alerts: ["PASS"]'); var expected_alerts = ["PASS"]; @@ -36,9 +41,6 @@ } </script> - <!-- enforcing policy: -Content-Security-Policy: child-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> <p> This iframe should be allowed. </p> @@ -57,7 +59,6 @@ Content-Security-Policy: child-src 'self'; script-src 'self' 'unsafe-inline'; co <body> <iframe src="/content-security-policy/support/postmessage-pass.html" onload="loadEvent()"></iframe> <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=false"></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-allowed.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-allowed.sub.html.sub.headers deleted file mode 100644 index 7eb8d76f960..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-allowed.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: child-src-allowed={{$id:uuid()}}; Path=/content-security-policy/child-src -Content-Security-Policy: child-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-blocked.sub.html index 3d14da43e00..63065393931 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-blocked.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-blocked.sub.html @@ -3,14 +3,19 @@ <head> <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="child-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> <title>child-src-blocked</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS IFrame %231 generated a load event."]'></script> + <script src='../support/logTest.sub.js?logs=["PASS IFrame %231 generated a load event.", "violated-directive=frame-src"]'></script> <script> window.addEventListener("message", function(event) { alert_assert(event.data); }, false); + + window.addEventListener("securitypolicyviolation", function(e) { + log("violated-directive=" + e.violatedDirective); + }); function alert_assert(msg) { t_log.step(function() { @@ -34,9 +39,6 @@ } </script> - <!-- enforcing policy: -child-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; ---> <p> IFrames blocked by CSP should generate a 'load', not 'error' event, regardless of blocked state. This means they appear to be normal cross-origin loads, thereby not leaking URL information directly to JS. </p> @@ -55,7 +57,6 @@ child-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; <body> <iframe src="/content-security-policy/support/postmessage-fail.html" onload="loadEvent()" onerror="log('FAIL')"></iframe> <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=frame-src%20'none'"></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-blocked.sub.html.sub.headers deleted file mode 100644 index 961d18a7dd6..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: child-src-blocked={{$id:uuid()}}; Path=/content-security-policy/child-src -Content-Security-Policy: child-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-conflicting-frame-src.sub.html b/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-conflicting-frame-src.sub.html index d11b7a3af6b..153caa02422 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-conflicting-frame-src.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-conflicting-frame-src.sub.html @@ -2,14 +2,19 @@ <html> <head> <title>child-src-blocked</title> + <meta http-equiv="Content-Security-Policy" content="frame-src 'none'; child-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS IFrame %231 generated a load event."]'></script> + <script src='../support/logTest.sub.js?logs=["PASS IFrame %231 generated a load event.", "violated-directive=frame-src"]'></script> <script> window.addEventListener("message", function(event) { alert_assert(event.data); }, false); + window.addEventListener("securitypolicyviolation", function(e) { + log("violated-directive=" + e.violatedDirective); + }); + function alert_assert(msg) { t_log.step(function() { if (msg.match(/^FAIL/i)) { @@ -55,7 +60,6 @@ frame-src 'none'; child-src 'self'; script-src 'self' 'unsafe-inline'; connect-s <body> <iframe src="/content-security-policy/support/postmessage-fail.html" onload="loadEvent()" onerror="log('FAIL')"></iframe> <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=frame-src%20'none'"></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-conflicting-frame-src.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-conflicting-frame-src.sub.html.sub.headers deleted file mode 100644 index 9c3ce84263c..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-conflicting-frame-src.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: child-src-conflicting-frame-src={{$id:uuid()}}; Path=/content-security-policy/child-src -Content-Security-Policy: frame-src 'none'; child-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-cross-origin-load.sub.html b/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-cross-origin-load.sub.html index 81bb003d652..c67ec67385b 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-cross-origin-load.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-cross-origin-load.sub.html @@ -3,15 +3,20 @@ <head> <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="child-src 'self' http://www1.{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline'; connect-src 'self';"> <title>child-src-cross-origin-load</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS IFrame %231 generated a load event.","PASS IFrame %232 generated a load event.","PASS IFrame %233 generated a load event."]'></script> + <script src='../support/logTest.sub.js?logs=["PASS IFrame %231 generated a load event.","PASS IFrame %232 generated a load event.","PASS IFrame %233 generated a load event.", "violated-directive=frame-src"]'></script> <script> window.addEventListener("message", function(event) { alert_assert(event.data); }, false); + window.addEventListener("securitypolicyviolation", function(e) { + log("violated-directive=" + e.violatedDirective); + }); + var t_alert = async_test('Expecting alerts: ["PASS","PASS"]'); var expected_alerts = ["PASS", "PASS"]; @@ -62,7 +67,6 @@ child-src 'self' http://www1.{{host}}:{{ports[http][0]}}; script-src 'self' 'uns <iframe src="http://{{domains[www1]}}:{{ports[http][0]}}/content-security-policy/support/postmessage-pass.html" onload="loadEvent()"></iframe> <iframe src="http://{{domains[www2]}}:{{ports[http][0]}}/content-security-policy/support/postmessage-fail.html" onload="loadEvent()" onerror="log('FAIL')"></iframe> <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=frame-src%20'self'"></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-cross-origin-load.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-cross-origin-load.sub.html.sub.headers deleted file mode 100644 index 53527c1adaf..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-cross-origin-load.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: child-src-cross-origin-load={{$id:uuid()}}; Path=/content-security-policy/child-src -Content-Security-Policy: child-src 'self' http://www1.{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-redirect-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-redirect-blocked.sub.html index 74b77c95d56..6a39213290c 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-redirect-blocked.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-redirect-blocked.sub.html @@ -3,15 +3,20 @@ <head> <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="child-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> <title>child-src-blocked</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> - <script src='../support/logTest.sub.js?logs=["PASS IFrame %231 generated a load event."]'></script> + <script src='../support/logTest.sub.js?logs=["PASS IFrame %231 generated a load event.", "violated-directive=frame-src"]'></script> <script> window.addEventListener("message", function(event) { alert_assert(event.data); }, false); + window.addEventListener("securitypolicyviolation", function(e) { + log("violated-directive=" + e.violatedDirective); + }); + function alert_assert(msg) { t_log.step(function() { if (msg.match(/^FAIL/i)) { @@ -55,7 +60,6 @@ child-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; <body> <iframe src="/common/redirect.py?location=http://{{domains[www1]}}:{{ports[http][0]}}/content-security-policy/support/postmessage-fail.html" onload="loadEvent()" onerror="log('FAIL')"></iframe> <div id="log"></div> - <script async defer src="../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=frame-src%20'none'"></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-redirect-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-redirect-blocked.sub.html.sub.headers deleted file mode 100644 index 60dac9bc498..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/child-src/child-src-redirect-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: child-src-redirect-blocked={{$id:uuid()}}; Path=/content-security-policy/child-src -Content-Security-Policy: child-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-beacon-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-beacon-allowed.sub.html new file mode 100644 index 00000000000..a32913dd3e2 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-beacon-allowed.sub.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="connect-src 'self' http://{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline';"> + <title>connect-src-beacon-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["Pass"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> + <!-- enforcing policy: +connect-src 'self' http://{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline'; +--> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("FAIL"); + }); + + if (typeof navigator.sendBeacon != 'function') { + t_log.set_status(t_log.NOTRUN, "No navigator.sendBeacon, cannot run test."); + t_log.phase = t_log.phases.HAS_RESULT; + t_log.done(); + } else { + try { + var es = navigator.sendBeacon("http://{{host}}:{{ports[http][0]}}/cors/resources/status.py"); + log("Pass"); + } catch (e) { + log("Fail"); + } + } + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-beacon-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-beacon-blocked.sub.html index c7f7e383d26..95b4ce9a191 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-beacon-blocked.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-beacon-blocked.sub.html @@ -1,27 +1,39 @@ <!DOCTYPE html> -<meta http-equiv="Content-Security-Policy" content="connect-src 'self'"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script> - async_test(t => { - document.addEventListener("securitypolicyviolation", t.step_func_done(e => { - if (e.blockedURI != "http://{{domains[www]}}:{{ports[http][0]}}/common/text-plain.txt") - return; +<html> - assert_equals(e.violatedDirective, "connect-src"); - })); +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="connect-src 'self'; script-src 'self' 'unsafe-inline';"> + <title>connect-src-beacon-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["Pass", "violated-directive=connect-src"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> + <!-- enforcing policy: +connect-src 'self' http://{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline'; +--> +</head> - assert_true(navigator.sendBeacon("http://{{domains[www]}}:{{ports[http][0]}}/common/text-plain.txt")); - }, "sendBeacon should not throw."); +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + + if (typeof navigator.sendBeacon != 'function') { + t_log.set_status(t_log.NOTRUN, "No navigator.sendBeacon, cannot run test."); + t_log.phase = t_log.phases.HAS_RESULT; + t_log.done(); + } else { + try { + var es = navigator.sendBeacon("http://www1.{{host}}:{{ports[http][0]}}/security/contentSecurityPolicy/echo-report.php"); + log("Pass"); + } catch (e) { + log("Fail"); + } + } + </script> + <div id="log"></div> +</body> - async_test(t => { - document.addEventListener("securitypolicyviolation", t.step_func_done(e => { - if (e.blockedURI != "http://{{domains[www]}}:{{ports[http][0]}}/common/text-plain.txt") - return; - - assert_equals(e.violatedDirective, "connect-src"); - })); - - assert_true(navigator.sendBeacon("common/redirect-opt-in.py?status=307&location=http://{{domains[www]}}:{{ports[http][0]}}/common/text-plain.txt")); - }, "redirect case"); -</script> +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-beacon-redirect-to-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-beacon-redirect-to-blocked.sub.html new file mode 100644 index 00000000000..7328d7a704a --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-beacon-redirect-to-blocked.sub.html @@ -0,0 +1,36 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="connect-src 'self'; script-src 'self' 'unsafe-inline';"> + <title>connect-src-beacon-redirect-to-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["violated-directive=connect-src"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> + <script></script> +</head> + +<body> + <p>The beacon should not follow the redirect to http://www1.{{host}}:{{ports[http][0]}}/content-security-policy/support/fail.png and send a CSP violation report.</p> + <p>Verify that a CSP connect-src directive blocks redirects.</p> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + + if (typeof navigator.sendBeacon != 'function') { + t_log.set_status(t_log.NOTRUN, "No navigator.sendBeacon, cannot run test."); + t_log.phase = t_log.phases.HAS_RESULT; + t_log.done(); + } else { + navigator.sendBeacon( + "/common/redirect.py?location=http://www1.{{host}}:{{ports[http][0]}}/content-security-policy/support/fail.png", + "ping"); + } + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-eventsource-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-eventsource-allowed.sub.html new file mode 100644 index 00000000000..3025e8a571a --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-eventsource-allowed.sub.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="connect-src 'self' http://{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline';"> + <title>connect-src-eventsource-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["Pass"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("FAIL"); + }); + + try { + var es = new EventSource("http://{{host}}:{{ports[http][0]}}/content-security-policy/connect-src/resources/simple-event-stream"); + log("Pass"); + } catch (e) { + log("Fail"); + } + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-eventsource-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-eventsource-blocked.sub.html index 4e74f05099a..9b08365cec9 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-eventsource-blocked.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-eventsource-blocked.sub.html @@ -1,61 +1,39 @@ <!DOCTYPE html> -<meta http-equiv="Content-Security-Policy" content="connect-src 'self'"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script> - async_test(t => { - var errorEvent = false; - var cspEvent = false; - - var es = new EventSource("http://{{domains[www]}}:{{ports[http][0]}}/common/text-plain.txt"); - es.onerror = t.step_func(e => { - assert_equals(es.readyState, EventSource.CLOSED); - - assert_false(errorEvent); - errorEvent = true; - if (cspEvent) - t.done(); - }); - - document.addEventListener("securitypolicyviolation", t.step_func(e => { - if (e.blockedURI != "http://{{domains[www]}}:{{ports[http][0]}}/common/text-plain.txt") - return; - - assert_equals(es.readyState, EventSource.CLOSED); - assert_equals(e.violatedDirective, "connect-src"); - - assert_false(cspEvent); - cspEvent = true; - if (errorEvent) - t.done(); - })); - }, "EventSource should fire onerror."); - - async_test(t => { - var errorEvent = false; - var cspEvent = false; - - var es = new EventSource("http://{{domains[www]}}:{{ports[http][0]}}/common/text-plain.txt"); - es.onerror = t.step_func(e => { - assert_equals(es.readyState, EventSource.CLOSED); - - assert_false(errorEvent); - errorEvent = true; - if (cspEvent) - t.done(); - }); - - document.addEventListener("securitypolicyviolation", t.step_func(e => { - if (e.blockedURI != "http://{{domains[www]}}:{{ports[http][0]}}/common/text-plain.txt") - return; - - assert_equals(es.readyState, EventSource.CLOSED); - assert_equals(e.violatedDirective, "connect-src"); - - assert_false(cspEvent); - cspEvent = true; - if (errorEvent) - t.done(); - })); - }, "EventSource should fire onerror."); - +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="connect-src 'self'; script-src 'self' 'unsafe-inline';"> + <title>connect-src-eventsource-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["Pass","violated-directive=connect-src"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + + try { + var es = new EventSource("http://www1.{{host}}:{{ports[http][0]}}/content-security-policy/connect-src/resources/simple-event-stream"); + // Firefox doesn't throw an exception and takes some time to close async + if (es.readyState == EventSource.CONNECTING) { + setTimeout( function() { + es.readyState != EventSource.CLOSED ? log("Fail") : log("Pass"); + }, 2); + } else if (es.readyState == EventSource.CLOSED) { + log("Pass"); + } else { + log("Fail"); + } + } catch (e) { + log("Pass"); + } + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-eventsource-redirect-to-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-eventsource-redirect-to-blocked.sub.html new file mode 100644 index 00000000000..32709cd2d4a --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-eventsource-redirect-to-blocked.sub.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="connect-src 'self' http://{{host}}:{{ports[http][0]}}/security/contentSecurityPolicy/resources/redir.php; script-src 'self' 'unsafe-inline';"> + <title>connect-src-eventsource-redirect-to-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS EventSource() did not follow the disallowed redirect.","TEST COMPLETE", "violated-directive=connect-src"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> + <script></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + + var es; + try { + es = new EventSource("/common/redirect.py?location= http://www.{{host}}:{{ports[http][0]}}/content-security-policy/connect-src/resources/simple-event-stream"); + } catch (e) { + log("FAIL " + "EventSource() should not throw an exception."); + } + es.onload = function() { + log("FAIL " + "EventSource() should fail to follow the disallowed redirect."); + log("TEST COMPLETE"); + }; + es.onerror = function() { + log("PASS " + "EventSource() did not follow the disallowed redirect."); + log("TEST COMPLETE"); + }; + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-websocket-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-websocket-allowed.sub.html new file mode 100644 index 00000000000..6216444e08e --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-websocket-allowed.sub.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="connect-src 'self' ws://127.0.0.1:8880; script-src 'self' 'unsafe-inline';"> + <title>connect-src-websocket-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["Pass"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); + + try { + var ws = new WebSocket("ws://127.0.0.1:8880/echo"); + log("Pass"); + } catch (e) { + log("Fail"); + } + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-websocket-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-websocket-blocked.sub.html index cb8e0ec4c8e..249c7a346a4 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-websocket-blocked.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-websocket-blocked.sub.html @@ -1,34 +1,31 @@ <!DOCTYPE html> -<meta http-equiv="Content-Security-Policy" content="connect-src 'self'"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script> - async_test(t => { - var errorEvent = false; - var cspEvent = false; +<html> - var ws = new WebSocket("ws://{{domains[www]}}:{{ports[ws][0]}}/echo"); - ws.onopen = t.unreached_func("open should not fire."); - ws.onerror = t.step_func(e => { - assert_equals(ws.readyState, WebSocket.CLOSED); +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="connect-src 'self' ws://127.0.0.1:8880; script-src 'self' 'unsafe-inline';"> + <title>connect-src-websocket-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["Pass","violated-directive=connect-src"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> - assert_false(errorEvent); - errorEvent = true; - if (cspEvent) - t.done(); - }); +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); - document.addEventListener("securitypolicyviolation", t.step_func(e => { - if (e.blockedURI != "ws://{{domains[www]}}:{{ports[ws][0]}}") - return; + try { + var ws = new WebSocket("ws://localhost:8880/echo"); + log("Fail"); + } catch (e) { + log("Pass"); + } - assert_equals(ws.readyState, WebSocket.CLOSED); - assert_equals(e.violatedDirective, "connect-src"); + </script> + <div id="log"></div> +</body> - assert_false(cspEvent); - cspEvent = true; - if (errorEvent) - t.done(); - })); - }, "WebSocket should fire error event."); -</script> +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-xmlhttprequest-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-xmlhttprequest-allowed.sub.html new file mode 100644 index 00000000000..bde5eeea10a --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-xmlhttprequest-allowed.sub.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="connect-src 'self' http://{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline';"> + <title>connect-src-xmlhttprequest-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["Pass"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); + + try { + var xhr = new XMLHttpRequest; + xhr.open("GET", "http://{{host}}:{{ports[http][0]}}/xmlhttprequest/resources/get.txt", true); + log("Pass"); + } catch (e) { + log("Fail"); + } + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-xmlhttprequest-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-xmlhttprequest-blocked.sub.html index 3e8f66c1a13..f4215909d9f 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-xmlhttprequest-blocked.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-xmlhttprequest-blocked.sub.html @@ -1,69 +1,38 @@ <!DOCTYPE html> -<meta http-equiv="Content-Security-Policy" content="connect-src 'self'"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script> - async_test(t => { - var errorEvent = false; - var cspEvent = false; - - var xhr = new XMLHttpRequest; - xhr.open("GET", "http://{{domains[www]}}:{{ports[http][0]}}/common/text-plain.txt"); - xhr.onload = t.unreached_func("Load should not fire."); - xhr.onerror = t.step_func(e => { - assert_equals(xhr.readyState, XMLHttpRequest.DONE); - - assert_false(errorEvent); - errorEvent = true; - if (cspEvent) - t.done(); - }); - - document.addEventListener("securitypolicyviolation", t.step_func(e => { - if (e.blockedURI != "http://{{domains[www]}}:{{ports[http][0]}}/common/text-plain.txt") - return; - - assert_equals(xhr.readyState, XMLHttpRequest.DONE); - assert_equals(e.violatedDirective, "connect-src"); - - assert_false(cspEvent); - cspEvent = true; - if (errorEvent) - t.done(); - })); - - xhr.send(); - }, "XHR should fire onerror."); - - async_test(t => { - var errorEvent = false; - var cspEvent = false; - - var xhr = new XMLHttpRequest; - xhr.open("GET", "/common/redirect-opt-in.py?status=307&location=http://{{domains[www]}}:{{ports[http][0]}}/common/text-plain.txt"); - xhr.onload = t.unreached_func("Load should not fire."); - xhr.onerror = t.step_func(e => { - assert_equals(xhr.readyState, XMLHttpRequest.DONE); - - assert_false(errorEvent); - errorEvent = true; - if (cspEvent) - t.done(); - }); - - document.addEventListener("securitypolicyviolation", t.step_func(e => { - if (e.blockedURI != "http://{{domains[www]}}:{{ports[http][0]}}") - return; - - assert_equals(xhr.readyState, XMLHttpRequest.DONE); - assert_equals(e.violatedDirective, "connect-src"); - - assert_false(cspEvent); - cspEvent = true; - if (errorEvent) - t.done(); - })); - - xhr.send(); - }, "XHR should fire onerror after a redirect."); -</script> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="connect-src 'self'; script-src 'self' 'unsafe-inline';"> + <title>connect-src-xmlhttprequest-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["Pass","violated-directive=connect-src"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + + try { + var xhr = new XMLHttpRequest; + xhr.open("GET", "http://www1.{{host}}:{{ports[http][0]}}/content-security-policy/support/fail.png", true); + xhr.send(); + xhr.onload = function() { + log("Fail"); + } + xhr.onerror = function() { + log("Pass"); + } + } catch (e) { + log("Pass"); + } + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-xmlhttprequest-redirect-to-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-xmlhttprequest-redirect-to-blocked.sub.html new file mode 100644 index 00000000000..429e463c531 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/connect-src-xmlhttprequest-redirect-to-blocked.sub.html @@ -0,0 +1,46 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="connect-src 'self'; script-src 'self' 'unsafe-inline';"> + <title>connect-src-xmlhttprequest-redirect-to-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS XMLHttpRequest.send() did not follow the disallowed redirect.","TEST COMPLETE","violated-directive=connect-src"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> + <script id="inject_here"></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + + var xhr = new XMLHttpRequest; + try { + xhr.open("GET", "/common/redirect.py?location=http://www1.{{host}}:{{ports[http][0]}}/content-security-policy/support/fail.asis", true); + } catch (e) { + log("FAIL " + "XMLHttpRequest.open() should not throw an exception."); + } + xhr.onload = function() { + //cons/**/ole.log(xhr.responseText); + if(xhr.responseText == "FAIL") { + log("FAIL " + "XMLHttpRequest.send() should fail to follow the disallowed redirect."); + } else { + log("PASS " + "XMLHttpRequest.send() did not follow the disallowed redirect."); + } + log("TEST COMPLETE"); + }; + xhr.onerror = function() { + log("PASS " + "XMLHttpRequest.send() did not follow the disallowed redirect."); + log("TEST COMPLETE"); + }; + xhr.send(); + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/connect-src/resources/simple-event-stream b/tests/wpt/web-platform-tests/content-security-policy/connect-src/resources/simple-event-stream new file mode 100644 index 00000000000..bdd2d486c26 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/resources/simple-event-stream @@ -0,0 +1 @@ +data: hello
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/connect-src/resources/simple-event-stream.headers b/tests/wpt/web-platform-tests/content-security-policy/connect-src/resources/simple-event-stream.headers new file mode 100644 index 00000000000..450c9f2d238 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/resources/simple-event-stream.headers @@ -0,0 +1 @@ +Content-Type: text/event-stream
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/connect-src/shared-worker-connect-src-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/connect-src/shared-worker-connect-src-allowed.sub.html new file mode 100644 index 00000000000..d8cec9ff13a --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/shared-worker-connect-src-allowed.sub.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="connect-src 'self' http://{{domains[www1]}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline';"> + <title>shared-worker-connect-src-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["xhr allowed","TEST COMPLETE"]'></script> + <script src='../support/alertAssert.sub.js?alerts=[]'></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + + if(typeof SharedWorker != 'function') { + t_log.set_status(t_alert.NOTRUN, "No SharedWorker, cannot run test."); + t_log.phase = t_alert.phases.HAS_RESULT; + t_log.done(); + } else { + try { + var worker = new SharedWorker('/content-security-policy/connect-src/support/shared-worker-make-xhr-allowed.sub.js'); + worker.port.onmessage = function(event) { + log(event.data); + }; + } catch (e) { + log(e); + } + } + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/connect-src/shared-worker-connect-src-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/connect-src/shared-worker-connect-src-blocked.sub.html new file mode 100644 index 00000000000..2157bbc9779 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/shared-worker-connect-src-blocked.sub.html @@ -0,0 +1,44 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="connect-src *; script-src 'self' 'unsafe-inline';"> + <title>shared-worker-connect-src-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["xhr blocked","TEST COMPLETE"]'></script> + <script src='../support/alertAssert.sub.js?alerts=[]'></script> +</head> + +<body> + <p>This test loads a shared worker, delivered with its own + policy. The worker should be blocked from making an XHR + as that policy specifies a connect-src 'none', though + this resource's policy is connect-src *. No report + should be sent since the worker's policy doesn't specify + a report-uri.</p> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); + + if(typeof SharedWorker != 'function') { + t_log.set_status(t_log.NOTRUN, "No SharedWorker, cannot run test."); + t_log.phase = t_log.phases.HAS_RESULT; + t_log.done(); + } else { + try { + var worker = new SharedWorker('/content-security-policy/connect-src/support/shared-worker-make-xhr-blocked.sub.js'); + worker.port.onmessage = function(event) { + log(event.data); + }; + } catch (e) { + log(e); + } + } + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/connect-src/support/shared-worker-make-xhr-allowed.sub.js b/tests/wpt/web-platform-tests/content-security-policy/connect-src/support/shared-worker-make-xhr-allowed.sub.js new file mode 100644 index 00000000000..1e9700832d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/support/shared-worker-make-xhr-allowed.sub.js @@ -0,0 +1,23 @@ +onconnect = function (event) { + var port = event.ports[0]; + var xhr = new XMLHttpRequest; + xhr.onerror = function () { + port.postMessage("xhr blocked"); + port.postMessage("TEST COMPLETE"); + }; + xhr.onload = function () { + if (xhr.responseText == "FAIL") { + port.postMessage("xhr allowed"); + } else { + port.postMessage("xhr blocked"); + } + port.postMessage("TEST COMPLETE"); + }; + try { + xhr.open("GET", "http://{{domains[www1]}}:{{ports[http][0]}}/content-security-policy/support/fail.asis", true); + xhr.send(); + } catch (e) { + port.postMessage("xhr blocked"); + port.postMessage("TEST COMPLETE"); + } +}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/connect-src/support/shared-worker-make-xhr-blocked.sub.js b/tests/wpt/web-platform-tests/content-security-policy/connect-src/support/shared-worker-make-xhr-blocked.sub.js new file mode 100644 index 00000000000..1e9700832d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/support/shared-worker-make-xhr-blocked.sub.js @@ -0,0 +1,23 @@ +onconnect = function (event) { + var port = event.ports[0]; + var xhr = new XMLHttpRequest; + xhr.onerror = function () { + port.postMessage("xhr blocked"); + port.postMessage("TEST COMPLETE"); + }; + xhr.onload = function () { + if (xhr.responseText == "FAIL") { + port.postMessage("xhr allowed"); + } else { + port.postMessage("xhr blocked"); + } + port.postMessage("TEST COMPLETE"); + }; + try { + xhr.open("GET", "http://{{domains[www1]}}:{{ports[http][0]}}/content-security-policy/support/fail.asis", true); + xhr.send(); + } catch (e) { + port.postMessage("xhr blocked"); + port.postMessage("TEST COMPLETE"); + } +}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/shared-worker-make-xhr-blocked.sub.js.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/connect-src/support/shared-worker-make-xhr-blocked.sub.js.sub.headers index ac7368c32ee..ac7368c32ee 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/shared-worker-make-xhr-blocked.sub.js.sub.headers +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/support/shared-worker-make-xhr-blocked.sub.js.sub.headers diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-make-xhr-blocked.sub.js b/tests/wpt/web-platform-tests/content-security-policy/connect-src/support/worker-make-xhr-blocked.sub.js index 22819d57a20..22819d57a20 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-make-xhr-blocked.sub.js +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/support/worker-make-xhr-blocked.sub.js diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-make-xhr-blocked.sub.js.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/connect-src/support/worker-make-xhr-blocked.sub.js.sub.headers index ac7368c32ee..ac7368c32ee 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-make-xhr-blocked.sub.js.sub.headers +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/support/worker-make-xhr-blocked.sub.js.sub.headers diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-make-xhr.sub.js b/tests/wpt/web-platform-tests/content-security-policy/connect-src/support/worker-make-xhr.sub.js index 73359a39ead..73359a39ead 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-make-xhr.sub.js +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/support/worker-make-xhr.sub.js diff --git a/tests/wpt/web-platform-tests/content-security-policy/connect-src/worker-connect-src-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/connect-src/worker-connect-src-allowed.sub.html new file mode 100644 index 00000000000..5a5e29f6684 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/worker-connect-src-allowed.sub.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="connect-src 'self'; script-src 'self' 'unsafe-inline';"> + <title>worker-connect-src-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["xhr allowed"]'></script> + <script src='../support/alertAssert.sub.js?alerts=[]'></script> + +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log('Fail'); + }); + + try { + var worker = new Worker('/content-security-policy/connect-src/support/worker-make-xhr.sub.js'); + worker.onmessage = function(event) { + log(event.data); + }; + } catch (e) { + log(e); + } + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/connect-src/worker-connect-src-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/connect-src/worker-connect-src-blocked.sub.html new file mode 100644 index 00000000000..a0ff32b2d4c --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/worker-connect-src-blocked.sub.html @@ -0,0 +1,38 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="connect-src *; script-src 'self' 'unsafe-inline';"> + <title>worker-connect-src-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["xhr blocked","TEST COMPLETE"]'></script> + <script src='../support/alertAssert.sub.js?alerts=[]'></script> +</head> +<p>This test loads a worker, which is delivered with its own + policy. The worker should be blocked from making an XHR + as that policy specifies a connect-src 'none', though + this resource's policy is connect-src *. No report + should be sent since the worker's policy doesn't specify + a report-uri.</p> +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log('Fail'); + }); + + try { + var worker = new Worker('/content-security-policy/connect-src/support/worker-make-xhr-blocked.sub.js'); + worker.onmessage = function(event) { + log(event.data); + }; + } catch (e) { + log(e); + } + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/connect-src/worker-from-guid.sub.html b/tests/wpt/web-platform-tests/content-security-policy/connect-src/worker-from-guid.sub.html new file mode 100644 index 00000000000..6f74e4ff3bf --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/connect-src/worker-from-guid.sub.html @@ -0,0 +1,64 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="connect-src 'self'; script-src 'self' 'unsafe-inline' blob:;"> + <title>worker-connect-src-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["violated-directive=connect-src","xhr blocked","TEST COMPLETE"]'></script> + <script src='../support/alertAssert.sub.js?alerts=[]'></script> +</head> +<p>This test loads a worker, from a guid. + The worker should be blocked from making an XHR + to www1 as this resource's policy is connect-src 'self + and a guid Worker should inherit is parent's policy. + A report should be sent to the report-uri specified + with this resource.</p> +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + try { + var blob = new Blob([ + "var xhr = new XMLHttpRequest;" + + "xhr.onerror = function () {" + + " postMessage('xhr blocked');" + + " postMessage('TEST COMPLETE');" + + "};" + + "xhr.onload = function () {" + + " if (xhr.responseText == 'FAIL') {" + + " postMessage('xhr allowed');" + + " } else {" + + " postMessage('xhr blocked');" + + " }" + + " postMessage('TEST COMPLETE');" + + "};" + + "try { " + + " xhr.open(" + + " 'GET'," + + " 'http:///content-security-policy/support/fail.asis'," + + " true" + + " );" + + " xhr.send();" + + "} catch (e) {" + + " postMessage('xhr blocked');" + + " postMessage('TEST COMPLETE');" + + "}"], + {type : 'application/javascript'}); + var url = URL.createObjectURL(blob); + var worker = new Worker(url); + worker.onmessage = function(event) { + log(event.data); + }; + } catch (e) { + log(e); + } + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/default-src/default-src-inline-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/default-src/default-src-inline-allowed.sub.html new file mode 100644 index 00000000000..8f9bd81d395 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/default-src/default-src-inline-allowed.sub.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("FAIL"); + }); + </script> + <meta http-equiv="Content-Security-Policy" content="default-src 'self' about: 'unsafe-inline'; connect-src 'self';"> + <title>default-src-inline-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="../support/logTest.sub.js?logs=[]"></script> + <script src='../support/alertAssert.sub.js?alerts=["PASS 1 of 2","PASS 2 of 2"]'></script> +</head> + +<body onload="alert_assert('PASS 2 of 2')"> + <script> + alert_assert('PASS 1 of 2'); + + </script> + <!--iframe src="javascript:alert_assert('Fail')"></iframe--> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/default-src/default-src-inline-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/default-src/default-src-inline-blocked.sub.html new file mode 100644 index 00000000000..86873553c6b --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/default-src/default-src-inline-blocked.sub.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + </script> + <meta http-equiv="Content-Security-Policy" content="default-src 'self'; connect-src 'self';"> + <title>default-src-inline-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["violated-directive=script-src","violated-directive=script-src"]'></script> + <script src='../support/alertAssert.sub.js?alerts=[]'></script> +</head> + +<body> + <p>This test passes if the inline scripts don't create failing tests and a CSP report is sent.</p> + <script> + test(function() { + assert_unreached('FAIL inline script ran') + }); + + </script> + <script src="../support/document-write-alert-fail.js"></script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-allowed.sub.html new file mode 100644 index 00000000000..418d6f51b0f --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-allowed.sub.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="form-action 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>form-action-src-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS","TEST COMPLETE"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log('Fail'); + }); + window.addEventListener("message", function(event) { + log(event.data); + }, false); + window.addEventListener('load', function() { + setTimeout(function() { + document.getElementById('submit').click(); + log("TEST COMPLETE"); + }, 0); + }); + + </script> +</head> + +<body> + <iframe name="test_target" id="test_iframe"></iframe> + + <form action="/common/redirect.py?location=/content-security-policy/support/postmessage-pass.html" id="theform" method="post" target="test_target"> + <input type="text" name="fieldname" value="fieldvalue"> + <input type="submit" id="submit" value="submit"> + </form> + <p>Tests that allowed form actions work correctly.</p> + <div id="log"></div> + </body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-blocked.sub.html new file mode 100644 index 00000000000..a113d9a2643 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-blocked.sub.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="form-action 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>form-action-src-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["violated-directive=form-action","TEST COMPLETE"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log('violated-directive=' + e.violatedDirective); + }); + window.addEventListener("message", function(event) { + alert_assert(event.data); + }, false); + window.addEventListener('load', function() { + setTimeout(function() { + document.getElementById('submit').click(); + }, 0); + }); + setTimeout(function() {log("TEST COMPLETE");}, 1); + + </script> +</head> + +<body> + <iframe name="test_target" id="test_iframe"></iframe> + <form action="/common/redirect.py?location=/content-security-policy/support/postmessage-fail.html" id="theform" method="post" target="test_target"> + <input type="text" name="fieldname" value="fieldvalue"> + <input type="submit" id="submit" value="submit"> + </form> + <p>Tests that blocking form actions works correctly.</p> + <div id="log"></div> + + </body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-default-ignored.sub.html b/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-default-ignored.sub.html new file mode 100644 index 00000000000..58db5bf7355 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-default-ignored.sub.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; style-src 'self'; frame-src 'self';"> + <title>form-action-src-default-ignored</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS","TEST COMPLETE"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log('Fail'); + }); + window.addEventListener("message", function(event) { + log(event.data); + }, false); + window.addEventListener('load', function() { + setTimeout(function() { + document.getElementById('submit').click(); + log("TEST COMPLETE"); + }, 0); + }); + + </script> +</head> + +<body> + <iframe name="test_target" id="test_iframe"></iframe> + + <form action="/common/redirect.py?location=/content-security-policy/support/postmessage-pass.html" id="theform" method="post" target="test_target"> + <input type="text" name="fieldname" value="fieldvalue"> + <input type="submit" id="submit" value="submit"> + </form> + <p>Tests that default-src does not cascade to form-action.</p> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-get-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-get-allowed.sub.html new file mode 100644 index 00000000000..1dd7fbcd41b --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-get-allowed.sub.html @@ -0,0 +1,41 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="form-action 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>form-action-src-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS","TEST COMPLETE"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log('Fail'); + }); + window.addEventListener("message", function(event) { + log(event.data); + }, false); + window.addEventListener('load', function() { + setTimeout(function() { + document.getElementById('submit').click(); + log("TEST COMPLETE"); + }, 0); + }); + + </script> +</head> + +<body> + <iframe name="test_target" id="test_iframe"></iframe> + + <form action="/content-security-policy/support/postmessage-pass.html" id="theform" method="get" target="test_target"> + <input type="text" name="fieldname" value="fieldvalue"> + <input type="submit" id="submit" value="submit"> + </form> + <p>Tests that allowed form actions work correctly + with GET and a redirect.</p> + <div id="log"></div> + </body> + +</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-get-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-get-blocked.sub.html new file mode 100644 index 00000000000..638badc73a4 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-get-blocked.sub.html @@ -0,0 +1,42 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="form-action 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>form-action-src-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["violated-directive=form-action","TEST COMPLETE"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log('violated-directive=' + e.violatedDirective); + }); + window.addEventListener("message", function(event) { + alert_assert(event.data); + }, false); + window.addEventListener('load', function() { + setTimeout(function() { + document.getElementById('submit').click(); + log("TEST COMPLETE"); + }, 0); + }); + + </script> +</head> + +<body> + <iframe name="test_target" id="test_iframe"></iframe> + + <form action="/common/redirect.py?location=/content-security-policy/support/postmessage-fail.html" id="theform" method="get" target="test_target"> + <input type="text" name="fieldname" value="fieldvalue"> + <input type="submit" id="submit" value="submit"> + </form> + <p>Tests that disallowed form actions are blocked + with GET and redirects.</p> + <div id="log"></div> +"></script> + </body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-javascript-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-javascript-blocked.sub.html new file mode 100644 index 00000000000..6997ef6e860 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-javascript-blocked.sub.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="form-action 'none'; script-src 'self' 'nonce-noncynonce'; connect-src 'self';"> + <title>form-action-src-javascript-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["violated-directive=form-action","TEST COMPLETE"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> + <script nonce='noncynonce'> + window.addEventListener('securitypolicyviolation', function(e) { + log('violated-directive=' + e.violatedDirective); + }); + window.addEventListener('load', function() { + setTimeout(function() { + document.getElementById('submit').click(); + log("TEST COMPLETE"); + }, 0); + }); + </script> +</head> + +<body> + <form action="javascript:log("FAIL!")" id="theform" method="post"> + <input type="text" name="fieldname" value="fieldvalue"> + <input type="submit" id="submit" value="submit"> + </form> + <p>Tests that blocking form actions works correctly. If this test passes, a CSP violation will be generated, and will not see a JavaScript alert.</p> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-javascript-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-javascript-blocked.sub.html.sub.headers new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-javascript-blocked.sub.html.sub.headers diff --git a/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-redirect-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-redirect-blocked.sub.html new file mode 100644 index 00000000000..86dfe7a03d2 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/form-action/form-action-src-redirect-blocked.sub.html @@ -0,0 +1,41 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="form-action 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>form-action-src-redirect-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["violated-directive=form-action","TEST COMPLETE"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log('violated-directive=' + e.violatedDirective); + }); + window.addEventListener("message", function(event) { + alert_assert(event.data); + }, false); + window.addEventListener('load', function() { + setTimeout(function() { + document.getElementById('submit').click(); + log("TEST COMPLETE"); + }, 0); + }); + setTimeout(function() {}, 1000); + + </script> +</head> + +<body> + <iframe name="test_target" id="test_iframe"></iframe> + + <form id="form1" action="/common/redirect.py?location=http://{{domains[www1]}}:{{ports[http][0]}}/content-security-policy/support/postmessage-fail.html" method="post" target="test_target"> + <input type="text" name="fieldname" value="fieldvalue"> + <input type="submit" id="submit" value="submit"> + </form> + <p>Tests that blocking a POST form with a redirect works correctly. If this test passes, a CSP violation will be generated.</p> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/frame-src/frame-src-about-blank-allowed-by-default.sub.html b/tests/wpt/web-platform-tests/content-security-policy/frame-src/frame-src-about-blank-allowed-by-default.sub.html new file mode 100644 index 00000000000..8211d0847a8 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/frame-src/frame-src-about-blank-allowed-by-default.sub.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="frame-src 'none'; object-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>frame-src-about-blank-allowed-by-default</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> + + <p>These frames should not be blocked by Content-Security-Policy. + It's pointless to block about:blank iframes because + blocking a frame just results in displaying about:blank anyway! + </p> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); + </script> + + <iframe src="about:blank"></iframe> + <object type="text/html" data="about:blank"></object> + + <div id="log"></div> + <script> + log("PASS"); + </script> +</body> + +</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/frame-src/frame-src-about-blank-allowed-by-scheme.sub.html b/tests/wpt/web-platform-tests/content-security-policy/frame-src/frame-src-about-blank-allowed-by-scheme.sub.html new file mode 100644 index 00000000000..ffa8638f8da --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/frame-src/frame-src-about-blank-allowed-by-scheme.sub.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="frame-src about:; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>frame-src-about-blank-allowed-by-scheme</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> + + <p>This frame should not be blocked by Content-Security-Policy. + </p> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); + </script> + + <iframe src="about:blank"></iframe> + <div id="log"></div> + <script> + log("PASS"); + </script> +</body> + +</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/frame-src/frame-src-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/frame-src/frame-src-allowed.sub.html new file mode 100644 index 00000000000..470850df72d --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/frame-src/frame-src-allowed.sub.html @@ -0,0 +1,64 @@ +<!DOCTYPE html> +<html> + +<head> + <title>frame-src-allowed</title> + <meta http-equiv="Content-Security-Policy" content="frame-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS IFrame %231 generated a load event."]'></script> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); + + window.addEventListener("message", function(event) { + alert_assert(event.data); + }, false); + + var t_alert = async_test('Expecting alerts: ["PASS"]'); + var expected_alerts = ["PASS"]; + + function alert_assert(msg) { + t_alert.step(function() { + if (msg.match(/^FAIL/i)) { + assert_unreached(msg); + t_alert.done(); + } + for (var i = 0; i < expected_alerts.length; i++) { + if (expected_alerts[i] == msg) { + assert_true(expected_alerts[i] == msg); + expected_alerts.splice(i, 1); + if (expected_alerts.length == 0) { + t_alert.done(); + } + return; + } + } + assert_unreached('unexpected alert: ' + msg); + t_log.done(); + }); + } + + </script> + <p> + This iframe should be allowed. + </p> + <script> + window.wasPostTestScriptParsed = true; + var loads = 0; + + function loadEvent() { + loads++; + log("PASS " + "IFrame #" + loads + " generated a load event."); + } + + </script> +</head> + +<body> + <iframe src="/content-security-policy/support/postmessage-pass.html" onload="loadEvent()"></iframe> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/frame-src/frame-src-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/frame-src/frame-src-blocked.sub.html new file mode 100644 index 00000000000..7dbe87b347f --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/frame-src/frame-src-blocked.sub.html @@ -0,0 +1,62 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="frame-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>frame-src-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS IFrame %231 generated a load event.","violated-directive=frame-src"]'></script> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + + window.addEventListener("message", function(event) { + alert_assert(event.data); + }, false); + + function alert_assert(msg) { + t_alert.step(function() { + if (msg.match(/^FAIL/i)) { + assert_unreached(msg); + t_alert.done(); + } + for (var i = 0; i < expected_alerts.length; i++) { + if (expected_alerts[i] == msg) { + assert_true(expected_alerts[i] == msg); + expected_alerts.splice(i, 1); + if (expected_alerts.length == 0) { + t_alert.done(); + } + return; + } + } + assert_unreached('unexpected alert: ' + msg); + t_log.done(); + }); + } + + </script> + <p> + IFrames blocked by CSP should generate a 'load', not 'error' event, regardless of blocked state. This means they appear to be normal cross-origin loads, thereby not leaking URL information directly to JS. + </p> + <script> + window.wasPostTestScriptParsed = true; + var loads = 0; + + function loadEvent() { + loads++; + log("PASS " + "IFrame #" + loads + " generated a load event."); + } + + </script> +</head> + +<body> + <iframe src="/content-security-policy/support/postmessage-fail.html" onload="loadEvent()" onerror="log('FAIL')"></iframe> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/frame-src/frame-src-cross-origin-load.sub.html b/tests/wpt/web-platform-tests/content-security-policy/frame-src/frame-src-cross-origin-load.sub.html new file mode 100644 index 00000000000..341262d1456 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/frame-src/frame-src-cross-origin-load.sub.html @@ -0,0 +1,68 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="frame-src 'self' http://www1.{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>frame-src-cross-origin-load</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS IFrame %231 generated a load event.","PASS IFrame %232 generated a load event.","PASS IFrame %233 generated a load event.","violated-directive=frame-src"]'></script> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + + window.addEventListener("message", function(event) { + alert_assert(event.data); + }, false); + + var t_alert = async_test('Expecting alerts: ["PASS","PASS"]'); + var expected_alerts = ["PASS", "PASS"]; + + function alert_assert(msg) { + t_alert.step(function() { + if (msg.match(/^FAIL/i)) { + assert_unreached(msg); + t_alert.done(); + } + for (var i = 0; i < expected_alerts.length; i++) { + if (expected_alerts[i] == msg) { + assert_true(expected_alerts[i] == msg); + expected_alerts.splice(i, 1); + if (expected_alerts.length == 0) { + t_alert.done(); + } + return; + } + } + assert_unreached('unexpected alert: ' + msg); + t_alert.done(); + }); + } + + </script> + + <p> + IFrames blocked by CSP should generate a 'load', not 'error' event, regardless of blocked state. This means they appear to be normal cross-origin loads, thereby not leaking URL information directly to JS. + </p> + <script> + window.wasPostTestScriptParsed = true; + var loads = 0; + + function loadEvent() { + loads++; + log("PASS " + "IFrame #" + loads + " generated a load event."); + } + + </script> +</head> + +<body> + <iframe src="../support/postmessage-pass.html" onload="loadEvent()"></iframe> + <iframe src="http://www1.{{host}}:{{ports[http][0]}}/content-security-policy/support/postmessage-pass.html" onload="loadEvent()"></iframe> + <iframe src="http://www2.{{host}}:{{ports[http][0]}}/content-security-policy/support/postmessage-fail.html" onload="loadEvent()" onerror="log('FAIL')"></iframe> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/duplicate-directive.sub.html b/tests/wpt/web-platform-tests/content-security-policy/generic/duplicate-directive.sub.html new file mode 100644 index 00000000000..7810533e455 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/generic/duplicate-directive.sub.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-inline'; script-src 'none'; connect-src 'self';"> + <title>duplicate-directive</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="../support/logTest.sub.js?logs=[]"></script> + <script src='../support/alertAssert.sub.js?alerts=["PASS (1/1)"]'></script> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + alert_assert("FAIL"); + }); + alert_assert('PASS (1/1)'); + </script> +</head> + +<body> + <p> + This tests the effect of duplicated directives. It passes if the alert_assert() is executed. + </p> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/filesystem-urls-do-not-match-self.sub.html b/tests/wpt/web-platform-tests/content-security-policy/generic/filesystem-urls-do-not-match-self.sub.html new file mode 100644 index 00000000000..401b65a898d --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/generic/filesystem-urls-do-not-match-self.sub.html @@ -0,0 +1,60 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>filesystem-urls-do-not-match-self</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["violated-directive=script-src"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <p> + filesystem: URLs are same-origin with the page in which they were created, but explicitly do not match the 'self' or '*' source in CSP directives because they are more akin to 'unsafe-inline' content.. + </p> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + + if(!window.webkitRequestFileSystem) { + t_log = async_test(); + t_log.set_status(t_log.NOTRUN, "No filesystem:// support, cannot run test."); + t_log.phase = t_log.phases.HAS_RESULT; + t_log.done(); + log("violated-directive=script-src"); // simulate needed logs to pass test + } else { + function fail() { + alert_assert("FAIL!"); + } + window.webkitRequestFileSystem( + TEMPORARY, 1024 * 1024 /*1MB*/ , function(fs) { + fs.root.getFile('fail.js', { + create: true + }, function(fileEntry) { + fileEntry.createWriter(function(fileWriter) { + fileWriter.onwriteend = function(e) { + var script = document.createElement('script'); + script.src = fileEntry.toURL('application/javascript'); + document.body.appendChild(script); + }; + // Create a new Blob and write it to pass.js. + var b = new Blob(['fail();'], { + type: 'application/javascript' + }); + fileWriter.write(b); + }); + }); + }); + } + + + </script> + <div id="log"></div> + +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/filesystem-urls-match-filesystem.sub.html b/tests/wpt/web-platform-tests/content-security-policy/generic/filesystem-urls-match-filesystem.sub.html new file mode 100644 index 00000000000..28cad3a89d9 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/generic/filesystem-urls-match-filesystem.sub.html @@ -0,0 +1,57 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' filesystem:; connect-src 'self';"> + <title>filesystem-urls-match-filesystem</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS (1/1)"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <p> + filesystem: URLs are same-origin with the page in which they were created, but explicitly do not match the 'self' or '*' source in CSP directives because they are more akin to 'unsafe-inline' content, but should match filesystem: source. + </p> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); + + if(!window.webkitRequestFileSystem) { + t_log.set_status(t_log.NOTRUN, "No filesystem:// support, cannot run test."); + t_log.phase = t_log.phases.HAS_RESULT; + t_log.done(); + log("PASS (1/1)"); // simulate needed logs to pass test + } else { + function pass() { + log("PASS (1/1)"); + } + window.webkitRequestFileSystem( + TEMPORARY, 1024 * 1024 /*1MB*/ , function(fs) { + fs.root.getFile('pass.js', { + create: true + }, function(fileEntry) { + fileEntry.createWriter(function(fileWriter) { + fileWriter.onwriteend = function(e) { + var script = document.createElement('script'); + script.src = fileEntry.toURL('application/javascript'); + document.body.appendChild(script); + }; + // Create a new Blob and write it to pass.js. + var b = new Blob(['pass();'], { + type: 'application/javascript' + }); + fileWriter.write(b); + }); + }); + }); + } + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_1-img-src.html b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_1-img-src.html index 0c102158985..3644fe3faba 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_1-img-src.html +++ b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_1-img-src.html @@ -2,6 +2,7 @@ <html> <head> <title>default-src should cascade to img-src directive</title> + <meta http-equiv="Content-Security-Policy" content="default-src 'self' 'unsafe-inline';"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> <script src='../support/siblingPath.js'></script> @@ -13,6 +14,11 @@ <script> var imgsrc = async_test("Verify cascading of default-src to img-src policy"); var onerrorFired = false; + var t_spv = async_test("Should fire violation events for every failed violation"); + + window.addEventListener("securitypolicyviolation", t_spv.step_func_done(function(e) { + assert_equals(e.violatedDirective, "img-src"); + })); </script> <img id='imgfail' src='' @@ -28,8 +34,5 @@ imgsrc.done(); } </script> - - <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=img-src%20%27self%27%20%27unsafe-inline%27'></script> - </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_1-img-src.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_1-img-src.html.sub.headers deleted file mode 100644 index 61bdc0a305e..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_1-img-src.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: generic-0_1-img-src={{$id:uuid()}}; Path=/content-security-policy/generic/ -Content-Security-Policy: default-src 'self' 'unsafe-inline'; report-uri ../support/report.py?op=put&reportID={{$id}}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_1-script-src.html b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_1-script-src.html index e4f0d1d5054..d27b922565b 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_1-script-src.html +++ b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_1-script-src.html @@ -2,6 +2,7 @@ <html> <head> <title>default-src should cascade to script-src directive</title> + <meta http-equiv="Content-Security-Policy" content="default-src 'self' 'unsafe-inline'; report-uri ../support/report.py?op=put&reportID={{$id}}"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> <script src='../support/siblingPath.js'></script> @@ -14,6 +15,11 @@ var scriptsrc1 = async_test("Verify cascading of default-src to script-src policy: block"); var scriptsrc2 = async_test("Verify cascading of default-src to script-src policy: allow"); var allowedScriptRan = false; + var t_spv = async_test("Should fire violation events for every failed violation"); + + window.addEventListener("securitypolicyviolation", t_spv.step_func_done(function(e) { + assert_equals(e.violatedDirective, "script-src"); + })); </script> <script src='pass-0_1.js'></script> @@ -28,8 +34,5 @@ scriptsrc2.done(); } </script> - - <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=script-src%20%27self%27%20%27unsafe-inline%27'></script> - </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_1-script-src.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_1-script-src.html.sub.headers deleted file mode 100644 index b3ff8c460f5..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_1-script-src.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: generic-0_1-script-src={{$id:uuid()}}; Path=/content-security-policy/generic/ -Content-Security-Policy: default-src 'self' 'unsafe-inline'; report-uri ../support/report.py?op=put&reportID={{$id}}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_10.html b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_10.html index 703e50b4460..5dfd9d83c7f 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_10.html +++ b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_10.html @@ -2,20 +2,26 @@ <html> <head> <title>test implicit port number matching (requires port 80)</title> + <meta http-equiv="Content-Security-Policy content="script-src 'self' www.{{host}} 'unsafe-inline';"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> <script> + var t = async_test("Test that script does not fire violation event"); + window.addEventListener("securitypolicyviolation", t.unreached_func("Should not have fired a violation event")); + var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; script.src = "http://www." + location.hostname + "/content-security-policy/generic/positiveTest.js"; head.appendChild(script); </script> + + <script> + t.done(); + </script> </head> <body> <h1>test implicit port number matching (requires port 80)</h1> <div id='log'></div> - - <script async defer src='../support/checkReport.sub.js?reportExists=false'></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_10.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_10.html.sub.headers deleted file mode 100644 index c58b0536ff7..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_10.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: generic-0_10={{$id:uuid()}}; Path=/content-security-policy/generic/ -Content-Security-Policy: script-src 'self' www.{{host}} 'unsafe-inline'; report-uri ../support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_10_1.sub.html b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_10_1.sub.html index c66640de333..107ab905bcf 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_10_1.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_10_1.sub.html @@ -2,10 +2,16 @@ <html> <head> <title>implicit port number matching fails with a different port</title> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' www.{{host}} 'unsafe-inline';"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> <script src='negativeTests.js'></script> <script> + var t_spv = async_test("Should fire violation events for every failed violation"); + window.addEventListener("securitypolicyviolation", t_spv.step_func_done(function(e) { + assert_equals(e.violatedDirective, "script-src"); + })); + var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; @@ -16,7 +22,5 @@ <body> <h1>implicit port number matching fails with a different port</h1> <div id='log'></div> - - <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=script-src%20%27self%27%20www.{{host}}%20%27unsafe-inline%27'></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_10_1.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_10_1.sub.html.sub.headers deleted file mode 100644 index e8fcf07c203..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_10_1.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: generic-0_10_1={{$id:uuid()}}; Path=/content-security-policy/generic/ -Content-Security-Policy: script-src 'self' www.{{host}} 'unsafe-inline'; report-uri ../support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_2.html b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_2.html index 130bfadad96..ecfeaf66cb5 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_2.html +++ b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_2.html @@ -2,14 +2,20 @@ <html> <head> <title>'self' keyword positive test</title> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'nonce-abc';"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> + <script nonce='abc'> + var t_spv = async_test("Should fire violation events for every failed violation"); + window.addEventListener("securitypolicyviolation", t_spv.step_func_done(function(e) { + assert_equals(e.violatedDirective, "script-src"); + })); + </script> <script src='positiveTest.js'></script> + <script nonce='abc'>t_spv.done();</script> </head> <body> <h1>'self' keyword positive test</h1> <div id='log'></div> - - <script async defer src='../support/checkReport.sub.js?reportExists=false'></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_2.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_2.html.sub.headers deleted file mode 100644 index 776112de60d..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_2.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: generic-0_2={{$id:uuid()}}; Path=/content-security-policy/generic/ -Content-Security-Policy: script-src 'self'; report-uri ../support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_2_2.sub.html b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_2_2.sub.html index 9d274ea597e..cdb6238e4e0 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_2_2.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_2_2.sub.html @@ -2,10 +2,16 @@ <html> <head> <title>'self' fails with a different port</title> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> <script src='negativeTests.js'></script> <script> + var t_spv = async_test("Should fire violation events for every failed violation"); + window.addEventListener("securitypolicyviolation", t_spv.step_func_done(function(e) { + assert_equals(e.violatedDirective, "script-src"); + })); + var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; @@ -16,7 +22,5 @@ <body> <h1>'self' fails with a different port</h1> <div id='log'></div> - - <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=script-src%20%27self%27%20%27unsafe-inline%27'></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_2_2.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_2_2.sub.html.sub.headers deleted file mode 100644 index 769ccc154e5..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_2_2.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: generic-0_2_2={{$id:uuid()}}; Path=/content-security-policy/generic/ -Content-Security-Policy: script-src 'self' 'unsafe-inline'; report-uri ../support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_2_3.html b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_2_3.html index ff4b8db8a78..754c9a3288f 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_2_3.html +++ b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_2_3.html @@ -2,10 +2,16 @@ <html> <head> <title>'self' fails with a different host (including sub-host e.g. foo.com as self with content from bar.foo.com)</title> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> <script src='negativeTests.js'></script> <script> + var t_spv = async_test("Should fire violation events for every failed violation"); + window.addEventListener("securitypolicyviolation", t_spv.step_func_done(function(e) { + assert_equals(e.violatedDirective, "script-src"); + })); + var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; @@ -16,7 +22,5 @@ <body> <h1>'self' fails with a different host (including sub-host e.g. foo.com as self with content from bar.foo.com)</h1> <div id='log'></div> - - <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=script-src%20%27self%27%20%27unsafe-inline%27'></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_2_3.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_2_3.html.sub.headers deleted file mode 100644 index 0a8defccd6c..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_2_3.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: generic-0_2_3={{$id:uuid()}}; Path=/content-security-policy/generic/ -Content-Security-Policy: script-src 'self' 'unsafe-inline'; report-uri ../support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_8.html b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_8.html deleted file mode 100644 index 2e7df3776ad..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_8.html +++ /dev/null @@ -1,22 +0,0 @@ -<!DOCTYPE HTML> -<html> -<head> - <title>test wildcard host name matching (*.web-platform.test is good)</title> - <script src='/resources/testharness.js'></script> - <script src='/resources/testharnessreport.js'></script> - <script src='wildcardHostTest.js'></script> - <script> - var head = document.getElementsByTagName('head')[0]; - var script = document.createElement('script'); - script.type = 'text/javascript'; - script.src = "http://www." + location.hostname + ":" + location.port + "/content-security-policy/generic/wildcardHostTestSuceeds.js"; - head.appendChild(script); - </script> -</head> -<body> - <h1>test wildcard host name matching (*.web-platform.test is good)</h1> - <div id='log'></div> - - <script async defer src='../support/checkReport.sub.js?reportExists=false'></script> -</body> -</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_8.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_8.html.sub.headers deleted file mode 100644 index 34756f9dbe0..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_8.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: generic-0_8={{$id:uuid()}}; Path=/content-security-policy/generic/ -Content-Security-Policy: script-src 'self' *.{{host}}:{{ports[http][0]}} 'unsafe-inline'; report-uri ../support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_8.sub.html b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_8.sub.html new file mode 100644 index 00000000000..78f7aa0cfa6 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_8.sub.html @@ -0,0 +1,28 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>test wildcard host name matching (*.web-platform.test is good)</title> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' *.{{host}}:{{ports[http][0]}} 'unsafe-inline';"> + <script src='/resources/testharness.js'></script> + <script src='/resources/testharnessreport.js'></script> + <script src='wildcardHostTest.js'></script> + <script> + var t = async_test("Test that script does not fire violation event"); + window.addEventListener("securitypolicyviolation", t.unreached_func("Should not have fired a violation event")); + + var head = document.getElementsByTagName('head')[0]; + var script = document.createElement('script'); + script.type = 'text/javascript'; + script.src = "http://www." + location.hostname + ":" + location.port + "/content-security-policy/generic/wildcardHostTestSuceeds.js"; + head.appendChild(script); + </script> + + <script> + t.done(); + </script> +</head> +<body> + <h1>test wildcard host name matching (*.web-platform.test is good)</h1> + <div id='log'></div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_8_1.sub.html b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_8_1.sub.html index 167b4458da7..1a2096f78eb 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_8_1.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_8_1.sub.html @@ -2,10 +2,16 @@ <html> <head> <title>test wildcard host name matching (www*.web-platform.test is bad, *www.web-platform.test is bad)</title> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' *w.{{host}}:{{ports[http][0]}} w*.{{host}}:{{ports[http][0]}} 'unsafe-inline';"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> <script src='wildcardHostTestFailure.js'></script> <script> + var t_spv = async_test("Should fire violation events for every failed violation"); + window.addEventListener("securitypolicyviolation", t_spv.step_func_done(function(e) { + assert_equals(e.violatedDirective, "script-src"); + })); + var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; @@ -16,6 +22,5 @@ <body> <h1>test wildcard host name matching (www*.web-platform.test is bad, *www.web-platform.test is bad)</h1> <div id='log'></div> - <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=script-src%20%27self%27%20*w.{{host}}:{{ports[http][0]}}%20w*.{{host}}:{{ports[http][0]}}%20%27unsafe-inline%27'></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_8_1.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_8_1.sub.html.sub.headers deleted file mode 100644 index 57a038a0539..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_8_1.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: generic-0_8_1={{$id:uuid()}}; Path=/content-security-policy/generic/ -Content-Security-Policy: script-src 'self' *w.{{host}}:{{ports[http][0]}} w*.{{host}}:{{ports[http][0]}} 'unsafe-inline'; report-uri ../support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_9.sub.html b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_9.sub.html index cadeb178f3a..150876c917d 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_9.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_9.sub.html @@ -2,21 +2,27 @@ <html> <head> <title>test wildcard port number matching</title> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' {{host}}:* 'unsafe-inline';"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> <script src='wildcardPortTest.js'></script> <script> + var t = async_test("Test that script does not fire violation event"); + window.addEventListener("securitypolicyviolation", t.unreached_func("Should not have fired a violation event")); + var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; script.src = "http://" + location.hostname + ":{{ports[http][1]}}/content-security-policy/generic/wildcardPortTestSuceeds.js"; head.appendChild(script); </script> + + <script> + t.done(); + </script> </head> <body> <h1>test wildcard port number matching</h1> - <div id='log'></div> - - <script async defer src='../support/checkReport.sub.js?reportExists=false'></script> + <div id='log'></div> </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_9.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_9.sub.html.sub.headers deleted file mode 100644 index 2f23360097d..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/generic/generic-0_9.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: generic-0_9={{$id:uuid()}}; Path=/content-security-policy/generic/ -Content-Security-Policy: script-src 'self' {{host}}:* 'unsafe-inline'; report-uri ../support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/policy-does-not-affect-child.sub.html b/tests/wpt/web-platform-tests/content-security-policy/generic/policy-does-not-affect-child.sub.html new file mode 100644 index 00000000000..e36ca477b5a --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/generic/policy-does-not-affect-child.sub.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'nonce-abc';"> + <title>object-src-url-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <script nonce='abc'> + window.onmessage = function(e) { + log(e.data); + } + </script> + <iframe src="support/log-pass.html"></iframe> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/support/log-pass.html b/tests/wpt/web-platform-tests/content-security-policy/generic/support/log-pass.html new file mode 100644 index 00000000000..4334ea4c66b --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/generic/support/log-pass.html @@ -0,0 +1,3 @@ +<script> + window.parent.postMessage('PASS', '*'); +</script> diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/support/sandboxed-eval.sub.html b/tests/wpt/web-platform-tests/content-security-policy/generic/support/sandboxed-eval.sub.html new file mode 100644 index 00000000000..9480e521de2 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/generic/support/sandboxed-eval.sub.html @@ -0,0 +1,4 @@ +<script> + window.parent.postMessage('PASS (1/2): Script can execute', '*'); + eval("window.parent.postMessage('PASS (2/2): Eval works', '*')"); +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/generic/support/sandboxed-eval.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/generic/support/sandboxed-eval.sub.html.sub.headers new file mode 100644 index 00000000000..c7e4e7cc5bd --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/generic/support/sandboxed-eval.sub.html.sub.headers @@ -0,0 +1 @@ +Content-Security-Policy: sandbox allow-scripts
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/img-src/icon-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/img-src/icon-allowed.sub.html new file mode 100644 index 00000000000..7358944f476 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/img-src/icon-allowed.sub.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html> +<head> + <meta http-equiv="Content-Security-Policy" content="img-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <script src='/resources/testharness.js'></script> + <script src='/resources/testharnessreport.js'></script> +</head> +<body> + <p>Use callbacks to show that favicons are loaded as allowed by CSP when link tags are dynamically added to the page.</p> + <script> + var t = async_test("Test that image loads"); + window.addEventListener("securitypolicyviolation", t.unreached_func("Should not have triggered any violation events")); + + function createLink(rel, src) { + var link = document.createElement('link'); + link.rel = rel; + link.href = src; + link.onload = t.done(); + link.onerror = t.unreached_func('The image should have loaded'); + document.body.appendChild(link); + } + window.addEventListener('DOMContentLoaded', function() { + createLink('icon', '../support/pass.png'); + }); + + </script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/img-src/icon-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/img-src/icon-blocked.sub.html new file mode 100644 index 00000000000..42500fc3ad2 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/img-src/icon-blocked.sub.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<html> +<head> + <meta http-equiv="Content-Security-Policy" content="img-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <script src='/resources/testharness.js'></script> + <script src='/resources/testharnessreport.js'></script> +</head> +<body> +<p>Use callbacks to show that favicons are not loaded in violation of CSP when link tags are dynamically added to the page.</p> + <script> + var t = async_test("Test that image does not load"); + var t_spv = async_test("Test that spv event is fired"); + window.addEventListener("securitypolicyviolation", t_spv.step_func_done(function(e) { + assert_equals(e.violatedDirective, 'img-src'); + assert_true(e.blockedURI.endsWith('/support/fail.png')); + })); + + function createLink(rel, src) { + var link = document.createElement('link'); + link.rel = rel; + link.href = src; + link.onerror = t.done(); + link.onload = t.unreached_func('The image should not have loaded'); + document.head.appendChild(link); + } + window.addEventListener('DOMContentLoaded', function() { + createLink('icon', '../support/fail.png'); + }); + + </script> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/img-src/report-blocked-data-uri.sub.html b/tests/wpt/web-platform-tests/content-security-policy/img-src/report-blocked-data-uri.sub.html new file mode 100644 index 00000000000..7ef1e978fed --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/img-src/report-blocked-data-uri.sub.html @@ -0,0 +1,25 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="img-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>report-blocked-data-uri</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["violated-directive=img-src"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + </script> + + <img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_1.html b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_1.html index 2cd28b47588..8fd094e9553 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_1.html +++ b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_1.html @@ -2,6 +2,7 @@ <html> <head> <title>Video element src attribute must match src list - positive test</title> + <meta http-equiv="Content-Security-Policy" content="script-src * 'unsafe-inline'; media-src 'self'"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> </head> @@ -12,9 +13,15 @@ <script> var src_test = async_test("In-policy async video src"); var source_test = async_test("In-policy async video source element"); + var t_spv = async_test("Should not fire policy violation events"); + var test_count = 2; + window.addEventListener("securitypolicyviolation", t_spv.unreached_func("Should not have fired any event")); function media_loaded(t) { t.done(); + if (--test_count <= 0) { + t_spv.done(); + } } function media_error_handler(t) { @@ -37,8 +44,5 @@ onloadeddata="media_loaded(src_test)" src="/media/A4.ogv"> - <script async defer src="../support/checkReport.sub.js?reportExists=false"> - </script> - </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_1.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_1.html.sub.headers deleted file mode 100644 index 9361207e899..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_1.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: media-src-7_1={{$id:uuid()}}; Path=/content-security-policy/media-src/ -Content-Security-Policy: script-src * 'unsafe-inline'; media-src 'self'; report-uri ../support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_1_2.sub.html b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_1_2.sub.html index 58b566c1dbc..a293d008b35 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_1_2.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_1_2.sub.html @@ -2,7 +2,7 @@ <html> <head> <title>Video element src attribute must match src list - negative test</title> - <meta name=timeout content=long> + <meta http-equiv="Content-Security-Policy" content="script-src * 'unsafe-inline'; media-src 'self';"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> </head> @@ -13,6 +13,15 @@ <script> var src_test = async_test("Disallowed async video src"); var source_test = async_test("Disallowed async video source element"); + var t_spv = async_test("Test that securitypolicyviolation events are fired"); + var test_count = 2; + window.addEventListener("securitypolicyviolation", t_spv.step_func(function(e) { + assert_equals(e.violatedDirective, "media-src"); + assert_equals(e.blockedURI, mediaURL); + if (--test_count <= 0) { + t_spv.done(); + } + })); // we assume tests are run from 'hostname' and 'www.hostname' or 'www2.hostname' is a valid alias var mediaURL = location.protocol + "//{{domains[www2]}}:{{ports[http][0]}}/media/A4.ogv"; @@ -44,7 +53,5 @@ document.getElementById("videoObject2").src = mediaURL; </script> - <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=media-src%20%27self%27'></script> - </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_1_2.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_1_2.sub.html.sub.headers deleted file mode 100644 index 036da86739e..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_1_2.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: media-src-7_1_2={{$id:uuid()}}; Path=/content-security-policy/media-src/ -Content-Security-Policy: script-src * 'unsafe-inline'; media-src 'self'; report-uri ../support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_2.html b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_2.html index 6b70da22c57..0486c8738da 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_2.html +++ b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_2.html @@ -2,6 +2,7 @@ <html> <head> <title>Audio element src attribute must match src list - positive test</title> + <meta http-equiv="Content-Security-Policy" content="script-src * 'unsafe-inline'; media-src 'self';"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> </head> @@ -12,9 +13,15 @@ <script> var src_test = async_test("In-policy audio src"); var source_test = async_test("In-policy audio source element"); + var t_spv = async_test("Should not fire policy violation events"); + var test_count = 2; + window.addEventListener("securitypolicyviolation", t_spv.unreached_func("Should not have fired any event")); function media_loaded(t) { t.done(); + if (--test_count <= 0) { + t_spv.done(); + } } function media_error_handler(t) { @@ -37,8 +44,5 @@ onloadeddata="media_loaded(src_test)" src="/media/sound_5.oga"> - <script async defer src="../support/checkReport.sub.js?reportExists=false"> - </script> - </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_2.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_2.html.sub.headers deleted file mode 100644 index 0f59cd9ffd1..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_2.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: media-src-7_2={{$id:uuid()}}; Path=/content-security-policy/media-src/ -Content-Security-Policy: script-src * 'unsafe-inline'; media-src 'self'; report-uri ../support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_2_2.sub.html b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_2_2.sub.html index 14fce4aecd1..a1f29085afe 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_2_2.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_2_2.sub.html @@ -2,7 +2,7 @@ <html> <head> <title>Audio element src attribute must match src list - negative test</title> - <meta name=timeout content=long> + <meta http-equiv="Content-Security-Policy" content="script-src * 'unsafe-inline'; media-src 'self';"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> </head> @@ -13,6 +13,15 @@ <script> var src_test = async_test("Disallaowed audio src"); var source_test = async_test("Disallowed audio source element"); + var t_spv = async_test("Test that securitypolicyviolation events are fired"); + var test_count = 2; + window.addEventListener("securitypolicyviolation", t_spv.step_func(function(e) { + assert_equals(e.violatedDirective, "media-src"); + assert_equals(e.blockedURI, mediaURL); + if (--test_count <= 0) { + t_spv.done(); + } + })); // we assume tests are run from 'hostname' and 'www.hostname' or 'www2.hostname' is a valid alias var mediaURL = location.protocol + "//{{domains[www2]}}:{{ports[http][0]}}/media/sound_5.oga"; @@ -44,7 +53,5 @@ document.getElementById("audioObject2").src = mediaURL; </script> - <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=media-src%20%27self%27'></script> - </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_2_2.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_2_2.sub.html.sub.headers deleted file mode 100644 index 685978de3a9..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_2_2.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: media-src-7_2_2={{$id:uuid()}}; Path=/content-security-policy/media-src/ -Content-Security-Policy: script-src * 'unsafe-inline'; media-src 'self'; report-uri ../support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_3.sub.html b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_3.sub.html index 552b3af8930..05aa134e820 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_3.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_3.sub.html @@ -2,6 +2,7 @@ <html> <head> <title>Video track src attribute must match src list - positive test</title> + <meta http-equiv="Content-Security-Policy" content="script-src * 'unsafe-inline'; media-src 'self' {{domains[www]}}:{{ports[http][0]}};"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> </head> @@ -12,10 +13,17 @@ <script> var source_test = async_test("In-policy track element"); - var trackURL = location.protocol + "//{{domains[www]}}:{{ports[http][0]}}/media/foo.vtt"; + var trackURL = location.protocol + "//{{domains[www]}}:{{ports[http][0]}}/media/foo.vtt"; + + var t_spv = async_test("Should not fire policy violation events"); + var test_count = 1; + window.addEventListener("securitypolicyviolation", t_spv.unreached_func("Should not have fired any event")); function media_loaded(t) { t.done(); + if (--test_count <= 0) { + t_spv.done(); + } } function media_error_handler(t) { @@ -41,8 +49,5 @@ document.getElementById("trackObject").src = trackURL; </script> - <script async defer src="../support/checkReport.sub.js?reportExists=false"> - </script> - </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_3.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_3.sub.html.sub.headers deleted file mode 100644 index 0e95fe95941..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_3.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: media-src-7_3={{$id:uuid()}}; Path=/content-security-policy/media-src/ -Content-Security-Policy: script-src * 'unsafe-inline'; media-src 'self' {{domains[www]}}:{{ports[http][0]}}; report-uri ../support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_3_2.sub.html b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_3_2.sub.html index 5d13624c091..6abe850624f 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_3_2.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_3_2.sub.html @@ -2,6 +2,7 @@ <html> <head> <title>Video track src attribute must match src list - negative test</title> + <meta http-equiv="Content-Security-Policy" content="script-src * 'unsafe-inline'; media-src 'self';"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> </head> @@ -13,7 +14,18 @@ var source_test = async_test("Disallowed track element onerror handler fires."); - var trackURL = location.protocol + "//{{domains[www]}}:{{ports[http][0]}}/media/foo.vtt"; + var trackURL = location.protocol + "//{{domains[www]}}:{{ports[http][0]}}/media/foo.vtt"; + + var t_spv = async_test("Test that securitypolicyviolation events are fired"); + var test_count = 1; + window.addEventListener("securitypolicyviolation", t_spv.step_func(function(e) { + assert_equals(e.violatedDirective, "media-src"); + assert_equals(e.blockedURI, trackURL); + if (--test_count <= 0) { + t_spv.done(); + } + })); + function media_loaded(t) { t.step( function () { @@ -56,8 +68,5 @@ }, 2 * 1000); </script> - <script async defer src="../support/checkReport.sub.js?reportField=violated-directive&reportValue=media-src%20%27self%27"> - </script> - </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_3_2.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_3_2.sub.html.sub.headers deleted file mode 100644 index 2cfe51fe8e2..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-7_3_2.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: media-src-7_3_2={{$id:uuid()}}; Path=/content-security-policy/media-src/ -Content-Security-Policy: script-src * 'unsafe-inline'; media-src 'self'; report-uri ../support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-blocked.sub.html index 61f1598eb6b..10de725e954 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-blocked.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-blocked.sub.html @@ -2,7 +2,7 @@ <html> <head> <title>Video element src attribute must match src list - 'none' negative test</title> - <meta name=timeout content=long> + <meta http-equiv="Content-Security-Policy" content="script-src * 'unsafe-inline'; media-src 'none'; connect-src 'self';"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> </head> @@ -21,6 +21,16 @@ var v_mediaURL = location.protocol + "//{{domains[www2]}}:{{ports[http][0]}}/media/A4.ogv"; + var t_spv = async_test("Test that securitypolicyviolation events are fired"); + var test_count = 4; + window.addEventListener("securitypolicyviolation", t_spv.step_func(function(e) { + assert_equals(e.violatedDirective, "media-src"); + assert_true(e.blockedURI == a_mediaURL || e.blockedURI == v_mediaURL, "Unexpected blockedURI"); + if (--test_count <= 0) { + t_spv.done(); + } + })); + function media_loaded(t) { t.step( function () { assert_unreached("Media error handler should be triggered for non-allowed domain."); @@ -62,9 +72,5 @@ document.getElementById("audioSourceObject").src = a_mediaURL; document.getElementById("audioObject2").src = a_mediaURL; </script> - - - <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=media-src%20%27self%27'></script> - </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-blocked.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-blocked.sub.html.sub.headers deleted file mode 100644 index 72344214f1a..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-blocked.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: media-src-blocked={{$id:uuid()}}; Path=/content-security-policy/media-src/ -Content-Security-Policy: script-src * 'unsafe-inline'; media-src 'none'; connect-src 'self'; report-uri ../support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-redir-bug.sub.html b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-redir-bug.sub.html index 7012b9cc83f..a0708bf5ed3 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-redir-bug.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-redir-bug.sub.html @@ -2,6 +2,7 @@ <html> <head> <title>Video element src attribute must match src list - positive test</title> + <meta http-equiv="Content-Security-Policy" content="script-src * 'unsafe-inline'; media-src http://{{domains[www2]}}:{{ports[http][0]}}/ 'self'; connect-src 'self';"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> </head> @@ -21,8 +22,15 @@ var source_test = async_test("In-policy async video source element"); var source_redir_test = async_test("In-policy async video source element w/redir"); + var t_spv = async_test("Should not fire policy violation events"); + var test_count = 4; + window.addEventListener("securitypolicyviolation", t_spv.unreached_func("Should not have fired any event")); + function media_loaded(t) { t.done(); + if (--test_count <= 0) { + t_spv.done(); + } } function media_error_handler(t) { @@ -59,8 +67,5 @@ onloadeddata="media_loaded(src_redir_test)" src="/common/redirect.py?location=http://{{domains[www2]}}:{{ports[http][0]}}/media/A4.ogv"> - <script async defer src="../support/checkReport.sub.js?reportExists=false"> - </script> - </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-redir-bug.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-redir-bug.sub.html.sub.headers deleted file mode 100644 index 7c2243a1116..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/media-src/media-src-redir-bug.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: media-src-redir-bug={{$id:uuid()}}; Path=/content-security-policy/media-src/ -Content-Security-Policy: script-src * 'unsafe-inline'; media-src http://{{domains[www2]}}:{{ports[http][0]}}/ 'self'; connect-src 'self'; report-uri ../support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/meta/combine-header-and-meta-policies.sub.html b/tests/wpt/web-platform-tests/content-security-policy/meta/combine-header-and-meta-policies.sub.html new file mode 100644 index 00000000000..6e9e71dd921 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/meta/combine-header-and-meta-policies.sub.html @@ -0,0 +1,54 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="img-src 'none'"> + <title>combine-header-and-meta-policies</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["TEST COMPLETE", "violated-directive=img-src", "violated-directive=style-src"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> + <!-- enforcing multiple policies: +Content-Security-Policy: script-src 'self' 'unsafe-inline'; connect-src 'self'; style-src 'self' +Content-Security-Policy: img-src 'none' +--> +</head> + +<body> +<p>Test passes if both style and image are blocked and a report is generated for the + style block from the header-supplied policy.</p> + + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + + var img = document.createElement('img'); + img.src = '../support/fail.png'; + img.onerror = function() { + log("TEST COMPLETE"); + }; + img.onload = function() { + log("FAIL"); + }; + document.body.appendChild(img); + + </script> + <style> + body { + background-color: blue; + } + + </style> + <script> + var el = document.querySelector('body'); + test(function() { + assert_equals(window.getComputedStyle(el).color, "rgb(0, 0, 0)") + }); + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/meta/combine-header-and-meta-policies.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/meta/combine-header-and-meta-policies.sub.html.sub.headers new file mode 100644 index 00000000000..062d823228a --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/meta/combine-header-and-meta-policies.sub.html.sub.headers @@ -0,0 +1,5 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Content-Security-Policy: script-src 'self' 'unsafe-inline'; connect-src 'self'; style-src 'self'; diff --git a/tests/wpt/web-platform-tests/content-security-policy/meta/meta-outside-head.sub.html b/tests/wpt/web-platform-tests/content-security-policy/meta/meta-outside-head.sub.html new file mode 100644 index 00000000000..94ae5e3979c --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/meta/meta-outside-head.sub.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <title>meta-outside-head</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="../support/logTest.sub.js?logs=[]"></script> + <script src='../support/alertAssert.sub.js?alerts=["PASS (1/1)"]'></script> + <!-- enforcing policy: +script-src 'self' 'unsafe-inline' 'nonce-abc'; connect-src 'self'; +--> +</head> + +<body> + <script nonce='abc'> + window.addEventListener('securitypolicyviolation', function(e) { + alert_assert("Fail"); + }); + </script> + + <meta http-equiv="Content-Security-Policy" content="script-src 'self'"> + <p>This test checks that Content Security Policy delivered via a meta element is not enforced if the element is outside the document's head.</p> + <script nonce='abc'> + var aa = "PASS (1/1)"; + </script> + <script src="../meta/support/metaHelper.js"></script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/meta/meta-outside-head.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/meta/meta-outside-head.sub.html.sub.headers new file mode 100644 index 00000000000..8e90073147a --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/meta/meta-outside-head.sub.html.sub.headers @@ -0,0 +1 @@ +Content-Security-Policy: script-src 'self' 'unsafe-inline' 'nonce-abc'; connect-src 'self'; diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/metaHelper.js b/tests/wpt/web-platform-tests/content-security-policy/meta/support/metaHelper.js index 9191a39c73b..9191a39c73b 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/metaHelper.js +++ b/tests/wpt/web-platform-tests/content-security-policy/meta/support/metaHelper.js diff --git a/tests/wpt/web-platform-tests/content-security-policy/object-src/object-src-no-url-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/object-src/object-src-no-url-allowed.sub.html new file mode 100644 index 00000000000..f8cab44230b --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/object-src/object-src-no-url-allowed.sub.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="object-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>object-src-no-url-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <p>This test passes if there isn't a CSP violation saying the plugin was blocked.</p> + + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); + </script> + + <object type="application/x-webkit-test-netscape"></object> + <div id="log"></div> + + <script> + log("PASS"); + </script> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/object-src/object-src-no-url-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/object-src/object-src-no-url-blocked.sub.html new file mode 100644 index 00000000000..030da4db268 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/object-src/object-src-no-url-blocked.sub.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="object-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>object-src-no-url-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["violated-directive=object-src"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <p>This test passes if there is a CSP violation saying the plugin was blocked.</p> + + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + </script> + + <object type="application/x-webkit-test-netscape"></object> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/object-src/object-src-url-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/object-src/object-src-url-allowed.sub.html new file mode 100644 index 00000000000..eecdea54cd8 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/object-src/object-src-url-allowed.sub.html @@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="object-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>object-src-url-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["Pass"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <p>This test passes if there is no CSP violation saying the plugin was blocked.</p> + + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); + </script> + + <object data="/content-security-policy/support/pass.png"></object> + <div id="log"></div> + <script> + log("Pass"); + </script> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/object-src/object-src-url-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/object-src/object-src-url-blocked.sub.html new file mode 100644 index 00000000000..8a6594de05d --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/object-src/object-src-url-blocked.sub.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="object-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>object-src-url-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["violated-directive=object-src"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <p>This test passes if there is a CSP violation saying the plugin was blocked.</p> + + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + </script> + + <object data="/plugins/resources/mock-plugin.pl"></object> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/plugin-types/plugintypes-mismatched-data.sub.html b/tests/wpt/web-platform-tests/content-security-policy/plugin-types/plugintypes-mismatched-data.sub.html new file mode 100644 index 00000000000..947a9174d88 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/plugin-types/plugintypes-mismatched-data.sub.html @@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="plugin-types application/x-invalid-type; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>plugintypes-mismatched-data</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["After object"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); + </script> + + This tests that plugin content that doesn't match the declared type doesn't load, even if the document's CSP would allow it. This test passes if "FAIL!" isn't logged. + <object type="application/x-invalid-type" data="data:application/x-webkit-test-netscape,logifloaded" log="FAIL!"></object> + <script> + log("After object"); + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/plugin-types/plugintypes-mismatched-url.sub.html b/tests/wpt/web-platform-tests/content-security-policy/plugin-types/plugintypes-mismatched-url.sub.html new file mode 100644 index 00000000000..08e09b95063 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/plugin-types/plugintypes-mismatched-url.sub.html @@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="plugin-types application/x-invalid-type; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>plugintypes-mismatched-url</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["After object"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); + </script> + + This tests that plugin content that doesn't match the declared type doesn't load, even if the document's CSP would allow it. This test passes if no iframe is dumped (meaning that no PluginDocument was created). + <object type="application/x-invalid-type" data="/plugins/resources/mock-plugin.pl" log="FAIL!"></object> + <script> + log("After object"); + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/plugin-types/plugintypes-notype-data.sub.html b/tests/wpt/web-platform-tests/content-security-policy/plugin-types/plugintypes-notype-data.sub.html new file mode 100644 index 00000000000..46b1816b792 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/plugin-types/plugintypes-notype-data.sub.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="plugin-types application/x-invalid-type; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>plugintypes-notype-data</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS: object tag onerror handler fired","violated-directive=plugin-types"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + </script> + + Given a `plugin-types` directive, plugins have to declare a type explicitly. No declared type, no load. This test passes if there's a CSP report and "FAIL!" isn't logged. + <object data="data:application/x-webkit-test-netscape" onload="log('FAIL');" onerror="log('PASS: object tag onerror handler fired');"></object> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/plugin-types/plugintypes-notype-url.sub.html b/tests/wpt/web-platform-tests/content-security-policy/plugin-types/plugintypes-notype-url.sub.html new file mode 100644 index 00000000000..3191f9c93b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/plugin-types/plugintypes-notype-url.sub.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="plugin-types application/x-invalid-type; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>plugintypes-notype-url</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["violated-directive=plugin-types"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + </script> + + Given a `plugin-types` directive, plugins have to declare a type explicitly. No declared type, no load. This test passes if there's an error report is sent. + <object data="/plugins/resources/mock-plugin.pl" log="FAIL!"></object> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/plugin-types/plugintypes-nourl-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/plugin-types/plugintypes-nourl-allowed.sub.html new file mode 100644 index 00000000000..cc30b0d9c80 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/plugin-types/plugintypes-nourl-allowed.sub.html @@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="plugin-types application/x-webkit-test-netscape; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>plugintypes-nourl-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["After object"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); + </script> + + This test passes if there isn't a CSP violation sayingthe plugin was blocked. + <object type="application/x-webkit-test-netscape"></object> + <script> + log("After object"); + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/plugin-types/plugintypes-nourl-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/plugin-types/plugintypes-nourl-blocked.sub.html new file mode 100644 index 00000000000..40054d53336 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/plugin-types/plugintypes-nourl-blocked.sub.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="plugin-types text/plain; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>plugintypes-nourl-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["violated-directive=plugin-types"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + </script> + + This test passes if there is a CSP violation saying the plugin was blocked. + <object type="application/x-webkit-test-netscape"></object> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html new file mode 100644 index 00000000000..cb3842854c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Test that reports using the report-api service are not sent when there's not validation</title> + <script src='/resources/testharness.js'></script> + <script src='/resources/testharnessreport.js'></script> +</head> +<body> + <script> + var t1 = async_test("Test that image loads"); + window.addEventListener("securitypolicyviolation", + t1.unreached_func("Should not have triggered a violation event")); + </script> + <img src='/content-security-policy/support/pass.png' + onload='t1.done();' + onerror='t1.unreached_func("The image should have loaded");'> + + <script async defer src='../support/checkReport.sub.js?reportExists=false'></script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html.sub.headers new file mode 100644 index 00000000000..9a025812946 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html.sub.headers @@ -0,0 +1,7 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Set-Cookie: reporting-api-doesnt-send-reports-without-violation={{$id:uuid()}}; Path=/content-security-policy/reporting +Report-To: { "url": "https://{{host}}:{{ports[https][0]}}/content-security-policy/support/report.py?op=put&reportID={{$id}}", "group": "csp-group", "max-age": 10886400 } +Content-Security-Policy: script-src 'self' 'unsafe-inline'; img-src 'self'; report-to csp-group diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-only-sends-reports-on-violation.https.sub.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-only-sends-reports-on-violation.https.sub.html new file mode 100644 index 00000000000..61658863a7f --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-only-sends-reports-on-violation.https.sub.html @@ -0,0 +1,25 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Test that report-only policies still work with report-to</title> + <script src='/resources/testharness.js'></script> + <script src='/resources/testharnessreport.js'></script> +</head> +<body> + <script> + var t1 = async_test("Test that image does not load"); + async_test(function(t2) { + window.addEventListener("securitypolicyviolation", t2.step_func(function(e) { + assert_equals(e.blockedURI, "{{location[scheme]}}://{{location[host]}}/content-security-policy/support/fail.png"); + assert_equals(e.violatedDirective, "img-src"); + t2.done(); + })); + }, "Event is fired"); + </script> + <img src='/content-security-policy/support/fail.png' + onload='t1.done();' + onerror='t1.unreached_func("The image should have loaded");'> + + <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=img-src%20%27none%27'></script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-only-sends-reports-on-violation.https.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-only-sends-reports-on-violation.https.sub.html.sub.headers new file mode 100644 index 00000000000..990cfafb090 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-only-sends-reports-on-violation.https.sub.html.sub.headers @@ -0,0 +1,7 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Set-Cookie: reporting-api-report-only-sends-reports-on-violation={{$id:uuid()}}; Path=/content-security-policy/reporting +Report-To: { "url": "https://{{host}}:{{ports[https][0]}}/content-security-policy/support/report.py?op=put&reportID={{$id}}", "group": "csp-group", "max-age": 10886400 } +Content-Security-Policy-Report-Only: script-src 'self' 'unsafe-inline'; img-src 'none'; report-to csp-group diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-1.https.sub.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-1.https.sub.html new file mode 100644 index 00000000000..119a027c4ee --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-1.https.sub.html @@ -0,0 +1,25 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Test that report-to overrides report-uri. This tests report-uri before report-to in the policy</title> + <script src='/resources/testharness.js'></script> + <script src='/resources/testharnessreport.js'></script> +</head> +<body> + <script> + var t1 = async_test("Test that image does not load"); + async_test(function(t2) { + window.addEventListener("securitypolicyviolation", t2.step_func(function(e) { + assert_equals(e.blockedURI, "{{location[scheme]}}://{{location[host]}}/content-security-policy/support/fail.png"); + assert_equals(e.violatedDirective, "img-src"); + t2.done(); + })); + }, "Event is fired"); + </script> + <img src='/content-security-policy/support/fail.png' + onload='t1.unreached_func("The image should not have loaded");' + onerror='t1.done();'> + <!-- report-to overrides the report-uri so the report goes to a different endpoint and we should not have any reports sent to this endpoint --> + <script async defer src='../support/checkReport.sub.js?reportExists=false></script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-1.https.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-1.https.sub.html.sub.headers new file mode 100644 index 00000000000..c696384f349 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-1.https.sub.html.sub.headers @@ -0,0 +1,7 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Set-Cookie: reporting-api-report-to-overrides-report-uri-1={{$id:uuid()}}; Path=/content-security-policy/reporting +Content-Security-Policy: script-src 'self' 'unsafe-inline'; img-src 'none'; report-uri "/content-security-policy/support/report.py?op=put&reportID={{$id}}"; report-to csp-group +Report-To: { "url": "https://{{host}}:{{ports[https][0]}}/content-security-policy/support/report.py?op=put&reportID={{$id:uuid()}}", "group": "csp-group", "max-age": 10886400 } diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-2.https.sub.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-2.https.sub.html new file mode 100644 index 00000000000..3c4d2446aee --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-2.https.sub.html @@ -0,0 +1,25 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Test that report-to overrides report-uri. This tests report-uri after report-to in the policy</title> <meta name=timeout content=long> + <script src='/resources/testharness.js'></script> + <script src='/resources/testharnessreport.js'></script> +</head> +<body> + <script> + var t1 = async_test("Test that image does not load"); + async_test(function(t2) { + window.addEventListener("securitypolicyviolation", t2.step_func(function(e) { + assert_equals(e.blockedURI, "{{location[scheme]}}://{{location[host]}}/content-security-policy/support/fail.png"); + assert_equals(e.violatedDirective, "img-src"); + t2.done(); + })); + }, "Event is fired"); + </script> + <img src='/content-security-policy/support/fail.png' + onload='t1.unreached_func("The image should not have loaded");' + onerror='t1.done();'> + <!-- report-to overrides the report-uri so the report goes to a different endpoint and we should not have any reports sent to this endpoint --> + <script async defer src='../support/checkReport.sub.js?reportExists=false></script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-2.https.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-2.https.sub.html.sub.headers new file mode 100644 index 00000000000..2ac676bae5e --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-2.https.sub.html.sub.headers @@ -0,0 +1,7 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Set-Cookie: reporting-api-report-to-overrides-report-uri-2={{$id:uuid()}}; Path=/content-security-policy/reporting +Content-Security-Policy: script-src 'self' 'unsafe-inline'; img-src 'none'; report-to csp-group; report-uri "/content-security-policy/support/report.py?op=put&reportID={{$id}}" +Report-To: { "url": "https://{{host}}:{{ports[https][0]}}/content-security-policy/support/report.py?op=put&reportID={{$id:uuid()}}", "group": "csp-group", "max-age": 10886400 } diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-sends-reports-on-violation.https.sub.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-sends-reports-on-violation.https.sub.html new file mode 100644 index 00000000000..b2c3adafbe5 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-sends-reports-on-violation.https.sub.html @@ -0,0 +1,25 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Test that reports using the report-api service are sent when there's a violation</title> + <script src='/resources/testharness.js'></script> + <script src='/resources/testharnessreport.js'></script> +</head> +<body> + <script> + var t1 = async_test("Test that image does not load"); + async_test(function(t2) { + window.addEventListener("securitypolicyviolation", t2.step_func(function(e) { + assert_equals(e.blockedURI, "{{location[scheme]}}://{{location[host]}}/content-security-policy/support/fail.png"); + assert_equals(e.violatedDirective, "img-src"); + t2.done(); + })); + }, "Event is fired"); + </script> + <img src='/content-security-policy/support/fail.png' + onload='t1.unreached_func("The image should not have loaded");' + onerror='t1.done();'> + + <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=img-src%20%27none%27'></script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-sends-reports-on-violation.https.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-sends-reports-on-violation.https.sub.html.sub.headers new file mode 100644 index 00000000000..ff4b9e6fb7d --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-sends-reports-on-violation.https.sub.html.sub.headers @@ -0,0 +1,7 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Set-Cookie: reporting-api-sends-reports-on-violation={{$id:uuid()}}; Path=/content-security-policy/reporting +Report-To: { "url": "https://{{host}}:{{ports[https][0]}}/content-security-policy/support/report.py?op=put&reportID={{$id}}", "group": "csp-group", "max-age": 10886400 } +Content-Security-Policy: script-src 'self' 'unsafe-inline'; img-src 'none'; report-to csp-group diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/securitypolicyviolation-idl.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/securitypolicyviolation-idl.html index 225951285b3..237807cc45a 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/reporting/securitypolicyviolation-idl.html +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/securitypolicyviolation-idl.html @@ -38,6 +38,55 @@ dictionary SecurityPolicyViolationEventInit : EventInit { long lineNumber; long columnNumber; }; + +[ + Constructor(DOMString type, optional EventInit eventInitDict), + Exposed=(Window,Worker) +] interface Event { + readonly attribute DOMString type; + readonly attribute EventTarget? target; + readonly attribute EventTarget? currentTarget; + [MeasureAs=EventComposedPath, CallWith=ScriptState] sequence<EventTarget> composedPath(); + + const unsigned short NONE = 0; + const unsigned short CAPTURING_PHASE = 1; + const unsigned short AT_TARGET = 2; + const unsigned short BUBBLING_PHASE = 3; + readonly attribute unsigned short eventPhase; + + [Measure] void stopPropagation(); + [Measure] void stopImmediatePropagation(); + + readonly attribute boolean bubbles; + readonly attribute boolean cancelable; + void preventDefault(); + readonly attribute boolean defaultPrevented; + + [MeasureAs=EventComposed] readonly attribute boolean composed; + + [Unforgeable] readonly attribute boolean isTrusted; + + [CallWith=ScriptState] readonly attribute DOMHighResTimeStamp timeStamp; + + [Measure] void initEvent(DOMString type, optional boolean bubbles = false, optional boolean cancelable = false); + + // Non-standard APIs + [MeasureAs=EventSrcElement] readonly attribute EventTarget srcElement; + [MeasureAs=EventReturnValue, CallWith=ScriptState, ImplementedAs=legacyReturnValue] attribute boolean returnValue; + [MeasureAs=EventCancelBubble, CallWith=ScriptState] attribute boolean cancelBubble; + [MeasureAs=EventPath, CallWith=ScriptState] readonly attribute EventTarget[] path; +}; + +[ + CheckSecurity=Receiver, + Exposed=(Window,Worker), + ImmutablePrototype +] interface EventTarget { + [Custom=(CallPrologue,CallEpilogue)] void addEventListener(DOMString type, EventListener? listener, optional (AddEventListenerOptions or boolean) options); + [Custom=(CallPrologue,CallEpilogue)] void removeEventListener(DOMString type, EventListener? listener, optional (EventListenerOptions or boolean) options); + [ImplementedAs=dispatchEventForBindings, RaisesException] boolean dispatchEvent(Event event); +}; + </script> <script> (function() { diff --git a/tests/wpt/web-platform-tests/content-security-policy/sandbox/iframe-inside-csp.sub.html b/tests/wpt/web-platform-tests/content-security-policy/sandbox/iframe-inside-csp.sub.html new file mode 100644 index 00000000000..cd402bdba01 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/sandbox/iframe-inside-csp.sub.html @@ -0,0 +1,18 @@ +<html> +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'self'; connect-src 'self';"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS (1/2): Script can execute","PASS (2/2): Eval works"]'></script> + <script src='../support/alertAssert.sub.js?alerts=[]'></script> +</head> +<body> + <script> + window.onmessage = function(e) { + log(e.data); + } + </script> + <iframe src="support/sandboxed-eval.sub.html"></iframe> +</body> +</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/sandbox/sandbox-allow-scripts-subframe.sub.html b/tests/wpt/web-platform-tests/content-security-policy/sandbox/sandbox-allow-scripts-subframe.sub.html new file mode 100644 index 00000000000..1d6db3cde71 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/sandbox/sandbox-allow-scripts-subframe.sub.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["Message"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <script> + window.onmessage = function(e) { + log(e.data); + } + </script> + + <iframe src="support/sandboxed-data-iframe.sub.html?sandbox=allow-scripts"></iframe> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/sandbox/sandbox-allow-scripts.sub.html b/tests/wpt/web-platform-tests/content-security-policy/sandbox/sandbox-allow-scripts.sub.html new file mode 100644 index 00000000000..ae3b376948b --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/sandbox/sandbox-allow-scripts.sub.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["Message"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <script> + window.onmessage = function(e) { + log(e.data); + } + </script> + + <iframe src="support/sandboxed-post-message-to-parent.sub.html?sandbox=allow-scripts"></iframe> +</body> + +</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/sandbox/sandbox-empty-subframe.sub.html b/tests/wpt/web-platform-tests/content-security-policy/sandbox/sandbox-empty-subframe.sub.html new file mode 100644 index 00000000000..3396e566b8b --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/sandbox/sandbox-empty-subframe.sub.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS2"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <script> + window.onmessage = function(e) { + log(e.data); + } + </script> + + <iframe src="support/sandboxed-data-iframe.sub.html?sandbox=" + onload="log('PASS2')"></iframe> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/sandbox/sandbox-empty.sub.html b/tests/wpt/web-platform-tests/content-security-policy/sandbox/sandbox-empty.sub.html new file mode 100644 index 00000000000..47034710203 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/sandbox/sandbox-empty.sub.html @@ -0,0 +1,25 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS2"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <p>This test passes if it does alert pass.</p> + + <script> + window.onmessage = function(e) { + log(e.data); + } + </script> + + <iframe src="support/sandboxed-post-message-to-parent.sub.html?sandbox=" + onload="log('PASS2')"></iframe> +</body> + +</html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/sandbox/support/sandboxed-data-iframe.sub.html b/tests/wpt/web-platform-tests/content-security-policy/sandbox/support/sandboxed-data-iframe.sub.html new file mode 100644 index 00000000000..fafd4dc7707 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/sandbox/support/sandboxed-data-iframe.sub.html @@ -0,0 +1 @@ +<iframe src="data:text/html,<script>window.top.postMessage('Message','*');</script>"></iframe> diff --git a/tests/wpt/web-platform-tests/content-security-policy/sandbox/support/sandboxed-data-iframe.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/sandbox/support/sandboxed-data-iframe.sub.html.sub.headers new file mode 100644 index 00000000000..a7ea308208d --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/sandbox/support/sandboxed-data-iframe.sub.html.sub.headers @@ -0,0 +1 @@ +Content-Security-Policy: sandbox {{GET[sandbox]}};
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/sandbox/support/sandboxed-eval.sub.html b/tests/wpt/web-platform-tests/content-security-policy/sandbox/support/sandboxed-eval.sub.html new file mode 100644 index 00000000000..9480e521de2 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/sandbox/support/sandboxed-eval.sub.html @@ -0,0 +1,4 @@ +<script> + window.parent.postMessage('PASS (1/2): Script can execute', '*'); + eval("window.parent.postMessage('PASS (2/2): Eval works', '*')"); +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/sandbox/support/sandboxed-eval.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/sandbox/support/sandboxed-eval.sub.html.sub.headers new file mode 100644 index 00000000000..c7e4e7cc5bd --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/sandbox/support/sandboxed-eval.sub.html.sub.headers @@ -0,0 +1 @@ +Content-Security-Policy: sandbox allow-scripts
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/sandbox/support/sandboxed-post-message-to-parent.sub.html b/tests/wpt/web-platform-tests/content-security-policy/sandbox/support/sandboxed-post-message-to-parent.sub.html new file mode 100644 index 00000000000..ef4b1a0b95a --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/sandbox/support/sandboxed-post-message-to-parent.sub.html @@ -0,0 +1,3 @@ +<script> + window.top.postMessage("Message", "*"); +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/sandbox/support/sandboxed-post-message-to-parent.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/sandbox/support/sandboxed-post-message-to-parent.sub.html.sub.headers new file mode 100644 index 00000000000..a7ea308208d --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/sandbox/support/sandboxed-post-message-to-parent.sub.html.sub.headers @@ -0,0 +1 @@ +Content-Security-Policy: sandbox {{GET[sandbox]}};
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/10_1_support_1.js b/tests/wpt/web-platform-tests/content-security-policy/script-src/10_1_support_1.js index 7b6e85210d0..9bfe201711a 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/10_1_support_1.js +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/10_1_support_1.js @@ -1 +1,4 @@ -var dataScriptRan = false;
\ No newline at end of file +var dataScriptRan = false; + +var t_spv = async_test("Test that no report violation event was raised"); +window.addEventListener("securitypolicyviolation", t_spv.unreached_func("Should not have raised any securitypolicyviolation event"));
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/10_1_support_2.js b/tests/wpt/web-platform-tests/content-security-policy/script-src/10_1_support_2.js index ba586810f5f..6e6c15d2235 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/10_1_support_2.js +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/10_1_support_2.js @@ -1,3 +1,5 @@ test(function () { assert_true(dataScriptRan, "data script ran"); - }, "Verify that data: as script src runs with this policy");
\ No newline at end of file + }, "Verify that data: as script src runs with this policy"); + +t_spv.done();
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/addInlineTestsWithDOMManipulation.js b/tests/wpt/web-platform-tests/content-security-policy/script-src/addInlineTestsWithDOMManipulation.js index cd093ac9423..a5d91dcab0f 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/addInlineTestsWithDOMManipulation.js +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/addInlineTestsWithDOMManipulation.js @@ -1,4 +1,14 @@ (function () { + var t_spv = async_test("Test that securitypolicyviolation event is fired"); + var test_count = 2; + + window.addEventListener("securitypolicyviolation", t_spv.step_func_done(function(e) { + assert_equals(e.violatedDirective, "script-src"); + if (--test_count <= 0) { + t_spv.done(); + } + })); + var dmTest = async_test("DOM manipulation inline tests"); var attachPoint = document.getElementById('attachHere'); diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/injected-inline-script-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/injected-inline-script-allowed.sub.html new file mode 100644 index 00000000000..5a8cdec8472 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/injected-inline-script-allowed.sub.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self'"> + <title>injected-inline-script-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["Pass 1 of 2","Pass 2 of 2"]'></script> + <script src='../support/alertAssert.sub.js?alerts=[]'></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); + </script> + <script src="support/inject-script.js"></script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/injected-inline-script-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/injected-inline-script-blocked.sub.html new file mode 100644 index 00000000000..07e2ae2871c --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/injected-inline-script-blocked.sub.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'nonce-abc'; connect-src 'self';"> + <title>injected-inline-script-blocked</title> + <script nonce='abc' src="/resources/testharness.js"></script> + <script nonce='abc' src="/resources/testharnessreport.js"></script> + <script nonce='abc' src='../support/logTest.sub.js?logs=["violated-directive=script-src",]'></script> + <script nonce='abc' src='../support/alertAssert.sub.js?alerts=[]'></script> +</head> + +<body> + <script nonce='abc'> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + </script> + <script src="support/inject-script.js"></script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/inlineSuccessTest.js b/tests/wpt/web-platform-tests/content-security-policy/script-src/inlineSuccessTest.js index ea2be272a20..1f0d7ae7154 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/inlineSuccessTest.js +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/inlineSuccessTest.js @@ -1,3 +1,6 @@ +var t_spv = async_test("Should not fire policy violation events"); +window.addEventListener("securitypolicyviolation", t_spv.unreached_func("Should have not fired any securitypolicyviolation event")); + var inlineRan = false; onload = function() { @@ -5,4 +8,5 @@ onload = function() { assert_true(inlineRan, 'Unsafe inline script ran.')}, 'Inline script in a script tag should run with an unsafe-inline directive' ); + t_spv.done(); }
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/inlineTests.js b/tests/wpt/web-platform-tests/content-security-policy/script-src/inlineTests.js index 6e76b0a1781..0c6e5446041 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/inlineTests.js +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/inlineTests.js @@ -1,4 +1,13 @@ var t1 = async_test("Inline script block"); var t2 = async_test("Inline event handler"); -onload = function() {t1.done(); t2.done()}
\ No newline at end of file +onload = function() {t1.done(); t2.done()} + +var t_spv = async_test("Should not fire policy violation events"); +var test_count = 2; +window.addEventListener("securitypolicyviolation", t_spv.step_func(function(e) { + assert_equals(e.violatedDirective, "script-src"); + if (--test_count <= 0) { + t_spv.done(); + } +})); diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/javascript-window-open-blocked.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/javascript-window-open-blocked.html index a8dd14f1c89..e02d66ae9c9 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/javascript-window-open-blocked.html +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/javascript-window-open-blocked.html @@ -2,6 +2,7 @@ <html> <head> <title>Window.open should not open javascript url if not allowed.</title> + <meta http-equiv="Content-Security-Policy" content="script-src 'nonce-abc';"> <script nonce='abc' src='/resources/testharness.js'></script> <script nonce='abc' src='/resources/testharnessreport.js'></script> </head> @@ -15,8 +16,5 @@ window.open('javascript:test(function() { assert_unreached("FAIL")});', 'new'); </script> - - <script nonce='abc' async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=script-src%20%27nonce-abc%27'></script> - </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_1.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_1.html index c83f512bff5..d66253c6a19 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_1.html +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_1.html @@ -2,6 +2,7 @@ <html> <head> <title>Inline script should not run without 'unsafe-inline' script-src directive.</title> + <meta http-equiv="Content-Security-Policy" content="script-src 'self';"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> <script src='inlineTests.js'></script> @@ -15,8 +16,5 @@ </script> <img src='doesnotexist.jpg' onerror='t2.step(function() { assert_unreached("Unsafe inline event handler ran.") });'> - - <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=script-src%20%27self%27'></script> - </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_1.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_1.html.sub.headers deleted file mode 100644 index d91fe1c87f1..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_1.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: script-src-1_1={{$id:uuid()}}; Path=/content-security-policy/script-src/ -Content-Security-Policy: script-src 'self'; report-uri ../support/report.py?op=put&reportID={{$id}}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_10.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_10.html index 137a16421db..a1bfdaeb15b 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_10.html +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_10.html @@ -2,6 +2,7 @@ <html> <head> <title>data: as script src should not run with a policy that doesn't specify data: as an allowed source</title> + <meta http-equiv="Content-Security-Policy" content="default-src 'self' 'unsafe-inline';"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> </head> @@ -11,6 +12,11 @@ <script> var dataScriptRan = false; + var t_spv = async_test("Test that securitypolicyviolation event is fired"); + + window.addEventListener("securitypolicyviolation", t_spv.step_func_done(function(e) { + assert_equals(e.violatedDirective, "script-src"); + })); </script> <!-- This is our test case, but we don't expect it to actually execute if CSP is working. --> @@ -21,7 +27,5 @@ assert_false(dataScriptRan, "data script ran"); }, "Verify that data: as script src doesn't run with this policy"); </script> - - <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=default-src%20%27self%27+%27unsafe-inline%27'></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_10.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_10.html.sub.headers deleted file mode 100644 index 6c0c0fd0a76..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_10.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: script-src-1_10={{$id:uuid()}}; Path=/content-security-policy/script-src/ -Content-Security-Policy: default-src 'self' 'unsafe-inline'; report-uri ../support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_10_1.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_10_1.html index f1bfee2000a..a1e2f72cdb7 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_10_1.html +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_10_1.html @@ -2,6 +2,7 @@ <html> <head> <title>data: as script src should run with a policy that specifies data: as an allowed source but not 'unsafe-inline'</title> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' data:;"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> </head> @@ -14,7 +15,5 @@ <script src="data:text/javascript;charset=utf-8;base64,ZGF0YVNjcmlwdFJhbiA9IHRydWU7"></script> <script src="10_1_support_2.js"></script> - - <script async defer src='../support/checkReport.sub.js?reportExists=false'></script> </body> </html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_10_1.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_10_1.html.sub.headers deleted file mode 100644 index dfb6f345fc7..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_10_1.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: script-src-1_10_1={{$id:uuid()}}; Path=/content-security-policy/script-src/ -Content-Security-Policy: script-src 'self' data:; report-uri ../support/report.py?op=put&reportID={{$id}}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_2.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_2.html index a41310da9e7..a68945cb853 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_2.html +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_2.html @@ -2,6 +2,7 @@ <html> <head> <title>Inline script should not run without 'unsafe-inline' script-src directive.</title> + <meta http-equiv="Content-Security-Policy" content="script-src *;"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> <script src='inlineTests.js'></script> @@ -15,8 +16,5 @@ </script> <img src='doesnotexist.jpg' onerror='t2.step(function() { assert_unreached("Unsafe inline event handler ran.") });'> - - <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=script-src%20%27self%27'></script> - </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_2.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_2.html.sub.headers deleted file mode 100644 index 4cf9c695051..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_2.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: script-src-1_2={{$id:uuid()}}; Path=/content-security-policy/script-src/ -Content-Security-Policy: script-src *; report-uri ../support/report.py?op=put&reportID={{$id}}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_2_1.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_2_1.html index 255f5df9ce1..2641c867f63 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_2_1.html +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_2_1.html @@ -2,6 +2,7 @@ <html> <head> <title>Inline script attached by DOM manipulation should not run without an 'unsafe-inline' script-src policy, even with default-src *</title> + <meta http-equiv="Content-Security-Policy" content="script-src *;"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> </head> @@ -16,8 +17,5 @@ <div id=emptyDiv></div> <script src="addInlineTestsWithDOMManipulation.js"></script> - - <script async defer src="../support/checkReport.sub.js?reportField=violated-directive&reportValue=script-src%20*"></script> - </body> </html>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_2_1.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_2_1.html.sub.headers deleted file mode 100644 index 9c58f0efcd5..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_2_1.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: script-src-1_2_1={{$id:uuid()}}; Path=/content-security-policy/script-src/ -Content-Security-Policy: script-src *; report-uri ../support/report.py?op=put&reportID={{$id}}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_3.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_3.html index 30e6f6870a8..bf7a6921b4d 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_3.html +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_3.html @@ -2,6 +2,7 @@ <html> <head> <title>Positive test case: Inline script should run 'unsafe-inline' script-src directive.</title> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> <script src='inlineSuccessTest.js'></script> @@ -13,8 +14,5 @@ <script> inlineRan = true; </script> - - <script async defer src='../support/checkReport.sub.js?reportExists=false'></script> - </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_3.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_3.html.sub.headers deleted file mode 100644 index 8227c6272dc..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_3.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: script-src-1_3={{$id:uuid()}}; Path=/content-security-policy/script-src/ -Content-Security-Policy: script-src 'self' 'unsafe-inline'; report-uri ../support/report.py?op=put&reportID={{$id}}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_4.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_4.html index 5293183d300..bfc66b2a8d0 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_4.html +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_4.html @@ -2,6 +2,7 @@ <html> <head> <title>eval() should not run without 'unsafe-eval' script-src directive.</title> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> </head> @@ -10,6 +11,11 @@ <div id='log'></div> <script> + var t_spv = async_test("Test that securitypolicyviolation event is fired"); + + window.addEventListener("securitypolicyviolation", t_spv.step_func_done(function(e) { + assert_equals(e.violatedDirective, "script-src"); + })); var evalRan = false; @@ -18,8 +24,5 @@ test(function() {assert_false(evalRan);}) </script> - - <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=script-src%20%27self%27+%27unsafe-inline%27'></script> - </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_4.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_4.html.sub.headers deleted file mode 100644 index 28ad14b609d..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_4.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: script-src-1_4={{$id:uuid()}}; Path=/content-security-policy/script-src/ -Content-Security-Policy: script-src 'self' 'unsafe-inline'; report-uri ../support/report.py?op=put&reportID={{$id}}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_4_1.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_4_1.html index 31664a16987..522b9c5f7c8 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_4_1.html +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_4_1.html @@ -2,6 +2,7 @@ <html> <head> <title>setTimeout() and setInterval() should not run without 'unsafe-eval' script-src directive.</title> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> </head> @@ -12,15 +13,21 @@ <script> var t1 = async_test("window.setTimeout()"); var t2 = async_test("window.setInterval()"); + var t_spv = async_test("Test that securitypolicyviolation event is fired"); + var test_count = 2; + + window.addEventListener("securitypolicyviolation", t_spv.step_func_done(function(e) { + assert_equals(e.violatedDirective, "script-src"); + if (--test_count <= 0) { + t_spv.done(); + } + })); + onload = function() {t1.done(); t2.done()} window.setTimeout('t1.step(function() {assert_unreached("window.setTimeout() ran without unsafe-eval.")})',0); window.setInterval('t2.step(function() {assert_unreached("window.setInterval() ran without unsafe-eval.")})',0); - </script> - - <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=script-src%20%27self%27+%27unsafe-eval%27'></script> - </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_4_1.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_4_1.html.sub.headers deleted file mode 100644 index 6bd48d1ded7..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_4_1.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: script-src-1_4_1={{$id:uuid()}}; Path=/content-security-policy/script-src/ -Content-Security-Policy: script-src 'self' 'unsafe-inline'; report-uri ../support/report.py?op=put&reportID={{$id}}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_4_2.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_4_2.html index 31382936f47..0ee6f587c5c 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_4_2.html +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_4_2.html @@ -2,6 +2,7 @@ <html> <head> <title>Function() called as a constructor should throw without 'unsafe-eval' script-src directive.</title> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> </head> @@ -10,6 +11,12 @@ <div id='log'></div> <script> + var t_spv = async_test("Test that securitypolicyviolation event is fired"); + + window.addEventListener("securitypolicyviolation", t_spv.step_func_done(function(e) { + assert_equals(e.violatedDirective, "script-src"); + })); + test(function() { assert_throws( @@ -20,8 +27,5 @@ })}, "Unsafe eval ran in Function() constructor."); </script> - - <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=script-src%20%27self%27+%27unsafe-inline%27'></script> - </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_4_2.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_4_2.html.sub.headers deleted file mode 100644 index 314849bb972..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-1_4_2.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: script-src-1_4_2={{$id:uuid()}}; Path=/content-security-policy/script-src/ -Content-Security-Policy: script-src 'self' 'unsafe-inline'; report-uri ../support/report.py?op=put&reportID={{$id}}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-multiple-policies-multiple-hashing-algorithms.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-multiple-policies-multiple-hashing-algorithms.html index 75ff3424c05..70b31457278 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-multiple-policies-multiple-hashing-algorithms.html +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-multiple-policies-multiple-hashing-algorithms.html @@ -22,7 +22,5 @@ t.done(); }); </script> - - <script nonce="abc" async defer src='../support/checkReport.sub.js?reportExists=false'></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-multiple-policies-multiple-hashing-algorithms.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-multiple-policies-multiple-hashing-algorithms.html.sub.headers index 36203b7643a..89f99e621f8 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-multiple-policies-multiple-hashing-algorithms.html.sub.headers +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-multiple-policies-multiple-hashing-algorithms.html.sub.headers @@ -2,6 +2,5 @@ Expires: Mon, 26 Jul 1997 05:00:00 GMT Cache-Control: no-store, no-cache, must-revalidate Cache-Control: post-check=0, pre-check=0, false Pragma: no-cache -Set-Cookie: script-src-multiple-policies-multiple-hashing-algorithms={{$id:uuid()}}; Path=/content-security-policy/script-src/ -Content-Security-Policy: script-src 'sha256-EpVP4fTImWaRzBRBw/wrdfLhGTe/1U+CaBP1LNeKUIE=' 'nonce-abc'; report-uri ../support/report.py?op=put&reportID={{$id}} -Content-Security-Policy: script-src 'sha384-skw7BVxHbmE2umPGMd1kX+ye6qBeHAb875erPoD8ilKv1LkjKR+WFi7N85ORMdhS' 'nonce-abc'; report-uri ../support/report.py?op=put&reportID={{$id}}
\ No newline at end of file +Content-Security-Policy: script-src 'sha256-EpVP4fTImWaRzBRBw/wrdfLhGTe/1U+CaBP1LNeKUIE=' 'nonce-abc'; +Content-Security-Policy: script-src 'sha384-skw7BVxHbmE2umPGMd1kX+ye6qBeHAb875erPoD8ilKv1LkjKR+WFi7N85ORMdhS' 'nonce-abc';
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-multiple-policies-one-using-hashing-algorithms.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-multiple-policies-one-using-hashing-algorithms.html index 34fed6d94b3..da9e60f8743 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-multiple-policies-one-using-hashing-algorithms.html +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-multiple-policies-one-using-hashing-algorithms.html @@ -22,7 +22,5 @@ t.done(); }); </script> - - <script nonce="abc" async defer src='../support/checkReport.sub.js?reportExists=false'></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-multiple-policies-one-using-hashing-algorithms.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-multiple-policies-one-using-hashing-algorithms.html.sub.headers index 114c560b28c..83fe7f7005e 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-multiple-policies-one-using-hashing-algorithms.html.sub.headers +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-multiple-policies-one-using-hashing-algorithms.html.sub.headers @@ -2,6 +2,5 @@ Expires: Mon, 26 Jul 1997 05:00:00 GMT Cache-Control: no-store, no-cache, must-revalidate Cache-Control: post-check=0, pre-check=0, false Pragma: no-cache -Set-Cookie: script-src-multiple-policies-multiple-hashing-algorithms-work={{$id:uuid()}}; Path=/content-security-policy/script-src/ -Content-Security-Policy: script-src 'sha256-EpVP4fTImWaRzBRBw/wrdfLhGTe/1U+CaBP1LNeKUIE=' 'nonce-abc'; report-uri ../support/report.py?op=put&reportID={{$id}} -Content-Security-Policy: script-src 'self' 'unsafe-inline'; report-uri ../support/report.py?op=put&reportID={{$id}}
\ No newline at end of file +Content-Security-Policy: script-src 'sha256-EpVP4fTImWaRzBRBw/wrdfLhGTe/1U+CaBP1LNeKUIE=' 'nonce-abc'; +Content-Security-Policy: script-src 'self' 'unsafe-inline';
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-overrides-default-src.sub.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-overrides-default-src.sub.html new file mode 100644 index 00000000000..5a0dfe50e15 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-overrides-default-src.sub.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="default-src about:; script-src 'self' 'unsafe-inline'; style-src 'self'; connect-src 'self';"> + <title>script-src-overrides-default-src</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS 1 of 2","PASS 2 of 2"]'></script> + <script src='../support/alertAssert.sub.js?alerts=[]'></script> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); + </script> +</head> + +<body onload="log('PASS 2 of 2')"> + <script> + log('PASS 1 of 2'); + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-report-only-policy-works-with-external-hash-policy.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-report-only-policy-works-with-external-hash-policy.html index f0f7bcb7a04..16428b1a4de 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-report-only-policy-works-with-external-hash-policy.html +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-report-only-policy-works-with-external-hash-policy.html @@ -8,6 +8,11 @@ </head> <body> <script nonce="abc"> + var t_spv = async_test("Should fire securitypolicyviolation event"); + window.addEventListener("securitypolicyviolation", t_spv.step_func_done(function(e) { + assert_equals(e.violatedDirective, "script-src"); + assert_equals(e.disposition, "report"); + })); var externalRan = false; </script> <script src='./externalScript.js' @@ -16,8 +21,5 @@ test(function() { assert_true(externalRan, 'External script ran.'); }, 'External script in a script tag with matching SRI hash should run.'); - </script> - - <script nonce="abc" async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=script-src%20%27nonce-abc%27'></script> -</body> + </script></body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-report-only-policy-works-with-external-hash-policy.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-report-only-policy-works-with-external-hash-policy.html.sub.headers index 0ccfd507f65..7f03464d4d3 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-report-only-policy-works-with-external-hash-policy.html.sub.headers +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-report-only-policy-works-with-external-hash-policy.html.sub.headers @@ -2,6 +2,5 @@ Expires: Mon, 26 Jul 1997 05:00:00 GMT Cache-Control: no-store, no-cache, must-revalidate Cache-Control: post-check=0, pre-check=0, false Pragma: no-cache -Set-Cookie: script-src-report-only-policy-works-with-external-hash-policy={{$id:uuid()}}; Path=/content-security-policy/script-src/ Content-Security-Policy: script-src 'sha256-wIc3KtqOuTFEu6t17sIBuOswgkV406VJvhSk79Gw6U0=' 'nonce-abc' -Content-Security-Policy-Report-Only: script-src 'nonce-abc'; report-uri ../support/report.py?op=put&reportID={{$id}}
\ No newline at end of file +Content-Security-Policy-Report-Only: script-src 'nonce-abc';
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-report-only-policy-works-with-hash-policy.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-report-only-policy-works-with-hash-policy.html index 82a88791bd5..9ae66611ea5 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-report-only-policy-works-with-hash-policy.html +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-report-only-policy-works-with-hash-policy.html @@ -27,7 +27,5 @@ t.done(); }); </script> - - <script nonce="abc" async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=script-src%20%27nonce-abc%27'></script> </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-report-only-policy-works-with-hash-policy.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-report-only-policy-works-with-hash-policy.html.sub.headers index eaf175a8785..1237c247a67 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-report-only-policy-works-with-hash-policy.html.sub.headers +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-report-only-policy-works-with-hash-policy.html.sub.headers @@ -2,6 +2,5 @@ Expires: Mon, 26 Jul 1997 05:00:00 GMT Cache-Control: no-store, no-cache, must-revalidate Cache-Control: post-check=0, pre-check=0, false Pragma: no-cache -Set-Cookie: script-src-report-only-policy-works-with-hash-policy={{$id:uuid()}}; Path=/content-security-policy/script-src/ Content-Security-Policy: script-src 'sha256-EpVP4fTImWaRzBRBw/wrdfLhGTe/1U+CaBP1LNeKUIE=' 'nonce-abc' -Content-Security-Policy-Report-Only: script-src 'nonce-abc'; report-uri ../support/report.py?op=put&reportID={{$id}}
\ No newline at end of file +Content-Security-Policy-Report-Only: script-src 'nonce-abc';
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-wildcards-disallowed.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-wildcards-disallowed.html new file mode 100644 index 00000000000..7bf3d89b672 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/script-src-wildcards-disallowed.html @@ -0,0 +1,63 @@ +<!DOCTYPE html> +<html> + <head> + <meta http-equiv="Content-Security-Policy" content="script-src 'nonce-nonce' *; connect-src 'self';"> + <title>script-src disallowed wildcard use</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <script nonce="nonce"> + var t1 = async_test('data: URIs should not match *'); + t1.step(function() { + var script = document.createElement("script"); + script.src = 'data:application/javascript,'; + script.addEventListener('load', t1.step_func(function() { + assert_unreached('Should not successfully load data URI.'); + })); + script.addEventListener('error', t1.step_func(function() { + t1.done(); + })); + document.head.appendChild(script); + }); + + var t2 = async_test('blob: URIs should not match *'); + t2.step(function() { + var b = new Blob([''], { type: 'application/javascript' }); + var script = document.createElement('script'); + script.addEventListener('load', t2.step_func(function() { + assert_unreached('Should not successfully load blob URI.'); + })); + script.addEventListener('error', t2.step_func(function() { + t2.done(); + })); + + script.src = URL.createObjectURL(b); + document.head.appendChild(script); + }); + + var t3 = async_test('filesystem URIs should not match *'); + if (window.webkitRequestFileSystem) { + window.webkitRequestFileSystem(TEMPORARY, 1024*1024 /*1MB*/, function(fs) { + fs.root.getFile('fail.js', {create: true}, function(fileEntry) { + fileEntry.createWriter(function(fileWriter) { + var script = document.createElement('script'); + + script.addEventListener('load', t3.step_func(function() { + assert_unreached('Should not successfully load filesystem URI.'); + })); + script.addEventListener('error', t3.step_func(function() { + t3.done(); + })); + + script.src = fileEntry.toURL('application/javascript'); + document.body.appendChild(script); + }); + }); + }); + } else { + t3.done(); + } + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/scripthash-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/scripthash-allowed.sub.html new file mode 100644 index 00000000000..c46a99136d8 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/scripthash-allowed.sub.html @@ -0,0 +1,42 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'nonce-abc' 'sha256-IFmozo9WnnsMXVl/Ka8XzJ3Nd8yzS2zA2ME0mwtd+Ck=' 'sha256-jSpTmJKcrnHttKdYM/wCCDJoQY5tdSxNf7zd2prwFfI=' 'sha256-qbgA2XjB2EZKjn/UmK7v/K77t+fvfxA89QT/K9qPNyE=' 'sha256-K+7X5Ip3msvRvyQzf6fkrWZziuhaUIee1aLnlP5nX10='; connect-src 'self';"> + <title>scripthash-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="/content-security-policy/support/alertAssert.sub.js?alerts=%5B%22PASS%20(1%2F4)%22%2C%22PASS%20(2%2F4)%22%2C%22PASS%20(3%2F4)%22%2C%22PASS%20(4%2F4)%22%5D"> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + alert_assert("Fail"); + }); + </script> + + <script> + alert_assert('PASS (1/4)'); + + </script> + <script> + alert_assert('PASS (2/4)'); + + </script> + <script> + alert_assert('PASS (3/4)'); + + </script> + <script> + alert_assert('PASS (4/4)'); + + </script> +</head> + +<body> + <p> + This tests the effect of a valid script-hash value. It passes if no CSP violation is generated, and the alert_assert() is executed. + </p> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/scripthash-basic-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/scripthash-basic-blocked.sub.html new file mode 100644 index 00000000000..d254053eced --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/scripthash-basic-blocked.sub.html @@ -0,0 +1,72 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'nonce-abc' 'sha256-k7iO9DPkNQ7PcwPP+8XyYuRiCJ0p76Ofveol9g3mFNs=' 'sha256-EgE/bwVJ+ZLL9F5hNjDqD4C7nlFFrdDaKeNIJ2cUem4='; connect-src 'self';"> + <title>scripthash-basic-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="../support/logTest.sub.js?logs=[]"></script> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + alert_assert("Fail"); + }); + </script> + + <script> + var t_alert = async_test('Expecting alerts: ["PASS (1/1)"]'); + var expected_alerts = ["PASS (1/1)"]; + + function alert_assert(msg) { + t_alert.step(function() { + if (msg.match(/^FAIL/i)) { + assert_unreached(msg); + t_alert.done(); + } + for (var i = 0; i < expected_alerts.length; i++) { + if (expected_alerts[i] == msg) { + assert_true(expected_alerts[i] == msg); + expected_alerts.splice(i, 1); + if (expected_alerts.length == 0) { + t_alert.done(); + } + return; + } + } + assert_unreached('unexpected alert: ' + msg); + t_log.done(); + }); + } + + </script> + <script> + alert_assert('PASS (1/1)'); + + </script> + <script> + alert_assert('FAIL (1/4)'); + + </script> + <script> + alert_assert('FAIL (2/4)'); + + </script> + <script> + alert_assert('FAIL (3/4)'); + + </script> + <script> + alert_assert('FAIL (4/4)'); + + </script> +</head> + +<body> + <p> + This tests the effect of a valid script-hash value, with one valid script and several invalid ones. It passes if one alert is executed and a CSP violation is reported. + </p> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/scripthash-default-src.sub.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/scripthash-default-src.sub.html new file mode 100644 index 00000000000..6025a67179f --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/scripthash-default-src.sub.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<html> + <head> + <meta http-equiv="Content-Security-Policy" content="default-src 'self' 'nonce-abc' 'sha256-sc3CeiHrlck5tH2tTC4MnBYFnI9D5zp8f9odqnmGQjE='; connect-src 'self';"> + <title>script-hash allowed from default-src</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script nonce='abc'> + window.addEventListener('securitypolicyviolation', function(e) { + test(function() { assert_unreached("Should not have fired event")}); + }); + </script> + + <script>done();</script> + </head> + + <body> + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/scripthash-ignore-unsafeinline.sub.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/scripthash-ignore-unsafeinline.sub.html new file mode 100644 index 00000000000..d7af328f4e3 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/scripthash-ignore-unsafeinline.sub.html @@ -0,0 +1,56 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'sha256-k7iO9DPkNQ7PcwPP+8XyYuRiCJ0p76Ofveol9g3mFNs=' 'sha256-EgE/bwVJ+ZLL9F5hNjDqD4C7nlFFrdDaKeNIJ2cUem4=' 'sha256-lxHfHAe5I15v8qaArcZ5WiKmLU4CjV+3tJeQUqSIWBk='; connect-src 'self';"> + + <title>scripthash-ignore-unsafeinline</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="../support/logTest.sub.js?logs=[]"></script> + <script>window.addEventListener('securitypolicyviolation', function(e) { alert_assert("Fail"); })</script> + <script> + var t_alert = async_test('Expecting alerts: ["PASS (1/1)"]'); + var expected_alerts = ["PASS (1/1)"]; + + function alert_assert(msg) { + t_alert.step(function() { + if (msg.match(/^FAIL/i)) { + assert_unreached(msg); + t_alert.done(); + } + for (var i = 0; i < expected_alerts.length; i++) { + if (expected_alerts[i] == msg) { + assert_true(expected_alerts[i] == msg); + expected_alerts.splice(i, 1); + if (expected_alerts.length == 0) { + t_alert.done(); + } + return; + } + } + assert_unreached('unexpected alert: ' + msg); + t_log.done(); + }); + } + + </script> + <script> + alert_assert('PASS (1/1)'); + + </script> + <script> + alert_assert('FAIL (1/1)'); + + </script> +</head> + +<body> + <p> + This tests that a valid hash value disables inline JavaScript, even if 'unsafe-inline' is present. + </p> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/scripthash-unicode-normalization.sub.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/scripthash-unicode-normalization.sub.html new file mode 100644 index 00000000000..0c303630331 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/scripthash-unicode-normalization.sub.html @@ -0,0 +1,72 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'nonce-nonceynonce' 'sha256-9UFeeZbvnMa0tLNu76v96T4Hh+UtDWHm2lPQJoTWb9c='; connect-src 'self';"> + <title>scripthash-unicode-normalization</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +</head> + +<body> + <!-- The following two scripts contain two separate code points (U+00C5 + and U+212B, respectively) which, depending on your text editor, might be + rendered the same.However, their difference is important because, under + NFC normalization, they would become the same code point, which would be + against the spec. This test, therefore, validates that the scripts have + *different* hash values. --> + <script nonce="nonceynonce"> + var t_spv = async_test("Should fire securitypolicyviolation"); + window.addEventListener('securitypolicyviolation', t_spv.step_func_done(function(e) { + assert_equals(e.violatedDirective, "script-src"); + })); + + var matchingContent = 'Ã…'; + var nonMatchingContent = 'â„«'; + + // This script should have a hash value of + // sha256-9UFeeZbvnMa0tLNu76v96T4Hh+UtDWHm2lPQJoTWb9c= + var scriptContent1 = "window.finish('" + matchingContent + "');"; + + // This script should have a hash value of + // sha256-iNjjXUXds31FFvkAmbC74Sxnvreug3PzGtu16udQyqM= + var scriptContent2 = "window.finish('" + nonMatchingContent + "');"; + + var script1 = document.createElement('script'); + var script2 = document.createElement('script'); + + script1.test = async_test("Only matching content runs even with NFC normalization."); + + var failure = function() { + assert_unreached(); + } + + window.finish = function(content) { + if (content == matchingContent) { + script1.test.step(function() { + script1.test.done(); + }); + } else { + script1.test.step(function() { + assert_unreached("nonMatchingContent script ran"); + }); + } + } + + script1.onerror = failure; + + document.body.appendChild(script2); + script2.textContent = scriptContent2; + document.body.appendChild(script1); + script1.textContent = scriptContent1; + </script> + + <p> + This tests Unicode normalization. While appearing the same, the strings in the scripts are different Unicode points, but through normalization, should be the same when the hash is taken. + </p> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/scriptnonce-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/scriptnonce-allowed.sub.html new file mode 100644 index 00000000000..46fdabd62c5 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/scriptnonce-allowed.sub.html @@ -0,0 +1,68 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'nonce-noncynonce' 'nonce-noncy+/nonce='; connect-src 'self';"> + <title>scriptnonce-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script nonce="noncynonce"> + function log(msg) { + test(function() { + assert_unreached(msg) + }); + } + + </script> + <script nonce="noncynonce"> + window.addEventListener('securitypolicyviolation', function(e) { + alert_assert("Fail"); + }); + + var t_alert = async_test('Expecting alerts: ["PASS (1/2)","PASS (2/2)"]'); + var expected_alerts = ["PASS (1/2)", "PASS (2/2)"]; + + function alert_assert(msg) { + t_alert.step(function() { + if (msg.match(/^FAIL/i)) { + assert_unreached(msg); + t_alert.done(); + } + for (var i = 0; i < expected_alerts.length; i++) { + if (expected_alerts[i] == msg) { + assert_true(expected_alerts[i] == msg); + expected_alerts.splice(i, 1); + if (expected_alerts.length == 0) { + t_alert.done(); + } + return; + } + } + assert_unreached('unexpected alert: ' + msg); + t_log.done(); + }); + } + + </script> + <!-- enforcing policy: +script-src 'self' 'unsafe-inline' 'nonce-noncynonce' 'nonce-noncy+/nonce='; connect-src 'self'; +--> + <script nonce="noncynonce"> + alert_assert('PASS (1/2)'); + + </script> + <script nonce="noncy+/nonce="> + alert_assert('PASS (2/2)'); + + </script> +</head> + +<body> + <p> + This tests the effect of a valid script-nonce value. It passes if no CSP violation is generated and the alerts are executed. + </p> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/scriptnonce-and-scripthash.sub.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/scriptnonce-and-scripthash.sub.html new file mode 100644 index 00000000000..94a39973af2 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/scriptnonce-and-scripthash.sub.html @@ -0,0 +1,79 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'sha256-LS8v1E1Ff0Hc8FobgWKNKY3sbW4rljPlZNQHyyutfKU=' 'nonce-nonceynonce'; connect-src 'self';"> + <title>scriptnonce-and-scripthash</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script nonce="nonceynonce"> + function log(msg) { + test(function() { + assert_unreached(msg) + }); + } + </script> + <script nonce="nonceynonce"> + window.addEventListener('securitypolicyviolation', function(e) { + alert_assert("violated-directive=" + e.violatedDirective); + }); + + var t_alert = async_test('Expecting alerts: ["PASS (1/3)","PASS (2/3)","PASS (3/3)"]'); + var expected_alerts = ["PASS (1/3)", "PASS (2/3)", "PASS (3/3)", "violated-directive=script-src", "violated-directive=script-src"]; + + function alert_assert(msg) { + t_alert.step(function() { + if (msg.match(/^FAIL/i)) { + assert_unreached(msg); + t_alert.done(); + } + for (var i = 0; i < expected_alerts.length; i++) { + if (expected_alerts[i] == msg) { + assert_true(expected_alerts[i] == msg); + expected_alerts.splice(i, 1); + if (expected_alerts.length == 0) { + t_alert.done(); + } + return; + } + } + assert_unreached('unexpected alert: ' + msg); + t_log.done(); + }); + } + + </script> + <!-- enforcing policy: +script-src 'self' 'sha256-LS8v1E1Ff0Hc8FobgWKNKY3sbW4rljPlZNQHyyutfKU=' 'nonce-nonceynonce'; connect-src 'self'; +--> + <script nonce="nonceynonce"> + alert_assert('PASS (1/3)'); + + </script> + <script> + alert_assert('PASS (2/3)'); + + </script> + <script nonce="nonceynonce"> + alert_assert('PASS (3/3)'); + + </script> + <script> + alert_assert('FAIL (1/2)'); + + </script> + <script nonce="notanonce"> + alert_assert('FAIL (2/2)'); + + </script> +</head> + +<body> + <p> + This tests the combined use of script hash and script nonce. It passes if a CSP violation is generated and the three alerts show PASS. + </p> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/scriptnonce-basic-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/scriptnonce-basic-blocked.sub.html new file mode 100644 index 00000000000..db94c1c5f4b --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/scriptnonce-basic-blocked.sub.html @@ -0,0 +1,43 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'nonce-noncynonce'; connect-src 'self';"> + <title>scriptnonce-basic-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/alertAssert.sub.js?alerts=["PASS (closely-quoted nonce)","PASS (nonce w/whitespace)", "violated-directive=script-src", "violated-directive=script-src", "violated-directive=script-src"]'></script> + <script nonce="noncynonce"> + alert_assert('PASS (closely-quoted nonce)'); + + </script> + <script nonce=" noncynonce "> + alert_assert('PASS (nonce w/whitespace)'); + + window.addEventListener('securitypolicyviolation', function(e) { + alert_assert("violated-directive=" + e.violatedDirective); + }); + </script> + <script nonce="noncynonce noncynonce"> + alert_assert('FAIL (1/3)'); + + </script> + <script> + alert_assert('FAIL (2/3)'); + + </script> + <script nonce="noncynonceno?"> + alert_assert('FAIL (3/3)'); + + </script> +</head> + +<body> + <p> + This tests the effect of a valid script-nonce value. It passes if a CSP violation is generated, and the two PASS alerts are executed. + </p> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/scriptnonce-ignore-unsafeinline.sub.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/scriptnonce-ignore-unsafeinline.sub.html new file mode 100644 index 00000000000..18a6899a5cd --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/scriptnonce-ignore-unsafeinline.sub.html @@ -0,0 +1,74 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'nonce-noncynonce' 'nonce-noncy+/nonce=' 'unsafe-inline'; connect-src 'self';"> + <title>scriptnonce-ignore-unsafeinline</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script nonce='noncynonce'> + function log(msg) { + test(function() { + assert_unreached(msg) + }); + } + + window.addEventListener('securitypolicyviolation', function(e) { + alert_assert("violated-directive=" + e.violatedDirective); + }); + </script> + <script nonce='noncynonce'> + var t_alert = async_test('Expecting alerts: ["PASS (1/2)","PASS (2/2)", "violated-directive=script-src"]'); + var expected_alerts = ["PASS (1/2)", "PASS (2/2)", "violated-directive=script-src"]; + + function alert_assert(msg) { + t_alert.step(function() { + if (msg.match(/^FAIL/i)) { + assert_unreached(msg); + t_alert.done(); + } + for (var i = 0; i < expected_alerts.length; i++) { + if (expected_alerts[i] == msg) { + assert_true(expected_alerts[i] == msg); + expected_alerts.splice(i, 1); + if (expected_alerts.length == 0) { + t_alert.done(); + } + return; + } + } + assert_unreached('unexpected alert: ' + msg); + t_log.done(); + }); + } + + </script> + <!-- enforcing policy: +script-src 'self' 'unsafe-inline' 'nonce-noncynonce' 'nonce-noncy+/nonce=' 'unsafe-inline'; connect-src 'self'; +--> + <script nonce="noncynonce"> + + + </script> + <script nonce="noncynonce"> + alert_assert('PASS (1/2)'); + </script> + <script nonce="noncy+/nonce="> + alert_assert('PASS (2/2)'); + + </script> + <script> + alert_assert('FAIL (1/1)'); + + </script> +</head> + +<body> + <p> + This tests that a valid nonce disables inline JavaScript, even if 'unsafe-inline' is present. + </p> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/scriptnonce-redirect.sub.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/scriptnonce-redirect.sub.html new file mode 100644 index 00000000000..7e4e848375d --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/scriptnonce-redirect.sub.html @@ -0,0 +1,62 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'nonce-noncynonce'; connect-src 'self';"> + <title>scriptnonce-redirect</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script nonce="noncynonce"> + function log(msg) { + test(function() { + assert_unreached(msg) + }); + } + + window.addEventListener('securitypolicyviolation', function(e) { + alert_assert("Fail"); + }); + </script> + <script nonce="noncynonce"> + var t_alert = async_test('Expecting alerts: ["PASS"]'); + var expected_alerts = ["PASS"]; + + function alert_assert(msg) { + t_alert.step(function() { + if (msg.match(/^FAIL/i)) { + assert_unreached(msg); + t_alert.done(); + } + for (var i = 0; i < expected_alerts.length; i++) { + if (expected_alerts[i] == msg) { + assert_true(expected_alerts[i] == msg); + expected_alerts.splice(i, 1); + if (expected_alerts.length == 0) { + t_alert.done(); + } + return; + } + } + assert_unreached('unexpected alert: ' + msg); + t_log.done(); + }); + } + + </script> + <!-- enforcing policy: +script-src 'self' 'unsafe-inline' 'nonce-noncynonce'; connect-src 'self'; +--> +</head> + +<body> + This tests whether a deferred script load caused by a redirect is properly allowed by a nonce. + <script nonce="noncynonce" src="/common/redirect.py?location=http://{{host}}:{{ports[http][0]}}/content-security-policy/support/alert-pass.js"></script> + <script nonce="noncynonce"> + + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/srcdoc-doesnt-bypass-script-src.sub.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/srcdoc-doesnt-bypass-script-src.sub.html new file mode 100644 index 00000000000..eea201865aa --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/srcdoc-doesnt-bypass-script-src.sub.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'nonce-abc'; connect-src 'self';"> + <title>srcdoc-doesnt-bypass-script-src</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["violated-directive=script-src"]'></script> +</head> + +<body> + + <script nonce='abc'> + window.onmessage = function(e) { + log(e.data); + } + + var i = document.createElement('iframe'); + i.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + + i.srcdoc = "<sc" + "ript nonce='abc'>" + + "window.addEventListener('securitypolicyviolation', function(e) {" + + "window.parent.postMessage('violated-directive=' + e.violatedDirective, '*');});" + + "</scr" + "ipt>" + + "<scr" + "ipt>window.parent.log('FAIL')</scr" + "ipt>"; + document.body.appendChild(i); + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/support/inject-script.js b/tests/wpt/web-platform-tests/content-security-policy/script-src/support/inject-script.js new file mode 100644 index 00000000000..c04033c46f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/support/inject-script.js @@ -0,0 +1,5 @@ +document.write("<script>log('Pass 1 of 2');</script>"); + +var s = document.createElement('script'); +s.textContent = "log('Pass 2 of 2');"; +document.body.appendChild(s); diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/post-message.js b/tests/wpt/web-platform-tests/content-security-policy/script-src/support/post-message.js index 69daa31d2f1..69daa31d2f1 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/post-message.js +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/support/post-message.js diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-eval.js b/tests/wpt/web-platform-tests/content-security-policy/script-src/support/worker-eval.js index 9aa87129aee..9aa87129aee 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-eval.js +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/support/worker-eval.js diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-eval.js.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/script-src/support/worker-eval.js.sub.headers index afdcc7c011b..afdcc7c011b 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-eval.js.sub.headers +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/support/worker-eval.js.sub.headers diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-function-function.js b/tests/wpt/web-platform-tests/content-security-policy/script-src/support/worker-function-function.js index 03d9bf4cbbc..03d9bf4cbbc 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-function-function.js +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/support/worker-function-function.js diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-function-function.js.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/script-src/support/worker-function-function.js.sub.headers index afdcc7c011b..afdcc7c011b 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-function-function.js.sub.headers +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/support/worker-function-function.js.sub.headers diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/support/worker-importscripts.js b/tests/wpt/web-platform-tests/content-security-policy/script-src/support/worker-importscripts.js new file mode 100644 index 00000000000..0204de32cf1 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/support/worker-importscripts.js @@ -0,0 +1,6 @@ +try { + importScripts("/content-security-policy/support/post-message.js"); + postMessage("importScripts allowed"); +} catch (e) { + postMessage("importScripts blocked"); +} diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-importscripts.js.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/script-src/support/worker-importscripts.js.sub.headers index 57616b1fc2d..57616b1fc2d 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-importscripts.js.sub.headers +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/support/worker-importscripts.js.sub.headers diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-set-timeout.js b/tests/wpt/web-platform-tests/content-security-policy/script-src/support/worker-set-timeout.js index a16827eddfc..a16827eddfc 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-set-timeout.js +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/support/worker-set-timeout.js diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-set-timeout.js.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/script-src/support/worker-set-timeout.js.sub.headers index 57616b1fc2d..57616b1fc2d 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/worker-set-timeout.js.sub.headers +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/support/worker-set-timeout.js.sub.headers diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/worker-eval-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/worker-eval-blocked.sub.html new file mode 100644 index 00000000000..9a264f2a240 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/worker-eval-blocked.sub.html @@ -0,0 +1,38 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>worker-eval-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["eval blocked"]'></script> + <script src='../support/alertAssert.sub.js?alerts=[]'></script> +</head> + +<body> + <p>This test loads a worker, delivered with its own policy. + The eval() call in the worker should be forbidden by that + policy. No report should be generated because the worker + policy does not set a report-uri (although this parent + resource does).</p> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log('Fail'); + }); + + try { + var worker = new Worker('/content-security-policy/script-src/support/worker-eval.js'); + worker.onmessage = function(event) { + log(event.data); + }; + } catch (e) { + log(e); + } + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/worker-function-function-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/worker-function-function-blocked.sub.html new file mode 100644 index 00000000000..8c1df9f6679 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/worker-function-function-blocked.sub.html @@ -0,0 +1,37 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>worker-function-function-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["Function() function blocked"]'></script> + <script src='../support/alertAssert.sub.js?alerts=[]'></script> +</head> + +<body> + <p>This test loads a worker, delivered with its own policy. + The Function constructor should be forbidden by that + policy. No report should be generated because the worker + policy does not set a report-uri (although this parent + resource does).</p> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log('Fail'); + }); + try { + var worker = new Worker('/content-security-policy/script-src/support/worker-function-function.js'); + worker.onmessage = function(event) { + log(event.data); + }; + } catch (e) { + log(e); + } + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/worker-importscripts-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/worker-importscripts-blocked.sub.html new file mode 100644 index 00000000000..28906138069 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/worker-importscripts-blocked.sub.html @@ -0,0 +1,41 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self';"> + <title>worker-importscripts-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["TEST COMPLETE"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log('Fail'); + }); + var result = ''; + try { + var worker = new Worker('/content-security-policy/script-src/support/worker-importscripts.js'); + worker.onmessage = function(event) { + result = event.data; + test(function() { + assert_equals(result, 'importScripts blocked') + }); + log("TEST COMPLETE"); + }; + } catch (e) { + result = e; + test(function() { + assert_equals(result, 'importScripts blocked') + }); + log("TEST COMPLETE"); + } + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/worker-script-src.sub.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/worker-script-src.sub.html new file mode 100644 index 00000000000..da7771b9c4b --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/worker-script-src.sub.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>worker-script-src</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS"]'></script> + <script src='../support/alertAssert.sub.js?alerts=[]'></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log('Fail'); + }); + try { + var foo = new Worker('/content-security-policy/script-src/support/post-message.js'); + foo.onmessage = function(event) { + log("PASS"); + }; + } catch (e) { + log(e); + } + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/script-src/worker-set-timeout-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/script-src/worker-set-timeout-blocked.sub.html new file mode 100644 index 00000000000..5f93433416b --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/script-src/worker-set-timeout-blocked.sub.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'self' 'unsafe-eval'; connect-src 'self';"> + <title>worker-set-timeout-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="../support/logTest.sub.js?logs=[]"></script> + <script src='../support/alertAssert.sub.js?alerts=["setTimeout blocked"]'></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log('Fail'); + }); + try { + var worker = new Worker('/content-security-policy/script-src/support/worker-set-timeout.js'); + worker.onmessage = function(event) { + alert_assert(event.data); + }; + } catch (e) { + alert_assert(e); + } + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/style-src/injected-inline-style-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/style-src/injected-inline-style-allowed.sub.html new file mode 100644 index 00000000000..e91c4e46ac7 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/style-src/injected-inline-style-allowed.sub.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="style-src 'unsafe-inline'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>injected-inline-style-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS: 2 stylesheets on the page."]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); + </script> + + <div id="test1"> + FAIL 1/2 + </div> + + <div id="test2"> + FAIL 2/2 + </div> + + <script src="support/inject-style.js"></script> + <script> + if (document.styleSheets.length === 2) + log("PASS: 2 stylesheets on the page."); + else + log("FAIL: " + document.styleSheets.length + " stylesheets on the page (should be 2)."); + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/style-src/injected-inline-style-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/style-src/injected-inline-style-blocked.sub.html new file mode 100644 index 00000000000..d7e7de22cf6 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/style-src/injected-inline-style-blocked.sub.html @@ -0,0 +1,36 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="style-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>injected-inline-style-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["violated-directive=style-src","PASS"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + </script> + + <div id="test1"> + PASS 1/2 + </div> + <div id="test2"> + PASS 2/2 + </div> + + <script src="support/inject-style.js"></script> + <script> + log(document.styleSheets.length == 0 ? "PASS" : "FAIL"); + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/style-src/inline-style-allowed-while-cloning-objects.sub.html b/tests/wpt/web-platform-tests/content-security-policy/style-src/inline-style-allowed-while-cloning-objects.sub.html new file mode 100644 index 00000000000..7fdd5f6fb0c --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/style-src/inline-style-allowed-while-cloning-objects.sub.html @@ -0,0 +1,127 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="style-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>inline-style-allowed-while-cloning-objects</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script> + var t = async_test("Test that violation report event was fired"); + window.addEventListener("securitypolicyviolation", t.step_func_done(function(e) { + assert_equals(e.violatedDirective, "style-src"); + })); + window.onload = function() { + window.nodes = document.getElementById('nodes'); + window.node1 = document.getElementById('node1'); + window.node1.style.background = "yellow"; + window.node1.style.color = "red"; + window.node2 = document.getElementById('node1').cloneNode(true); + window.node2.id = "node2"; + window.node3 = document.getElementById('node3'); + window.node3.style.background = "blue"; + window.node3.style.color = "green"; + window.node4 = document.getElementById('node3').cloneNode(false); + window.node4.id = "node4"; + window.node4.innerHTML = "Node #4"; + nodes.appendChild(node1); + nodes.appendChild(node2); + nodes.appendChild(node3); + nodes.appendChild(node4); + test(function() { + assert_equals(node1.style.background.match(/yellow/)[0], "yellow") + }); + test(function() { + assert_equals(node2.style.background.match(/yellow/)[0], "yellow") + }); + test(function() { + assert_equals(node3.style.background.match(/blue/)[0], "blue") + }); + test(function() { + assert_equals(node4.style.background.match(/blue/)[0], "blue") + }); + test(function() { + assert_equals(node1.style.color, "red") + }); + test(function() { + assert_equals(node2.style.color, "red") + }); + test(function() { + assert_equals(node3.style.color, "green") + }); + test(function() { + assert_equals(node4.style.color, "green") + }); + test(function() { + assert_equals(window.getComputedStyle(node1).background, window.getComputedStyle(node2).background) + }); + test(function() { + assert_equals(window.getComputedStyle(node3).background, window.getComputedStyle(node4).background) + }); + test(function() { + assert_equals(window.getComputedStyle(node1).color, window.getComputedStyle(node2).color) + }); + test(function() { + assert_equals(window.getComputedStyle(node3).color, window.getComputedStyle(node4).color) + }); + window.ops = document.getElementById('ops'); + ops.style.color = 'red'; + window.clonedOps = ops.cloneNode(true); + window.violetOps = document.getElementById('violetOps'); + violetOps.style.background = 'rgb(238, 130, 238)'; + document.getElementsByTagName('body')[0].appendChild(clonedOps); + test(function() { + assert_equals(ops.style.background, "") + }); + test(function() { + assert_equals(ops.style.color, "red") + }); + test(function() { + assert_equals(clonedOps.style.background, "") + }); + test(function() { + assert_equals(violetOps.style.background.match(/rgb\(238, 130, 238\)/)[0], "rgb(238, 130, 238)") + }); + test(function() { + assert_equals(window.getComputedStyle(clonedOps).background, window.getComputedStyle(ops).background) + }); + test(function() { + assert_equals(window.getComputedStyle(clonedOps).color, window.getComputedStyle(ops).color) + }); + test(function() { + assert_equals(window.getComputedStyle(ops).background, window.getComputedStyle(violetOps).background) + }); + test(function() { + assert_equals(window.getComputedStyle(clonedOps).background, window.getComputedStyle(violetOps).background) + }); + test(function() { + assert_equals(ops.id, "ops") + }); + test(function() { + assert_equals(ops.id, clonedOps.id) + }); + }; + + </script> +</head> + +<body> + <p> + This test ensures that styles can be set by object.cloneNode() + </p> + <div id="nodes"> + This is a div (nodes) + <div id="node1"> This is a div. (node 1 or 2)</div> + <div id="node3"> This is a div. (node 3 or 4)</div> + </div> + <div id="ops" style="background: rgb(238, 130, 238)"> + Yet another div. + </div> + <div id="violetOps"> + Yet another div. + </div> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/style-src/inline-style-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/style-src/inline-style-allowed.sub.html new file mode 100644 index 00000000000..b0aa211b94d --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/style-src/inline-style-allowed.sub.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="style-src 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self';"> + <title>inline-style-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); + </script> + + <style> + .target { + background-color: blue; + } + + </style> +</head> + +<body class="target"> + <script> + log(document.styleSheets.length > 0 ? 'PASS' : 'FAIL'); + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/style-src/inline-style-attribute-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/style-src/inline-style-attribute-allowed.sub.html new file mode 100644 index 00000000000..048e4067c5e --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/style-src/inline-style-attribute-allowed.sub.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="style-src 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self';"> + <title>inline-style-attribute-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body style="background-color: blue;"> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); + </script> + + <script> + log(document.body.style.length > 0 ? 'PASS' : 'FAIL'); + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/style-src/inline-style-attribute-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/style-src/inline-style-attribute-blocked.sub.html new file mode 100644 index 00000000000..e2d84915cf0 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/style-src/inline-style-attribute-blocked.sub.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="style-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self';"> + <title>inline-style-attribute-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["violated-directive=style-src","PASS"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + </script> +</head> +<body style="background-color: blue;"> + + <script> + log(document.body.style.length > 0 ? 'FAIL' : 'PASS'); + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/style-src/inline-style-attribute-on-html.sub.html b/tests/wpt/web-platform-tests/content-security-policy/style-src/inline-style-attribute-on-html.sub.html new file mode 100644 index 00000000000..91faf091663 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/style-src/inline-style-attribute-on-html.sub.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); +</script> +<html style="background-color: blue;"> +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="style-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'"> + <title>inline-style-attribute-on-html</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <p>Even though this page has a CSP policy the blocks inline style, the style attribute on the HTML element still takes effect because it preceeds the meta element. + </p> + <script> + log(document.documentElement.style.length > 0 ? 'PASS' : 'FAIL'); + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/style-src/inline-style-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/style-src/inline-style-blocked.sub.html new file mode 100644 index 00000000000..3f34437dffd --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/style-src/inline-style-blocked.sub.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="style-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self';"> + <title>inline-style-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + </script> + <style> + .target { + background-color: blue; + } + + </style> +</head> + +<body class="target"> + <script> + log(document.styleSheets.length > 0 ? 'FAIL' : 'PASS'); + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/style-src/resources/allowed.css b/tests/wpt/web-platform-tests/content-security-policy/style-src/resources/allowed.css new file mode 100644 index 00000000000..35a89982175 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/style-src/resources/allowed.css @@ -0,0 +1,3 @@ +#test { + color: green; +} diff --git a/tests/wpt/web-platform-tests/content-security-policy/style-src/style-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/style-src/style-allowed.sub.html new file mode 100644 index 00000000000..fd4dfe63a88 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/style-src/style-allowed.sub.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="style-src *; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self';"> + <title>style-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); + </script> + <link rel="stylesheet" href="resources/blue.css"> +</head> + +<body> + <script> + log(document.styleSheets.length > 0 ? 'PASS' : 'FAIL'); + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/style-src/style-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/style-src/style-blocked.sub.html new file mode 100644 index 00000000000..4e590722d57 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/style-src/style-blocked.sub.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="style-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-inline'; connect-src 'self';"> + <title>style-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["violated-directive=style-src","PASS"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + </script> + <link rel="stylesheet" href="resources/blue.css"> +</head> + +<body> + <script> + log(document.styleSheets.length > 0 ? 'FAIL' : 'PASS'); + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/style-src/stylehash-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/style-src/stylehash-allowed.sub.html new file mode 100644 index 00000000000..90b647aa761 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/style-src/stylehash-allowed.sub.html @@ -0,0 +1,81 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="style-src 'self' 'sha256-pAKi9r4/WB7fHydbE3F3t8i8602ij2JN8zHJpL2T5BM=' 'sha256-hndjYvzUzy2Ykuad81Cwsl1FOXX/qYs/aDVyUyNZwBw=' 'sha384-bSVm1i3sjPBRM4TwZtYTDjk9JxZMExYHWbFmP1SxDhJH4ue0Wu9OPOkY5hcqRcSt' 'sha512-440MmBLtj9Kp5Bqloogn9BqGDylY8vFsv5/zXL1zH2fJVssCoskRig4gyM+9KqwvCSapSz5CVoUGHQcxv43UQg=='; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>stylehash-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="../support/logTest.sub.js?logs=[]"></script> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + alert_assert("Fail"); + }); + + var t_alert = async_test('Expecting alerts: ["PASS (1/4): The \'#p1\' element\'s text is green, which means the style was correctly applied.","PASS (2/4): The \'#p2\' element\'s text is green, which means the style was correctly applied.","PASS (3/4): The \'#p3\' element\'s text is green, which means the style was correctly applied.","PASS (4/4): The \'#p4\' element\'s text is green, which means the style was correctly applied."]'); + var expected_alerts = ["PASS (1/4): The '#p1' element's text is green, which means the style was correctly applied.", "PASS (2/4): The '#p2' element's text is green, which means the style was correctly applied.", "PASS (3/4): The '#p3' element's text is green, which means the style was correctly applied.", "PASS (4/4): The '#p4' element's text is green, which means the style was correctly applied."]; + + function alert_assert(msg) { + t_alert.step(function() { + if (msg.match(/^FAIL/i)) { + assert_unreached(msg); + t_alert.done(); + } + for (var i = 0; i < expected_alerts.length; i++) { + if (expected_alerts[i] == msg) { + assert_true(expected_alerts[i] == msg); + expected_alerts.splice(i, 1); + if (expected_alerts.length == 0) { + t_alert.done(); + } + return; + } + } + assert_unreached('unexpected alert: ' + msg); + t_log.done(); + }); + } + + </script> + <!-- enforcing policy: +style-src 'sha256-pAKi9r4/WB7fHydbE3F3t8i8602ij2JN8zHJpL2T5BM=' 'sha256-hndjYvzUzy2Ykuad81Cwsl1FOXX/qYs/aDVyUyNZwBw=' 'sha384-bSVm1i3sjPBRM4TwZtYTDjk9JxZMExYHWbFmP1SxDhJH4ue0Wu9OPOkY5hcqRcSt' 'sha512-440MmBLtj9Kp5Bqloogn9BqGDylY8vFsv5/zXL1zH2fJVssCoskRig4gyM+9KqwvCSapSz5CVoUGHQcxv43UQg=='; script-src 'self' 'unsafe-inline'; connect-src 'self'; +--> +</head> + +<body> + <p id="p1">This tests the result of a valid style hash. It passes if this text is green, and a "PASS" alert for p1 is fired.</p> + <p id="p2">This tests the result of a valid style hash. It passes if this text is green, and a "PASS" alert for p2 is fired.</p> + <p id="p3">This tests the result of a valid style hash. It passes if this text is green, and a "PASS" alert for p3 is fired.</p> + <p id="p4">This tests the result of a valid style hash. It passes if this text is green, and a "PASS" alert for p4 is fired.</p> + <style>p#p1 { color: green; }</style> + <style>p#p2 { color: green; }</style> + <style>p#p3 { color: green; }</style> + <style>p#p4 { color: green; }</style> + <script> + var color = window.getComputedStyle(document.querySelector('#p1')).color; + if (color === "rgb(0, 128, 0)") + alert_assert("PASS (1/4): The '#p1' element's text is green, which means the style was correctly applied."); + else + alert_assert("FAIL (1/4): The '#p1' element's text is " + color + ", which means the style was incorrectly applied."); + var color = window.getComputedStyle(document.querySelector('#p2')).color; + if (color === "rgb(0, 128, 0)") + alert_assert("PASS (2/4): The '#p2' element's text is green, which means the style was correctly applied."); + else + alert_assert("FAIL (2/4): The '#p2' element's text is " + color + ", which means the style was incorrectly applied."); + var color = window.getComputedStyle(document.querySelector('#p3')).color; + if (color === "rgb(0, 128, 0)") + alert_assert("PASS (3/4): The '#p3' element's text is green, which means the style was correctly applied."); + else + alert_assert("FAIL (3/4): The '#p3' element's text is " + color + ", which means the style was incorrectly applied."); + var color = window.getComputedStyle(document.querySelector('#p4')).color; + if (color === "rgb(0, 128, 0)") + alert_assert("PASS (4/4): The '#p4' element's text is green, which means the style was correctly applied."); + else + alert_assert("FAIL (4/4): The '#p4' element's text is " + color + ", which means the style was incorrectly applied."); + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/style-src/stylehash-basic-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/style-src/stylehash-basic-blocked.sub.html new file mode 100644 index 00000000000..d9f0fbf653e --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/style-src/stylehash-basic-blocked.sub.html @@ -0,0 +1,62 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="style-src 'self' 'sha256-FSRZotz4y83Ib8ZaoVj9eXKaeWXVUawM8zAPfYeYySs='; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>stylehash-basic-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="../support/logTest.sub.js?logs=[]"></script> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + alert_assert("violated-directive=" + e.violatedDirective); + }); + + var t_alert = async_test('Expecting alerts: ["PASS: The \'p\' element\'s text is green, which means the style was correctly applied.", "violated-directive=style-src"]'); + var expected_alerts = ["PASS: The 'p' element's text is green, which means the style was correctly applied.", "violated-directive=style-src"]; + + function alert_assert(msg) { + t_alert.step(function() { + if (msg.match(/^FAIL/i)) { + assert_unreached(msg); + t_alert.done(); + } + for (var i = 0; i < expected_alerts.length; i++) { + if (expected_alerts[i] == msg) { + assert_true(expected_alerts[i] == msg); + expected_alerts.splice(i, 1); + if (expected_alerts.length == 0) { + t_alert.done(); + } + return; + } + } + assert_unreached('unexpected alert: ' + msg); + t_log.done(); + }); + } + + </script> + <style>p { color: green; }</style> + <style>p { color: red; }</style> + <style>p { color: purple; }</style> + <style>p { color: blue; }</style> +</head> + +<body> + <p> + This tests the effect of a valid style-hash value, with one valid style and several invalid ones. It passes if the valid style is applied and a CSP violation is generated. + </p> + <script> + var color = window.getComputedStyle(document.querySelector('p')).color; + if (color === "rgb(0, 128, 0)") + alert_assert("PASS: The 'p' element's text is green, which means the style was correctly applied."); + else + alert_assert("FAIL: The 'p' element's text is " + color + ", which means the style was incorrectly applied."); + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/style-src/stylehash-default-src.sub.html b/tests/wpt/web-platform-tests/content-security-policy/style-src/stylehash-default-src.sub.html new file mode 100644 index 00000000000..c7604b29723 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/style-src/stylehash-default-src.sub.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html> + <head> + <title>stylehash allowed from default-src</title> + <meta http-equiv="Content-Security-Policy" content="default-src 'self' 'sha256-SXMrww9+PS7ymkxYbv91id+HfXeO7p1uCY0xhNb4MIw='; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + test(function() { assert_unreached("securitypolicyviolat was fired")}); + }); + </script> + </head> + + <body> + <p id="p">Test</p> + <style>p#p { color: green; }</style> + <script> + var color = window.getComputedStyle(document.querySelector('#p')).color; + assert_equals(color, "rgb(0, 128, 0)"); + done(); + </script> + + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/style-src/stylenonce-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/style-src/stylenonce-allowed.sub.html new file mode 100644 index 00000000000..c5ffdba6de4 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/style-src/stylenonce-allowed.sub.html @@ -0,0 +1,58 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="style-src 'self' 'nonce-noncynonce' 'nonce-noncy+/nonce='; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>stylenonce-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="../support/logTest.sub.js?logs=[]"></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> + <script> + var t_spv = async_test("Should fire securitypolicyviolation"); + window.addEventListener('securitypolicyviolation', t_spv.step_func_done(function(e) { + assert_equals(e.violatedDirective, "style-src"); + })); + + </script> + + <style nonce="noncynonce"> + #test1 { + color: green; + } + + </style> + <style> + #test1 { + color: red; + } + + </style> + <style nonce="noncynonce"> + #test2 { + color: green; + } + + </style> +</head> + +<body> + <p id="test1">This text should be green.</p> + <p id="test2">This text should also be green.</p> + <script> + var el = document.querySelector('#test1'); + test(function() { + assert_equals(window.getComputedStyle(el).color, "rgb(0, 128, 0)") + }); + var el = document.querySelector('#test2'); + test(function() { + assert_equals(window.getComputedStyle(el).color, "rgb(0, 128, 0)") + }); + + </script> + <p>Style correctly whitelisted via a 'nonce-*' expression in 'style-src' should be applied to the page.</p> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/style-src/stylenonce-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/style-src/stylenonce-blocked.sub.html new file mode 100644 index 00000000000..609e45abdc7 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/style-src/stylenonce-blocked.sub.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="style-src 'self'; script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>stylenonce-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <link rel="stylesheet" type="text/css" href="../style-src/resources/allowed.css"> + <script src="../support/logTest.sub.js?logs=[]"></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> + <script> + var t_spv = async_test("Should fire securitypolicyviolation"); + window.addEventListener('securitypolicyviolation', t_spv.step_func_done(function(e) { + assert_equals(e.violatedDirective, "style-src"); + })); + </script> + <style nonce="noncynonce"> + #test { + color: red; + } + + </style> +</head> + +<body> + <p id="test">This text should be green.</p> + <script> + var el = document.querySelector('#test'); + test(function() { + assert_equals(window.getComputedStyle(el).color, "rgb(0, 128, 0)") + }); + + </script> + <p>Style that does not match a 'nonce-*' expression in 'style-src' should not be applied to the page.</p> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/inject-style.js b/tests/wpt/web-platform-tests/content-security-policy/style-src/support/inject-style.js index 532645a455f..532645a455f 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/inject-style.js +++ b/tests/wpt/web-platform-tests/content-security-policy/style-src/support/inject-style.js diff --git a/tests/wpt/web-platform-tests/content-security-policy/support/checkReport.sub.js b/tests/wpt/web-platform-tests/content-security-policy/support/checkReport.sub.js index 803dc06d5ea..ba179d6bab4 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/support/checkReport.sub.js +++ b/tests/wpt/web-platform-tests/content-security-policy/support/checkReport.sub.js @@ -36,6 +36,13 @@ var reportLocation = location.protocol + "//" + location.host + "/content-security-policy/support/report.py?op=take&timeout=" + timeout + "&reportID=" + reportID; var reportTest = async_test("Violation report status OK."); + + function assert_field_value(field, value, field_name) { + assert_true(field.indexOf(value.split(" ")[0]) != -1, + field_name + " value of \"" + field + "\" did not match " + + value.split(" ")[0] + "."); + } + reportTest.step(function () { var report = new XMLHttpRequest(); @@ -55,9 +62,11 @@ // is reported, not the details... if(data["csp-report"] != undefined && data["csp-report"][reportField] != undefined) { - assert_true(data["csp-report"][reportField].indexOf(reportValue.split(" ")[0]) != -1, - reportField + " value of \"" + data["csp-report"][reportField] + "\" did not match " + - reportValue.split(" ")[0] + "."); + assert_field_value(data["csp-report"][reportField], reportValue, reportField); + } else if (data[0] != undefined && data[0]["report"] != undefined && data[0]["report"][reportField] != undefined) { + assert_field_value(data[0]["report"][reportField], reportValue, reportField); + } else { + assert_equals("", reportField, "Expected report field could not be found in report"); } } diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/document-write-alert-fail.js b/tests/wpt/web-platform-tests/content-security-policy/support/document-write-alert-fail.js index 5e78ca0dac3..5e78ca0dac3 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/resources/document-write-alert-fail.js +++ b/tests/wpt/web-platform-tests/content-security-policy/support/document-write-alert-fail.js diff --git a/tests/wpt/web-platform-tests/content-security-policy/support/manifest.json b/tests/wpt/web-platform-tests/content-security-policy/support/manifest.json new file mode 100644 index 00000000000..97da19c5ca2 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/support/manifest.json @@ -0,0 +1,5 @@ +{ + "name": "Dummy manifest", + "start_url": "/start.html" +} +
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/svg/scripted.svg b/tests/wpt/web-platform-tests/content-security-policy/svg/scripted.svg index a8aca4e3082..5482831fa85 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/svg/scripted.svg +++ b/tests/wpt/web-platform-tests/content-security-policy/svg/scripted.svg @@ -6,7 +6,7 @@ <desc>Example script01 - redirect</desc> <script id="postmessagescript" type="application/ecmascript"> <![CDATA[ - location = "/content-security-policy/blink-contrib/resources/postmessage-fail.html"; + location = "/content-security-policy/support/postmessage-fail.html"; ]]> </script> <circle cx="300" cy="225" r="100" fill="lawngreen"/> diff --git a/tests/wpt/web-platform-tests/content-security-policy/svg/svg-from-guid.html b/tests/wpt/web-platform-tests/content-security-policy/svg/svg-from-guid.html index b565e94a4e6..962cd880363 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/svg/svg-from-guid.html +++ b/tests/wpt/web-platform-tests/content-security-policy/svg/svg-from-guid.html @@ -31,7 +31,7 @@ <desc>Example script01 - redirect</desc> <script id="postmessagescript" type="application/ecmascript"> <![CDATA[ - location = "/content-security-policy/blink-contrib/resources/postmessage-fail.html"; + location = "/content-security-policy/support/postmessage-fail.html"; ]]> </script> <circle cx="300" cy="225" r="100" fill="lawngreen"/> diff --git a/tests/wpt/web-platform-tests/content-security-policy/svg/svg-inline.sub.html b/tests/wpt/web-platform-tests/content-security-policy/svg/svg-inline.sub.html index 7beb295f14b..3377f5dca6d 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/svg/svg-inline.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/svg/svg-inline.sub.html @@ -2,8 +2,16 @@ <html> <head> <title>svg-policy-with-resource</title> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> + <script> + var t_spv = async_test("Should fire violation event"); + window.addEventListener("securitypolicyviolation", t_spv.step_func_done(function(e) { + assert_equals(e.violatedDirective, "script-src"); + })); + </script> + </head> <body> @@ -12,23 +20,22 @@ not redirect to a different resource.</p> <div id="log"></div> <?xml version="1.0" standalone="no"?> -<svg width="6cm" height="5cm" viewBox="0 0 600 500" - xmlns="http://www.w3.org/2000/svg" version="1.1"> + + <svg width="6cm" height="5cm" viewBox="0 0 600 500" + xmlns="http://www.w3.org/2000/svg" version="1.1"> - <script type="application/ecmascript" + <script type="application/ecmascript" xlink:href="http://www1.{{host}}:{{ports[http][0]}}/content-security-policy/support/.js"> - </script> - - <circle cx="300" cy="225" r="100" fill="lawngreen"/> + </script> - <text x="300" y="250" - font-family="Verdana" - font-size="50" - text-anchor="middle"> - PASS - </text> -</svg> + <circle cx="300" cy="225" r="100" fill="lawngreen"/> - <script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=script-src%20%27self%27+%27unsafe-inline%27'></script> + <text x="300" y="250" + font-family="Verdana" + font-size="50" + text-anchor="middle"> + PASS + </text> + </svg> </body> </html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/svg/svg-inline.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/svg/svg-inline.sub.html.sub.headers deleted file mode 100644 index a846c4b1647..00000000000 --- a/tests/wpt/web-platform-tests/content-security-policy/svg/svg-inline.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: svg-inline={{$id:uuid()}}; Path=/content-security-policy/svg/ -Content-Security-Policy: script-src 'self' 'unsafe-inline'; report-uri ../support/report.py?op=put&reportID={{$id}}
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-allowed.sub.html new file mode 100644 index 00000000000..186996311b7 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-allowed.sub.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html> + +<head> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self';"> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <title>eval-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="../support/logTest.sub.js?logs=[]"></script> + <script src='../support/alertAssert.sub.js?alerts=["PASS (1 of 2)","PASS (2 of 2)"]'></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); + + eval("alert_assert('PASS (1 of 2)')"); + + window.eval("alert_assert('PASS (2 of 2)')"); + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-blocked-and-sends-report.sub.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-blocked-and-sends-report.sub.html new file mode 100644 index 00000000000..998a616652a --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-blocked-and-sends-report.sub.html @@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>eval-blocked-and-sends-report</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS: eval() blocked.","violated-directive=script-src"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + + try { + eval("alert_assert('FAIL')"); + } catch (e) { + log('PASS: eval() blocked.'); + } + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-blocked-in-about-blank-iframe.sub.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-blocked-in-about-blank-iframe.sub.html new file mode 100644 index 00000000000..95b3d566ced --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-blocked-in-about-blank-iframe.sub.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>eval-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["violated-directive=script-src","PASS"]'></script> + <script src='../support/alertAssert.sub.js?alerts=[]'></script> +</head> + +<body> + +<p>Eval should be blocked in the iframe, but inline script should be allowed.</p> +<script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + window.onmessage = function(e) { + log(e.data); + } + window.onload = function() { + frames[0].document.write("<script>eval('window.parent.postMessage(\"FAIL\", \"*\");'); window.parent.postMessage(\"PASS\", \"*\");</sc" + "ript>"); + frames[0].document.close(); + } + +</script> +<iframe src="about:blank"></iframe> + +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-blocked.sub.html new file mode 100644 index 00000000000..7546082ee41 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-blocked.sub.html @@ -0,0 +1,36 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>eval-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS EvalError","PASS EvalError", "violated-directive=script-src"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + + try { + eval("alert_assert('FAIL (1 of 2)')"); + } catch (e) { + log("PASS EvalError"); + } + + try { + window.eval("alert_assert('FAIL (1 of 2)')"); + } catch (e) { + log("PASS EvalError"); + } + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-scripts-setInterval-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-scripts-setInterval-allowed.sub.html new file mode 100644 index 00000000000..ee888eaa495 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-scripts-setInterval-allowed.sub.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self';"> + <title>eval-scripts-setInterval-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS 1 of 2","PASS 2 of 2"]'></script> + <script src='../support/alertAssert.sub.js?alerts=[]'></script> +</head> +<pre> +<script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); + + var id_string = setInterval("clearInterval(id_string); log('PASS 1 of 2')", 0); + if (id_string == 0) + log('FAIL: Return value for string (should not be 0): ' + id_string); + + var id_function = setInterval(function() { + clearInterval(id_function); + log('PASS 2 of 2'); + }, 0); + + if (id_function == 0) + log('FAIL'); +</script> +</pre> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-scripts-setInterval-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-scripts-setInterval-blocked.sub.html new file mode 100644 index 00000000000..0d65e294f75 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-scripts-setInterval-blocked.sub.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>eval-scripts-setInterval-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS","violated-directive=script-src"]'></script> + <script src='../support/alertAssert.sub.js?alerts=[]'></script> +</head> +<script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + + var id = setInterval("alert_assert('FAIL')", 0); + if (id != 0) + log('FAIL: Return value for string (should be 0): ' + id); + + var id = setInterval(function() { + clearInterval(id); + log('PASS'); + }, 0); + + if (id == 0) + log('FAIL'); +</script> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-scripts-setTimeout-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-scripts-setTimeout-allowed.sub.html new file mode 100644 index 00000000000..ff85a867489 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-scripts-setTimeout-allowed.sub.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self';"> + <title>eval-scripts-setTimeout-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS 1 of 2","PASS 2 of 2"]'></script> + <script src='../support/alertAssert.sub.js?alerts=[]'></script> +</head> +<script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); + + var id = setTimeout("log('PASS 1 of 2')", 0); + if (id == 0) + log('FAIL'); + var id = setTimeout(function() { + log('PASS 2 of 2'); + }, 0); + if (id == 0) + log('FAIL'); +</script> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-scripts-setTimeout-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-scripts-setTimeout-blocked.sub.html new file mode 100644 index 00000000000..21737ce8cb2 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/eval-scripts-setTimeout-blocked.sub.html @@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>eval-scripts-setTimeout-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS","violated-directive=script-src"]'></script> + <script src='../support/alertAssert.sub.js?alerts=[]'></script> +</head> +<script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + + var id = setTimeout("alert_assert('FAIL')", 0); + if (id != 0) + log('FAIL'); + + var id = setTimeout(function() { + log('PASS'); + }, 0); + + if (id == 0) + log('FAIL'); +</script> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/function-constructor-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/function-constructor-allowed.sub.html new file mode 100644 index 00000000000..8e6661b21c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/function-constructor-allowed.sub.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self';"> + <title>function-constructor-allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS"]'></script> + <script src='../support/alertAssert.sub.js?alerts=[]'></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("Fail"); + }); + + (new Function("log('PASS')"))(); + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/function-constructor-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/function-constructor-blocked.sub.html new file mode 100644 index 00000000000..eb610ff542f --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/unsafe-eval/function-constructor-blocked.sub.html @@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html> + +<head> + <!-- Programmatically converted from a WebKit Reftest, please forgive resulting idiosyncracies.--> + <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; connect-src 'self';"> + <title>function-constructor-blocked</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src='../support/logTest.sub.js?logs=["PASS EvalError","violated-directive=script-src"]'></script> + <script src="../support/alertAssert.sub.js?alerts=[]"></script> +</head> + +<body> + <script> + window.addEventListener('securitypolicyviolation', function(e) { + log("violated-directive=" + e.violatedDirective); + }); + + try { + (new Function("log('FAIL')"))(); + } catch (e) { + log("PASS EvalError"); + } + + </script> + <div id="log"></div> +</body> + +</html> diff --git a/tests/wpt/web-platform-tests/css/css-flexbox-1/percentage-heights-000.html b/tests/wpt/web-platform-tests/css/css-flexbox-1/percentage-heights-000.html index 136ef2b12ce..c23a43911cf 100644 --- a/tests/wpt/web-platform-tests/css/css-flexbox-1/percentage-heights-000.html +++ b/tests/wpt/web-platform-tests/css/css-flexbox-1/percentage-heights-000.html @@ -34,7 +34,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.flexbox')"> <div id=log></div> diff --git a/tests/wpt/web-platform-tests/css/css-flexbox-1/percentage-heights-001.html b/tests/wpt/web-platform-tests/css/css-flexbox-1/percentage-heights-001.html index f24eee9eccf..6550206b7e8 100644 --- a/tests/wpt/web-platform-tests/css/css-flexbox-1/percentage-heights-001.html +++ b/tests/wpt/web-platform-tests/css/css-flexbox-1/percentage-heights-001.html @@ -9,7 +9,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <style> .rect { diff --git a/tests/wpt/web-platform-tests/css/css-flexbox-1/position-absolute-001.html b/tests/wpt/web-platform-tests/css/css-flexbox-1/position-absolute-001.html index d3d808940e5..2e65533aeb3 100644 --- a/tests/wpt/web-platform-tests/css/css-flexbox-1/position-absolute-001.html +++ b/tests/wpt/web-platform-tests/css/css-flexbox-1/position-absolute-001.html @@ -80,7 +80,7 @@ body { </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.flexbox')"> <div id=log></div> <script> diff --git a/tests/wpt/web-platform-tests/css/css-flexbox-1/position-absolute-002.html b/tests/wpt/web-platform-tests/css/css-flexbox-1/position-absolute-002.html index bf69765323e..9c1cc427920 100644 --- a/tests/wpt/web-platform-tests/css/css-flexbox-1/position-absolute-002.html +++ b/tests/wpt/web-platform-tests/css/css-flexbox-1/position-absolute-002.html @@ -67,7 +67,7 @@ body { <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.flexbox')"> <div id=log></div> diff --git a/tests/wpt/web-platform-tests/css/css-flexbox-1/position-absolute-003.html b/tests/wpt/web-platform-tests/css/css-flexbox-1/position-absolute-003.html index 025aef6f45a..94763c8ebf1 100644 --- a/tests/wpt/web-platform-tests/css/css-flexbox-1/position-absolute-003.html +++ b/tests/wpt/web-platform-tests/css/css-flexbox-1/position-absolute-003.html @@ -25,7 +25,7 @@ padding in combination with abspos items"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.rect')"> <div id=log></div> diff --git a/tests/wpt/web-platform-tests/css/css-flexbox-1/position-absolute-004.html b/tests/wpt/web-platform-tests/css/css-flexbox-1/position-absolute-004.html index ff14f35b146..aa8ee516d40 100644 --- a/tests/wpt/web-platform-tests/css/css-flexbox-1/position-absolute-004.html +++ b/tests/wpt/web-platform-tests/css/css-flexbox-1/position-absolute-004.html @@ -25,7 +25,7 @@ becomes absolutely positioned"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script> function update() { diff --git a/tests/wpt/web-platform-tests/css/css-flexbox-1/support/check-layout-th.js b/tests/wpt/web-platform-tests/css/css-flexbox-1/support/check-layout-th.js deleted file mode 100644 index 07f7d5ded82..00000000000 --- a/tests/wpt/web-platform-tests/css/css-flexbox-1/support/check-layout-th.js +++ /dev/null @@ -1,190 +0,0 @@ -(function() { -// Test is initiated from body.onload, so explicit done() call is required. -setup({ explicit_done: true }); - -function checkSubtreeExpectedValues(t, parent, prefix) -{ - var checkedLayout = checkExpectedValues(t, parent, prefix); - Array.prototype.forEach.call(parent.childNodes, function(node) { - checkedLayout |= checkSubtreeExpectedValues(t, node, prefix); - }); - return checkedLayout; -} - -function checkAttribute(output, node, attribute) -{ - var result = node.getAttribute && node.getAttribute(attribute); - output.checked |= !!result; - return result; -} - -function assert_tolerance(actual, expected, message) -{ - if (isNaN(expected) || Math.abs(actual - expected) >= 1) { - assert_equals(actual, Number(expected), message); - } -} - -function checkExpectedValues(t, node, prefix) -{ - var output = { checked: false }; - - var expectedWidth = checkAttribute(output, node, "data-expected-width"); - if (expectedWidth) { - assert_tolerance(node.offsetWidth, expectedWidth, prefix + "width"); - } - - var expectedHeight = checkAttribute(output, node, "data-expected-height"); - if (expectedHeight) { - assert_tolerance(node.offsetHeight, expectedHeight, prefix + "height"); - } - - var expectedOffset = checkAttribute(output, node, "data-offset-x"); - if (expectedOffset) { - assert_tolerance(node.offsetLeft, expectedOffset, prefix + "offsetLeft"); - } - - var expectedOffset = checkAttribute(output, node, "data-offset-y"); - if (expectedOffset) { - assert_tolerance(node.offsetTop, expectedOffset, prefix + "offsetTop"); - } - - var expectedWidth = checkAttribute(output, node, "data-expected-client-width"); - if (expectedWidth) { - assert_tolerance(node.clientWidth, expectedWidth, prefix + "clientWidth"); - } - - var expectedHeight = checkAttribute(output, node, "data-expected-client-height"); - if (expectedHeight) { - assert_tolerance(node.clientHeight, expectedHeight, prefix + "clientHeight"); - } - - var expectedWidth = checkAttribute(output, node, "data-expected-scroll-width"); - if (expectedWidth) { - assert_tolerance(node.scrollWidth, expectedWidth, prefix + "scrollWidth"); - } - - var expectedHeight = checkAttribute(output, node, "data-expected-scroll-height"); - if (expectedHeight) { - assert_tolerance(node.scrollHeight, expectedHeight, prefix + "scrollHeight"); - } - - var expectedOffset = checkAttribute(output, node, "data-total-x"); - if (expectedOffset) { - var totalLeft = node.clientLeft + node.offsetLeft; - assert_tolerance(totalLeft, expectedOffset, prefix + - "clientLeft+offsetLeft (" + node.clientLeft + " + " + node.offsetLeft + ")"); - } - - var expectedOffset = checkAttribute(output, node, "data-total-y"); - if (expectedOffset) { - var totalTop = node.clientTop + node.offsetTop; - assert_tolerance(totalTop, expectedOffset, prefix + - "clientTop+offsetTop (" + node.clientTop + " + " + node.offsetTop + ")"); - } - - var expectedDisplay = checkAttribute(output, node, "data-expected-display"); - if (expectedDisplay) { - var actualDisplay = getComputedStyle(node).display; - assert_equals(actualDisplay, expectedDisplay, prefix + "display"); - } - - var expectedPaddingTop = checkAttribute(output, node, "data-expected-padding-top"); - if (expectedPaddingTop) { - var actualPaddingTop = getComputedStyle(node).paddingTop; - // Trim the unit "px" from the output. - actualPaddingTop = actualPaddingTop.slice(0, -2); - assert_equals(actualPaddingTop, expectedPaddingTop, prefix + "padding-top"); - } - - var expectedPaddingBottom = checkAttribute(output, node, "data-expected-padding-bottom"); - if (expectedPaddingBottom) { - var actualPaddingBottom = getComputedStyle(node).paddingBottom; - // Trim the unit "px" from the output. - actualPaddingBottom = actualPaddingBottom.slice(0, -2); - assert_equals(actualPaddingBottom, expectedPaddingBottom, prefix + "padding-bottom"); - } - - var expectedPaddingLeft = checkAttribute(output, node, "data-expected-padding-left"); - if (expectedPaddingLeft) { - var actualPaddingLeft = getComputedStyle(node).paddingLeft; - // Trim the unit "px" from the output. - actualPaddingLeft = actualPaddingLeft.slice(0, -2); - assert_equals(actualPaddingLeft, expectedPaddingLeft, prefix + "padding-left"); - } - - var expectedPaddingRight = checkAttribute(output, node, "data-expected-padding-right"); - if (expectedPaddingRight) { - var actualPaddingRight = getComputedStyle(node).paddingRight; - // Trim the unit "px" from the output. - actualPaddingRight = actualPaddingRight.slice(0, -2); - assert_equals(actualPaddingRight, expectedPaddingRight, prefix + "padding-right"); - } - - var expectedMarginTop = checkAttribute(output, node, "data-expected-margin-top"); - if (expectedMarginTop) { - var actualMarginTop = getComputedStyle(node).marginTop; - // Trim the unit "px" from the output. - actualMarginTop = actualMarginTop.slice(0, -2); - assert_equals(actualMarginTop, expectedMarginTop, prefix + "margin-top"); - } - - var expectedMarginBottom = checkAttribute(output, node, "data-expected-margin-bottom"); - if (expectedMarginBottom) { - var actualMarginBottom = getComputedStyle(node).marginBottom; - // Trim the unit "px" from the output. - actualMarginBottom = actualMarginBottom.slice(0, -2); - assert_equals(actualMarginBottom, expectedMarginBottom, prefix + "margin-bottom"); - } - - var expectedMarginLeft = checkAttribute(output, node, "data-expected-margin-left"); - if (expectedMarginLeft) { - var actualMarginLeft = getComputedStyle(node).marginLeft; - // Trim the unit "px" from the output. - actualMarginLeft = actualMarginLeft.slice(0, -2); - assert_equals(actualMarginLeft, expectedMarginLeft, prefix + "margin-left"); - } - - var expectedMarginRight = checkAttribute(output, node, "data-expected-margin-right"); - if (expectedMarginRight) { - var actualMarginRight = getComputedStyle(node).marginRight; - // Trim the unit "px" from the output. - actualMarginRight = actualMarginRight.slice(0, -2); - assert_equals(actualMarginRight, expectedMarginRight, prefix + "margin-right"); - } - - return output.checked; -} - -window.checkLayout = function(selectorList, outputContainer) -{ - if (!selectorList) { - console.error("You must provide a CSS selector of nodes to check."); - return; - } - var nodes = document.querySelectorAll(selectorList); - var testNumber = 0; - nodes = Array.prototype.slice.call(nodes); - nodes.reverse(); - var checkedLayout = false; - Array.prototype.forEach.call(nodes, function(node) { - test(function(t) { - var container = node.parentNode.className == 'container' ? node.parentNode : node; - var prefix = "\n" + container.outerHTML + "\n"; - var passed = false; - try { - checkedLayout |= checkExpectedValues(t, node.parentNode, prefix); - checkedLayout |= checkSubtreeExpectedValues(t, node, prefix); - passed = true; - } finally { - checkedLayout |= !passed; - } - }, selectorList + ' ' + String(++testNumber)); - }); - if (!checkedLayout) { - console.error("No valid data-* attributes found in selector list : " + selectorList); - } - done(); -}; - -})(); diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-01.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-01.html new file mode 100644 index 00000000000..4d7dcd8d577 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-01.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-stretch property initial value is normal</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-stretch-pass-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-stretch-prop"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-prop-desc>" +<meta name="assert" content="The ‘font-stretch’ property selects a normal, condensed, or expanded face from a font family."> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/fail.woff) format("woff"); + font-stretch: ultra-expanded; + } + @font-face { + font-family: "test"; + src: url(support/fonts/pass.woff) format("woff"); + font-stretch: normal; + } + .test { + font-family: "test"; + font-size: 6em; + } + +</style> + +<p>Test passes if the word PASS appears below.</p> +<section class="test"> + <p>P</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-02.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-02.html new file mode 100644 index 00000000000..e07394db5d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-02.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-stretch property ultra-expanded</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-stretch-pass-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-stretch-prop"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-prop-desc>" +<meta name="assert" content="The ‘font-stretch’ property selects a normal, condensed, or expanded face from a font family."> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/fail.woff) format("woff"); + font-stretch: normal; + } + @font-face { + font-family: "test"; + src: url(support/fonts/pass.woff) format("woff"); + font-stretch: ultra-expanded; + } + .test { + font-family: "test"; + font-size: 6em; + font-stretch: ultra-expanded; + } + +</style> + +<p>Test passes if the word PASS appears below.</p> +<section class="test"> + <p>P</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-03.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-03.html new file mode 100644 index 00000000000..75cddfedc34 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-03.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-stretch property extra-expanded</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-stretch-pass-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-stretch-prop"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-prop-desc>" +<meta name="assert" content="The ‘font-stretch’ property selects a normal, condensed, or expanded face from a font family."> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/fail.woff) format("woff"); + font-stretch: normal; + } + @font-face { + font-family: "test"; + src: url(support/fonts/pass.woff) format("woff"); + font-stretch: extra-expanded; + } + .test { + font-family: "test"; + font-size: 6em; + font-stretch: extra-expanded; + } + +</style> + +<p>Test passes if the word PASS appears below.</p> +<section class="test"> + <p>P</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-04.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-04.html new file mode 100644 index 00000000000..85d7c20ee36 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-04.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-stretch property, expanded</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-stretch-pass-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-stretch-prop"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-prop-desc>" +<meta name="assert" content="The ‘font-stretch’ property selects a normal, condensed, or expanded face from a font family."> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/fail.woff) format("woff"); + font-stretch: normal; + } + @font-face { + font-family: "test"; + src: url(support/fonts/pass.woff) format("woff"); + font-stretch: expanded; + } + .test { + font-family: "test"; + font-size: 6em; + font-stretch: expanded; + } + +</style> + +<p>Test passes if the word PASS appears below.</p> +<section class="test"> + <p>P</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-05.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-05.html new file mode 100644 index 00000000000..2bb45288e1b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-05.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-stretch property, semi-expanded</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-stretch-pass-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-stretch-prop"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-prop-desc>" +<meta name="assert" content="The ‘font-stretch’ property selects a normal, condensed, or expanded face from a font family."> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/fail.woff) format("woff"); + font-stretch: normal; + } + @font-face { + font-family: "test"; + src: url(support/fonts/pass.woff) format("woff"); + font-stretch: semi-expanded; + } + .test { + font-family: "test"; + font-size: 6em; + font-stretch: semi-expanded; + } + +</style> + +<p>Test passes if the word PASS appears below.</p> +<section class="test"> + <p>P</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-06.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-06.html new file mode 100644 index 00000000000..6118d3f79f2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-06.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-stretch property, normal</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-stretch-pass-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-stretch-prop"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-prop-desc>" +<meta name="assert" content="The ‘font-stretch’ property selects a normal, condensed, or expanded face from a font family."> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/fail.woff) format("woff"); + font-stretch: semi-expanded; + } + @font-face { + font-family: "test"; + src: url(support/fonts/pass.woff) format("woff"); + font-stretch: normal; + } + .test { + font-family: "test"; + font-size: 6em; + font-stretch: normal; + } + +</style> + +<p>Test passes if the word PASS appears below.</p> +<section class="test"> + <p>P</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-07.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-07.html new file mode 100644 index 00000000000..c94ddfa2f60 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-07.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-stretch property, semi-condensed</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-stretch-pass-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-stretch-prop"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-prop-desc>" +<meta name="assert" content="The ‘font-stretch’ property selects a normal, condensed, or expanded face from a font family."> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/fail.woff) format("woff"); + font-stretch: normal; + } + @font-face { + font-family: "test"; + src: url(support/fonts/pass.woff) format("woff"); + font-stretch: semi-condensed; + } + .test { + font-family: "test"; + font-size: 6em; + font-stretch: semi-condensed; + } + +</style> + +<p>Test passes if the word PASS appears below.</p> +<section class="test"> + <p>P</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-08.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-08.html new file mode 100644 index 00000000000..e9da4465bab --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-08.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-stretch property, condensed</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-stretch-pass-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-stretch-prop"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-prop-desc"> +<meta name="assert" content="The ‘font-stretch’ property selects a normal, condensed, or expanded face from a font family."> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/fail.woff) format("woff"); + font-stretch: normal; + } + @font-face { + font-family: "test"; + src: url(support/fonts/pass.woff) format("woff"); + font-stretch: condensed; + } + .test { + font-family: "test"; + font-size: 6em; + font-stretch: condensed; + } + +</style> + +<p>Test passes if the word PASS appears below.</p> +<section class="test"> + <p>P</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-09.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-09.html new file mode 100644 index 00000000000..0fcd04ea54b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-09.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-stretch property, extra-condensed</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-stretch-pass-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-stretch-prop"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-prop-desc"> +<meta name="assert" content="The ‘font-stretch’ property selects a normal, condensed, or expanded face from a font family."> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/fail.woff) format("woff"); + font-stretch: normal; + } + @font-face { + font-family: "test"; + src: url(support/fonts/pass.woff) format("woff"); + font-stretch: extra-condensed; + } + .test { + font-family: "test"; + font-size: 6em; + font-stretch: extra-condensed; + } + +</style> + +<p>Test passes if the word PASS appears below.</p> +<section class="test"> + <p>P</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-10.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-10.html new file mode 100644 index 00000000000..55a3fa5e007 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-10.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-stretch property, ultra-condensed</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-stretch-pass-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-stretch-prop"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-prop-desc"> +<meta name="assert" content="The ‘font-stretch’ property selects a normal, condensed, or expanded face from a font family."> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/fail.woff) format("woff"); + font-stretch: normal; + } + @font-face { + font-family: "test"; + src: url(support/fonts/pass.woff) format("woff"); + font-stretch: ultra-condensed; + } + .test { + font-family: "test"; + font-size: 6em; + font-stretch: ultra-condensed; + } + +</style> + +<p>Test passes if the word PASS appears below.</p> +<section class="test"> + <p>P</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-11.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-11.html new file mode 100644 index 00000000000..151a436c62e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-11.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-stretch property, mapping values</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-stretch-pass-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-stretch-prop"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-prop-desc>" +<meta name="assert" content="When a face does not exist for a given width, normal or condensed values map to a narrower face, otherwise a wider face."> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/fail.woff) format("woff"); + font-stretch: normal; + } + @font-face { + font-family: "test"; + src: url(support/fonts/pass.woff) format("woff"); + font-stretch: condensed; + } + .test { + font-family: "test"; + font-size: 6em; + font-stretch: ultra-condensed; + } + +</style> + +<p>Test passes if the word PASS appears below.</p> +<section class="test"> + <p>P</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-12.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-12.html new file mode 100644 index 00000000000..f3d0532b5e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-12.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-stretch property, mapping values</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-stretch-pass-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-stretch-prop"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-prop-desc>" +<meta name="assert" content="When a face does not exist for a given width, normal or condensed values map to a narrower face, otherwise a wider face."> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/pass.woff) format("woff"); + font-stretch: condensed; + } + @font-face { + font-family: "test"; + src: url(support/fonts/fail.woff) format("woff"); + font-stretch: normal; + } + .test { + font-family: "test"; + font-size: 6em; + font-stretch: semi-condensed; + } + +</style> +<!-- per Fig 17, where the narrower face is used 'otherwise' + for semi condensed, before the normal face gets examined --> +<p>Test passes if the word PASS appears below.</p> +<section class="test"> + <p>P</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-13.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-13.html new file mode 100644 index 00000000000..c4e169477d5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-13.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-stretch property, mapping values</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-stretch-pass-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-stretch-prop"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-prop-desc>" +<meta name="assert" content="When a face does not exist for a given width, normal or condensed values map to a narrower face, otherwise a wider face."> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/pass.woff) format("woff"); + font-stretch: normal; + } + @font-face { + font-family: "test"; + src: url(support/fonts/fail.woff) format("woff"); + font-stretch: condensed; + } + .test { + font-family: "test"; + font-size: 6em; + font-stretch: expanded; + } + +</style> + +<p>Test passes if the word PASS appears below.</p> +<section class="test"> + <p>P</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-14.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-14.html new file mode 100644 index 00000000000..51736a1fb76 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-14.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-stretch property, mapping values</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-stretch-pass-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-stretch-prop"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-prop-desc>" +<meta name="assert" content="When a face does not exist for a given width, normal or condensed values map to a narrower face, otherwise a wider face."> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/pass.woff) format("woff"); + font-stretch: expanded; + } + @font-face { + font-family: "test"; + src: url(support/fonts/fail.woff) format("woff"); + font-stretch: normal; + } + .test { + font-family: "test"; + font-size: 6em; + font-stretch: semi-expanded; + } + +</style> + +<p>Test passes if the word PASS appears below.</p> +<section class="test"> + <p>P</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-15.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-15.html new file mode 100644 index 00000000000..8607ac9cee8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-15.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-stretch property, mapping values</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-stretch-pass-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-stretch-prop"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-prop-desc>" +<meta name="assert" content="When a face does not exist for a given width, normal or condensed values map to a narrower face, otherwise a wider face."> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/pass.woff) format("woff"); + font-stretch: expanded; + } + @font-face { + font-family: "test"; + src: url(support/fonts/fail.woff) format("woff"); + font-stretch: condensed; + } + .test { + font-family: "test"; + font-size: 6em; + font-stretch: semi-expanded; + } + +</style> + +<p>Test passes if the word PASS appears below.</p> +<section class="test"> + <p>P</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-16.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-16.html new file mode 100644 index 00000000000..70f81f001f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-16.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-stretch property, mapping values</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-stretch-pass-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-stretch-prop"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-prop-desc>" +<meta name="assert" content="When a face does not exist for a given width, normal or condensed values map to a narrower face, otherwise a wider face."> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/pass.woff) format("woff"); + font-stretch: condensed; + } + @font-face { + font-family: "test"; + src: url(support/fonts/fail.woff) format("woff"); + font-stretch: expanded; + } + .test { + font-family: "test"; + font-size: 6em; + font-stretch: normal; + } + +</style> + +<p>Test passes if the word PASS appears below.</p> +<section class="test"> + <p>P</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-17.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-17.html new file mode 100644 index 00000000000..3938ced749a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-17.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-stretch property, mapping values</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-stretch-pass-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-stretch-prop"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-prop-desc>" +<meta name="assert" content="When a face does not exist for a given width, normal or condensed values map to a narrower face, otherwise a wider face."> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/pass.woff) format("woff"); + font-stretch: condensed; + } + @font-face { + font-family: "test"; + src: url(support/fonts/fail.woff) format("woff"); + font-stretch: expanded; + } + .test { + font-family: "test"; + font-size: 6em; + font-stretch: semi-condensed; + } + +</style> + +<p>Test passes if the word PASS appears below.</p> +<section class="test"> + <p>P</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-18.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-18.html new file mode 100644 index 00000000000..496c16d198d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-18.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-stretch property, mapping values</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-stretch-pass-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-stretch-prop"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-prop-desc>" +<meta name="assert" content="When a face does not exist for a given width, normal or condensed values map to a narrower face, otherwise a wider face."> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/pass.woff) format("woff"); + font-stretch: extra-condensed; + } + @font-face { + font-family: "test"; + src: url(support/fonts/fail.woff) format("woff"); + font-stretch: expanded; + } + .test { + font-family: "test"; + font-size: 6em; + font-stretch: condensed; + } + +</style> + +<p>Test passes if the word PASS appears below.</p> +<section class="test"> + <p>P</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-pass-ref.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-pass-ref.html new file mode 100644 index 00000000000..0bd11557a61 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-stretch-pass-ref.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: pass reference</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/pass.woff) format("woff"); + font-stretch: normal; + } + .test { + font-family: "test"; + font-size: 6em; + } + +</style> + +<p>Test passes if the word PASS appears below.</p> +<section class="test"> + <p>P</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-01-ref.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-01-ref.html new file mode 100644 index 00000000000..535518272a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-01-ref.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-synthesis: none disables fake bold</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/Lato-Medium.ttf); + } + .test { + font-family: "test"; + font-size: 3em; + } +</style> + +<p>Test passes if the two lines below are identical (the second line is <em>not bold</em>), and there is no red.</p> +<section class="test"> + <p>Filler text</p> + <p class="nosynth">Filler text</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-01.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-01.html new file mode 100644 index 00000000000..cf6d099e0dd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-01.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-synthesis: none disables fake bold</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-synthesis-01-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-synthesis-prop"> +<meta name="assert" content=" If ‘weight’ is not specified, user agents must not synthesize bold faces"> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/Lato-Medium.ttf); + } + @supports not (font-synthesis: none) { + .test {color: red;} + } + .test { + font-family: "test"; + font-size: 3em; + } + .nosynth { + font-weight: bold; + font-synthesis: none; + } +</style> + +<p>Test passes if the two lines below are identical (the second line is <em>not bold</em>), and there is no red.</p> +<section class="test"> + <p>Filler text</p> + <p class="nosynth">Filler text</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-02-ref.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-02-ref.html new file mode 100644 index 00000000000..5f80bcdf5a5 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-02-ref.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-synthesis: style disables fake bold</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/Lato-Medium.ttf); + } + .test { + font-family: "test"; + font-size: 3em; + } +</style> + +<p>Test passes if the two lines below are identical (the second line is <em>not bold</em>), and there is no red.</p> +<section class="test"> + <p>Filler text</p> + <p class="nosynth">Filler text</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-02.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-02.html new file mode 100644 index 00000000000..59243c4cb7a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-02.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-synthesis: style disables fake bold</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-synthesis-02-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-synthesis-prop"> +<meta name="assert" content=" If ‘weight’ is not specified, user agents must not synthesize bold faces"> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/Lato-Medium.ttf); + } + @supports not (font-synthesis: style) { + .test {color: red;} + } + .test { + font-family: "test"; + font-size: 3em; + } + .nosynth { + font-weight: bold; + font-synthesis: style; + } +</style> + +<p>Test passes if the two lines below are identical (the second line is <em>not bold</em>), and there is no red.</p> +<section class="test"> + <p>Filler text</p> + <p class="nosynth">Filler text</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-03-ref.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-03-ref.html new file mode 100644 index 00000000000..8f36b311177 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-03-ref.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-synthesis: none disables fake italic/oblique</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/Lato-Medium.ttf); + } + .test { + font-family: "test"; + font-size: 3em; + } +</style> + +<p>Test passes if the two lines below are identical (the second line is <em>not obliqued</em>), and there is no red.</p> +<section class="test"> + <p>Filler text</p> + <p class="nosynth">Filler text</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-03.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-03.html new file mode 100644 index 00000000000..53cac8ee401 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-03.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-synthesis: none disables fake italic/oblique</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-synthesis-03-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-synthesis-prop"> +<meta name="assert" content="if ‘style’ is not specified user agents must not synthesize italic faces"> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/Lato-Medium.ttf); + } + @supports not (font-synthesis: none) { + .test {color: red;} + } + .test { + font-family: "test"; + font-size: 3em; + } + .nosynth { + font-style: italic; + font-synthesis: none; + } +</style> + +<p>Test passes if the two lines below are identical (the second line is <em>not obliqued</em>), and there is no red.</p> +<section class="test"> + <p>Filler text</p> + <p class="nosynth">Filler text</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-04-ref.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-04-ref.html new file mode 100644 index 00000000000..f3b65481f22 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-04-ref.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-synthesis: bold disables fake italic/oblique</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/Lato-Medium.ttf); + } + .test { + font-family: "test"; + font-size: 3em; + } +</style> + +<p>Test passes if the two lines below are identical (the second line is <em>not obliqued</em>), and there is no red.</p> +<section class="test"> + <p>Filler text</p> + <p class="nosynth">Filler text</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-04.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-04.html new file mode 100644 index 00000000000..90817154692 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-04.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-synthesis: bold disables fake italic/oblique</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-synthesis-04-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-synthesis-prop"> +<meta name="assert" content="if ‘style’ is not specified user agents must not synthesize italic faces"> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/Lato-Medium.ttf); + } + @supports not (font-synthesis: weight) { + .test {color: red;} + } + .test { + font-family: "test"; + font-size: 3em; + } + .nosynth { + font-style: italic; + font-synthesis: weight; + } +</style> + +<p>Test passes if the two lines below are identical (the second line is <em>not obliqued</em>), and there is no red.</p> +<section class="test"> + <p>Filler text</p> + <p class="nosynth">Filler text</p> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-05-ref.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-05-ref.html new file mode 100644 index 00000000000..801889d1560 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-05-ref.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-synthesis: initial value</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/Lato-Medium.ttf); + } + .test { + font-family: "test"; + font-size: 3em; + font-synthesis: weight style; + color: green; + } +</style> + +<p>Test passes if the text below is green, not red.</p> +<section class="test"> + <p>Filler text</p> + <!-- Synthesis is allowed, but not required --> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-05.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-05.html new file mode 100644 index 00000000000..bdbc22f9cfc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-synthesis-05.html @@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-synthesis: initial value</title> +<link rel="author" title="Chris Lilley" href="chris@w3.org"> +<link rel="match" href="font-synthesis-03-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-synthesis-prop"> +<meta name="assert" content="This property controls whether user agents are allowed to synthesize bold or oblique font faces"> +<style> + @font-face { + font-family: "test"; + src: url(support/fonts/Lato-Medium.ttf); + } + @supports not (font-synthesis: weight style) { + .test p {color: red;} + } + .test { + font-family: "test"; + font-size: 3em; + font-synthesis: weight style; + color: green; + } +</style> + +<p>Test passes if the text below is green, not red.</p> +<section class="test"> + <p>Filler text</p> + <!-- Synthesis is allowed, but not required --> +</section> diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-variant-position-02.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-variant-position-02.html index 9301023ccfc..842c726dbff 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts-3/font-variant-position-02.html +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-variant-position-02.html @@ -5,7 +5,6 @@ <link rel="author" title="Chris Lilley" href="chris@w3.org"> <link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-variant-position-prop"> <link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-feature-settings-prop"> -<link rel="match" href="font-variant-position-02-ref.html"> <meta name="assert" content="Enables display of subscript variants (OpenType feature: subs)."> <style> @font-face { @@ -23,18 +22,13 @@ .low { font-feature-settings: "subs" on, "sups" off; } -.foo { - color: #100; -} -.bar { - color: #001; -} </style> <body> -<p>Test passes if the three lines below are identical, with one checkmark (✓) followed by one cross (✗)</p> -<!-- Identical? If the UA is allowed to simulate subscripts and superscripts then the first line will use smaller glyphs than the second and third. Maybe "similar" and point out size doesn't matter on this test? --> +<p>Test passes if the second and third lines below are identical, with two checkmarks (✓) followed by one cross (✗); and + also, if the first line is <em>either</em> identical to the other two, <em>or</em> has one checkmark followed by two <b>subscript</b> crosses. + If the first line has a checkmark followed by two normally sized crosses, the test fails. </p> <section class="test"> - <p class="high"><span class="foo">H</span><span class="bar">I</span></p> - <p class="high"><span class="foo">H</span><span class="bar">I</span></p> - <p class="ref">AB</p> + <p>A<span class="high">HI</span></p> + <p>A<span class="low">HI</span></p> + <p class="ref">AAB</p> </section>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/font-variant-position-03.html b/tests/wpt/web-platform-tests/css/css-fonts-3/font-variant-position-03.html index 02ea0875e74..f0fc871f05b 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts-3/font-variant-position-03.html +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/font-variant-position-03.html @@ -5,7 +5,6 @@ <link rel="author" title="Chris Lilley" href="chris@w3.org"> <link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-variant-position-prop"> <link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-feature-settings-prop"> -<link rel="match" href="font-variant-position-03-ref.html"> <meta name="assert" content="Enables display of subscript variants (OpenType feature: subs)."> <style> @font-face { @@ -23,19 +22,14 @@ .low { font-feature-settings: "subs" off, "sups" on; } -.foo { - color: #100; -} -.bar { - color: #001; -} </style> <body> -<p>Test passes if the three lines below are identical, with one cross (✗) followed by one checkmark (✓) </p> -<!-- Identical? If the UA is allowed to simulate subscripts and superscripts then the first line will use smaller glyphs than the second and third. Maybe "similar" and point out size doesn't matter on this test? --> +<p>Test passes if the second and third lines below are identical, with two crosses (✗) followed by one checkmark (✓); and + also, if the first line is <em>either</em> identical to the other two, <em>or</em> has one cross followed by two <b>superscript</b> crosses. + If the first line has three normally sized crosses, the test fails.</p> <section class="test"> - <p class="high"><span class="foo">H</span><span class="bar">I</span></p> - <p class="high"><span class="foo">H</span><span class="bar">I</span></p> - <p class="ref">BA</p> + <p>B<span class="high">HI</span></p> + <p>B<span class="low">HI</span></p> + <p class="ref">BBA</p> </section>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/support/fonts/Exo-DemiBold.otf b/tests/wpt/web-platform-tests/css/css-fonts-3/support/fonts/Exo-DemiBold.otf Binary files differnew file mode 100644 index 00000000000..b83a13a43f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/support/fonts/Exo-DemiBold.otf diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/support/fonts/Exo2-SemiBold.otf b/tests/wpt/web-platform-tests/css/css-fonts-3/support/fonts/Exo2-SemiBold.otf Binary files differnew file mode 100644 index 00000000000..76b49cdc334 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/support/fonts/Exo2-SemiBold.otf diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/support/fonts/Exo2-SemiBoldCondensed.otf b/tests/wpt/web-platform-tests/css/css-fonts-3/support/fonts/Exo2-SemiBoldCondensed.otf Binary files differnew file mode 100644 index 00000000000..832e1b44f7f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/support/fonts/Exo2-SemiBoldCondensed.otf diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/support/fonts/Exo2-SemiBoldExpanded.otf b/tests/wpt/web-platform-tests/css/css-fonts-3/support/fonts/Exo2-SemiBoldExpanded.otf Binary files differnew file mode 100644 index 00000000000..f764e132a46 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/support/fonts/Exo2-SemiBoldExpanded.otf diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/support/fonts/fail.woff b/tests/wpt/web-platform-tests/css/css-fonts-3/support/fonts/fail.woff Binary files differnew file mode 100644 index 00000000000..33487cdbb4f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/support/fonts/fail.woff diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/support/fonts/pass.woff b/tests/wpt/web-platform-tests/css/css-fonts-3/support/fonts/pass.woff Binary files differnew file mode 100644 index 00000000000..839bb20b12f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/support/fonts/pass.woff diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/test_font_family_parsing.html b/tests/wpt/web-platform-tests/css/css-fonts-3/test_font_family_parsing.html index fc7008d4350..d56a7f712d9 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts-3/test_font_family_parsing.html +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/test_font_family_parsing.html @@ -133,21 +133,18 @@ var testFontFamilyLists = [ { namelist: "normal simple", single: true }, { namelist: "caption", single: true }, // these are keywords for the 'font' property but only when in the first position { namelist: "icon", single: true }, - { namelist: "menu", single: true } - + { namelist: "menu", single: true }, + + /* Unset */ + { namelist: "unset", invalid: true, fontonly: true, single: true }, + { namelist: "unset, simple", invalid: true }, + { namelist: "simple, unset", invalid: true }, + { namelist: "simple, unset bongo" }, + { namelist: "simple, bongo unset" }, + { namelist: "simple unset", single: true }, + { namelist: "unset simple", single: true }, ]; -if (SpecialPowers.getBoolPref("layout.css.unset-value.enabled")) { - testFontFamilyLists.push( - { namelist: "unset", invalid: true, fontonly: true, single: true }, - { namelist: "unset, simple", invalid: true }, - { namelist: "simple, unset", invalid: true }, - { namelist: "simple, unset bongo" }, - { namelist: "simple, bongo unset" }, - { namelist: "simple unset", single: true }, - { namelist: "unset simple", single: true }); -} - var gTest = 0; /* strip out just values */ diff --git a/tests/wpt/web-platform-tests/css/css-fonts-3/test_font_feature_values_parsing.html b/tests/wpt/web-platform-tests/css/css-fonts-3/test_font_feature_values_parsing.html index c67e754cd60..f5c03c1604a 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts-3/test_font_feature_values_parsing.html +++ b/tests/wpt/web-platform-tests/css/css-fonts-3/test_font_feature_values_parsing.html @@ -69,7 +69,6 @@ var testrules = [ { rule: makeRule("bongo", "@styleset { abc 1 2 3 }"), serializationNoValueDefn: true }, { rule: makeRule("bongo", "@styleset { abc:, 1 2 3 }"), serializationNoValueDefn: true }, { rule: makeRule("bongo", "@styleset { abc:; 1 2 3 }"), serializationNoValueDefn: true }, - { rule: makeRule("bongo", "@styleset { abc:; 1 2 3 }"), serializationNoValueDefn: true }, { rule: makeRule("bongo", "@styleset { abc: 1 2 3a }"), serializationNoValueDefn: true }, { rule: makeRule("bongo", "@styleset { abc: 1 2 3, def: 1; }"), serializationNoValueDefn: true }, { rule: makeRule("bongo", "@blah @styleset { abc: 1 2 3; }"), serializationNoValueDefn: true }, @@ -335,10 +334,6 @@ function testOneRule(testrule) { } function testFontFeatureValuesRuleParsing() { - // Gecko-specific check - if pref not set, skip these tests - if (window.SpecialPowers && !window.SpecialPowers.getBoolPref("layout.css.font-features.enabled")) { - return; - } var i; for (i = 0; i < testrules.length; i++) { var testrule = testrules[i]; diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/absolute-positioning-definite-sizes-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/absolute-positioning-definite-sizes-001.html index 1249a142638..e522fc48802 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/absolute-positioning-definite-sizes-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/absolute-positioning-definite-sizes-001.html @@ -33,7 +33,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/absolute-positioning-grid-container-containing-block-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/absolute-positioning-grid-container-containing-block-001.html index 65a358e10a6..cf9407e6392 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/absolute-positioning-grid-container-containing-block-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/absolute-positioning-grid-container-containing-block-001.html @@ -112,7 +112,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div id="log"></div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/absolute-positioning-grid-container-parent-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/absolute-positioning-grid-container-parent-001.html index 3ea36c7dab9..15ed632860a 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/absolute-positioning-grid-container-parent-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/absolute-positioning-grid-container-parent-001.html @@ -34,7 +34,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.container')"> <div id="log"></div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-content-alignment-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-content-alignment-001.html index d92c9b7c091..737efcb6497 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-content-alignment-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-content-alignment-001.html @@ -34,7 +34,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-content-alignment-rtl-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-content-alignment-rtl-001.html index 748cb6f40b4..e0aa177e0d8 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-content-alignment-rtl-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-content-alignment-rtl-001.html @@ -34,7 +34,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-gaps-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-gaps-001.html index 5869bfbea4f..41d3ffba27a 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-gaps-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-gaps-001.html @@ -36,7 +36,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-gaps-rtl-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-gaps-rtl-001.html index e6fe7c27361..17a2b3df970 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-gaps-rtl-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-gaps-rtl-001.html @@ -36,7 +36,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-implicit-grid-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-implicit-grid-001.html index 063da56fe55..882ebdca307 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-implicit-grid-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-implicit-grid-001.html @@ -30,7 +30,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-implicit-grid-line-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-implicit-grid-line-001.html index 908ea39ef5d..35199838744 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-implicit-grid-line-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-implicit-grid-line-001.html @@ -51,7 +51,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-padding-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-padding-001.html index 5a7244c78a1..2ba5cd23e04 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-padding-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-padding-001.html @@ -38,7 +38,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-unknown-named-grid-line-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-unknown-named-grid-line-001.html index 6aee082f674..5cde2ec862a 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-unknown-named-grid-line-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-unknown-named-grid-line-001.html @@ -44,7 +44,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-within-grid-implicit-track-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-within-grid-implicit-track-001.html index 1c82feb04f7..078d51b29c5 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-within-grid-implicit-track-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-positioned-items-within-grid-implicit-track-001.html @@ -40,7 +40,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-sizing-positioned-items-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-sizing-positioned-items-001.html index 4bd43cc9b23..390630c1945 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-sizing-positioned-items-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/grid-sizing-positioned-items-001.html @@ -55,7 +55,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/positioned-grid-items-should-not-create-implicit-tracks-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/positioned-grid-items-should-not-create-implicit-tracks-001.html index 25881a48e50..f9935831b65 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/positioned-grid-items-should-not-create-implicit-tracks-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/positioned-grid-items-should-not-create-implicit-tracks-001.html @@ -29,7 +29,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/positioned-grid-items-should-not-take-up-space-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/positioned-grid-items-should-not-take-up-space-001.html index c7983671cc9..75ef482fcfb 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/abspos/positioned-grid-items-should-not-take-up-space-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/abspos/positioned-grid-items-should-not-take-up-space-001.html @@ -33,7 +33,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-001.html index 71e1ee8425d..f8da0b8c528 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-001.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-002.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-002.html index 01f48ccde75..d04de07cb55 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-002.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-002.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-003.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-003.html index d3c5ae10614..99bc2f87f98 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-003.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-003.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-004.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-004.html index 1f5ca8d19b4..da38a8589e8 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-004.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-004.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-005.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-005.html index 07b0aca7376..c91f470a99f 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-005.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-005.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-006.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-006.html index f0f4d5d4353..7d6e3bbdb23 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-006.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-006.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html index 5dd70bd1f61..4bd585b8aac 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-008.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-008.html index f1b22c56353..613f6385fde 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-008.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-008.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html index fb0041ce71f..fd0bc524db8 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-010.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-010.html index 1e68845baaa..e776bb1dbe4 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-010.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-010.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-011.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-011.html index e38852090ce..c5bbd894124 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-011.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-011.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-012.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-012.html index 3ab4977a4d9..767049a2ef8 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-012.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-012.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-013.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-013.html index bd6ce3f94dd..0930bdccbec 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-013.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-013.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-014.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-014.html index ab565666b5c..fbc529ad62d 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-014.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-014.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-015.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-015.html index 844713a7285..40869f8ae80 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-015.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-015.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-016.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-016.html index dd3b4bee1dd..e003509618f 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-016.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-016.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html index 5b2c20e8339..74da9fe7497 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-018.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-018.html index 77711aaad38..05c579ac818 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-018.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-018.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-019.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-019.html index 9d0bbc936ba..ee9b581a7db 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-019.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-019.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-020.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-020.html index 86dc27130d1..e42a46b1296 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-020.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-020.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-021.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-021.html index 1c92223bff6..d4cb7259daa 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-021.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-021.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-022.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-022.html index 94a634b9ad4..6d8c204d1a5 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-022.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-022.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-023.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-023.html index 3476f12200c..4bb3796abc8 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-023.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-023.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-024.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-024.html index 92db0024543..8aaef60f87e 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-024.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-024.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html index 997fa855415..0ef21c9afe5 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-026.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-026.html index 9d18be6f264..56c7e3f07d9 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-026.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-026.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html index 78b9fbd72d6..8f8797ee00b 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-028.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-028.html index 1426cc41b06..38021f95300 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-028.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-028.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-029.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-029.html index ca9f47a5846..cfdf51d804c 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-029.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-029.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-030.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-030.html index 103b04d76fa..1fb01728e0f 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-030.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-030.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-031.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-031.html index 9c85e5a9035..9cdaabbfdd7 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-031.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-031.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-032.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-032.html index 093c0f966e0..c4941dd6f1b 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-032.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-032.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-033.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-033.html index 1cf535803bb..fb89cc1c3bb 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-033.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-033.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-034.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-034.html index 87ec1ae07d4..3932ceb6b7e 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-034.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-034.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html index 1968522fecf..f0c4394f7ba 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-036.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-036.html index a79740308a3..694cb0598a8 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-036.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-036.html @@ -25,7 +25,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <script src="../support/style-change.js"></script> <script> function runTest() { diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-fit-content-tracks-dont-stretch-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-fit-content-tracks-dont-stretch-001.html index 367386c2538..8aafe35e4a0 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-fit-content-tracks-dont-stretch-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-fit-content-tracks-dont-stretch-001.html @@ -37,7 +37,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onLoad="checkLayout('.grid');"> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-001.html index e700587bdfe..9a2cea509c6 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-001.html @@ -48,7 +48,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="10" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-002.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-002.html index 30413e0bba1..6c7b2dc84c2 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-002.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-002.html @@ -52,7 +52,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="90" data-expected-height="10" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-003.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-003.html index 63ab28e75b0..a39203715a4 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-003.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-003.html @@ -53,7 +53,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="10" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-004.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-004.html index 6566e9c1f47..1661d07c182 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-004.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-004.html @@ -52,7 +52,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="10" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-005.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-005.html index 16890320d8c..93b217f3c2d 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-005.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-005.html @@ -49,7 +49,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="60" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-006.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-006.html index c090ef84d49..683ab1be321 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-006.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-006.html @@ -53,7 +53,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="90" data-expected-height="60" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-007.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-007.html index 8a5161ceb8a..33dd6aacf5e 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-007.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-007.html @@ -54,7 +54,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="60" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-008.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-008.html index d103a448ddd..7f47b385f3e 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-008.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-008.html @@ -53,7 +53,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="100" data-expected-height="60" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-009.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-009.html index f971ddbf33e..2f8448e5b67 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-009.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-009.html @@ -48,7 +48,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="125" data-expected-height="20" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-010.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-010.html index 1541a27a2c3..5c4adf36371 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-010.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-010.html @@ -52,7 +52,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="110" data-expected-height="20" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-011.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-011.html index dc2738b6b62..4ac84493c9f 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-011.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-011.html @@ -53,7 +53,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="120" data-expected-height="20" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-012.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-012.html index 1c04de18e95..91a13a04dc1 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-012.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-012.html @@ -52,7 +52,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="120" data-expected-height="20" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-013.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-013.html index d8acd61dd5f..cdfdd270c00 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-013.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-013.html @@ -49,7 +49,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="125" data-expected-height="80" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-014.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-014.html index 0b048089c2d..694aaaf16d7 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-014.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-014.html @@ -53,7 +53,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="110" data-expected-height="80" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-015.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-015.html index dc366eb106e..64f6decdda4 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-015.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-015.html @@ -54,7 +54,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="120" data-expected-height="80" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-016.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-016.html index 27dab09be52..6f92db1dfa3 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-016.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-016.html @@ -52,7 +52,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="120" data-expected-height="80" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-001.html index 5c057624d98..69c17e67752 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-001.html @@ -49,7 +49,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="10" data-expected-height="100" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-002.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-002.html index abcf06e3338..e4a109c1a45 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-002.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-002.html @@ -53,7 +53,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="10" data-expected-height="90" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-003.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-003.html index ca185bdc591..54a68983373 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-003.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-003.html @@ -54,7 +54,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="10" data-expected-height="100" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-004.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-004.html index bc0b8d6ca15..14121afaf93 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-004.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-004.html @@ -53,7 +53,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="10" data-expected-height="100" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-005.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-005.html index b155f5c7ded..a274f5143d4 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-005.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-005.html @@ -50,7 +50,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="60" data-expected-height="100" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-006.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-006.html index 23ee97951aa..d44d724c31e 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-006.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-006.html @@ -54,7 +54,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="60" data-expected-height="90" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-007.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-007.html index 5496e781b50..03b93b6bf21 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-007.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-007.html @@ -55,7 +55,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="60" data-expected-height="100" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-008.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-008.html index 556ca0f1531..04ce3e739cc 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-008.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-008.html @@ -54,7 +54,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="60" data-expected-height="100" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-009.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-009.html index 75433ad48d8..c25eb368eca 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-009.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-009.html @@ -49,7 +49,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="125" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-010.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-010.html index 7ed26cfccd4..b7ad29fc409 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-010.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-010.html @@ -53,7 +53,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="110" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-011.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-011.html index 701d9a803c5..ef6a9dc0dbc 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-011.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-011.html @@ -54,7 +54,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="120" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-012.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-012.html index 323ad98a4c7..06575bdef95 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-012.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-012.html @@ -53,7 +53,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="20" data-expected-height="120" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-013.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-013.html index dde2a18e255..64c6c533d2f 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-013.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-013.html @@ -50,7 +50,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="80" data-expected-height="125" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-014.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-014.html index 2a80035067c..cc2520da92c 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-014.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-014.html @@ -54,7 +54,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="80" data-expected-height="110" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-015.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-015.html index 34e501f9752..1382c630c84 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-015.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-015.html @@ -55,7 +55,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="80" data-expected-height="120" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-016.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-016.html index 5cc5a0290bf..3a82292586d 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-016.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-016.html @@ -53,7 +53,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="0" data-offset-y="0" data-expected-width="80" data-expected-height="120" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-001.html index 28a78306aac..269d48a1ae4 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-001.html @@ -49,7 +49,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="240" data-offset-y="0" data-expected-width="10" data-expected-height="100" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-002.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-002.html index 297b5ff15cd..af1a8539189 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-002.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-002.html @@ -53,7 +53,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="240" data-offset-y="0" data-expected-width="10" data-expected-height="90" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-003.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-003.html index e958ec266c0..9707eeff96f 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-003.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-003.html @@ -54,7 +54,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="240" data-offset-y="0" data-expected-width="10" data-expected-height="100" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-004.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-004.html index ef2a7e6c537..906641a1eaa 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-004.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-004.html @@ -53,7 +53,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="240" data-offset-y="0" data-expected-width="10" data-expected-height="100" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-005.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-005.html index c512afe5679..248c5215856 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-005.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-005.html @@ -50,7 +50,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="190" data-offset-y="0" data-expected-width="60" data-expected-height="100" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-006.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-006.html index 584bfb9860a..45b20c825d5 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-006.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-006.html @@ -54,7 +54,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="190" data-offset-y="0" data-expected-width="60" data-expected-height="90" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-007.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-007.html index 257de49c97b..6d0dd07c25b 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-007.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-007.html @@ -55,7 +55,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="190" data-offset-y="0" data-expected-width="60" data-expected-height="100" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-008.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-008.html index 4e9c264f5b6..043f83f61aa 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-008.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-008.html @@ -54,7 +54,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="190" data-offset-y="0" data-expected-width="60" data-expected-height="100" class="firstRowFirstColumn">X XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-009.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-009.html index cb66f6162eb..96bebc75f1e 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-009.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-009.html @@ -49,7 +49,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="230" data-offset-y="0" data-expected-width="20" data-expected-height="125" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-010.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-010.html index b551d3e6147..1afcfc41132 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-010.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-010.html @@ -53,7 +53,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="230" data-offset-y="0" data-expected-width="20" data-expected-height="110" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-011.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-011.html index a56e83a2e72..736ff947f4f 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-011.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-011.html @@ -54,7 +54,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="230" data-offset-y="0" data-expected-width="20" data-expected-height="120" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-012.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-012.html index 91c8ce68489..c34b435b62a 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-012.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-012.html @@ -53,7 +53,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="230" data-offset-y="0" data-expected-width="20" data-expected-height="120" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-013.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-013.html index 20eafb785b7..6e8d3243217 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-013.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-013.html @@ -50,7 +50,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="170" data-offset-y="0" data-expected-width="80" data-expected-height="125" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-014.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-014.html index 61038b22bf0..4a72112655c 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-014.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-014.html @@ -54,7 +54,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="170" data-offset-y="0" data-expected-width="80" data-expected-height="110" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-015.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-015.html index 3cadf7f55de..d061174ea83 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-015.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-015.html @@ -55,7 +55,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="170" data-offset-y="0" data-expected-width="80" data-expected-height="120" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-016.html b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-016.html index 03d6f7d78a4..623c026539a 100644 --- a/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-016.html +++ b/tests/wpt/web-platform-tests/css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-016.html @@ -54,7 +54,7 @@ </style> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="../support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <body onload="checkLayout('.grid')"> <div class="grid"> <div data-offset-x="170" data-offset-y="0" data-expected-width="80" data-expected-height="120" class="firstRowFirstColumn">XX X</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/grid-definition/grid-change-fit-content-argument-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/grid-definition/grid-change-fit-content-argument-001.html new file mode 100644 index 00000000000..9dfb5559651 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid-1/grid-definition/grid-change-fit-content-argument-001.html @@ -0,0 +1,72 @@ +<!DOCTYPE html> +<html lang=en> +<meta charset="utf-8"> +<title>CSS Grid Layout Test: Change fit-content() argument</title> +<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-grid-1/#track-sizing"> +<meta name="assert" content="This test checks that grid-template-{rows|columns} with fit-content() tracks recomputes the tracks when the fit-content() argument is modified."> +<meta name="flags" content="ahem"> +<link rel="stylesheet" href="../support/grid.css"> +<style> +.grid { + width: fit-content; + position: relative; + justify-content: start; + align-content: start; + font: 25px/1 Ahem; +} + +.verticalLR { + writing-mode: vertical-lr; +} +</style> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/check-layout-th.js">"></script> +<script> +function setGridTemplate(id, gridTemplateRows, gridTemplateColumns) +{ + var gridElement = document.getElementById(id); + gridElement.style.gridTemplateRows = gridTemplateRows; + gridElement.style.gridTemplateColumns = gridTemplateColumns; +} + +function testGridItemDefinitions(gridItemData) +{ + var item = document.getElementById(gridItemData.id); + item.setAttribute("data-expected-width", gridItemData.width); + item.setAttribute("data-expected-height", gridItemData.height); + item.setAttribute("data-offset-x", gridItemData.x); + item.setAttribute("data-offset-y", gridItemData.y); + + checkLayout(".grid", false); +} + +function testChangingGridDefinitions() +{ + // Test changing the argument of fit-content() tracks. + setGridTemplate("grid1", "none", "fit-content(100px)"); + testGridItemDefinitions({"id": "item1", "width": "100", "height": "100", "x": "0", "y": "0" }); + + setGridTemplate("grid1", "none", "fit-content(150px)"); + testGridItemDefinitions({"id": "item1", "width": "150", "height": "75", "x": "0", "y": "0" }); + + setGridTemplate("grid2", "fit-content(100px)", "none"); + testGridItemDefinitions({"id": "item2", "width": "100", "height": "100", "x": "0", "y": "0" }); + + setGridTemplate("grid2", "fit-content(150px)", "none"); + testGridItemDefinitions({"id": "item2", "width": "75", "height": "150", "x": "0", "y": "0" }); + + done(); +} + +window.addEventListener("load", testChangingGridDefinitions, false); +</script> + +<div id="grid1" class="grid"> + <div id="item1" class="autoRowAutoColumn">XXXX XXX XX X X</div> +</div> + +<div id="grid2" class="grid"> + <div id="item2" class="autoRowAutoColumn verticalLR">XXXX XXX XX X X</div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/grid-definition/grid-template-columns-fit-content-001-ref.html b/tests/wpt/web-platform-tests/css/css-grid-1/grid-definition/grid-template-columns-fit-content-001-ref.html new file mode 100644 index 00000000000..22a293990f6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid-1/grid-definition/grid-template-columns-fit-content-001-ref.html @@ -0,0 +1,351 @@ +<!DOCTYPE html> +<html lang=en> +<meta charset="utf-8"> +<title>CSS Grid Layout Test: grid-template-columns fit-content() reference file</title> +<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> +<link rel="stylesheet" href="../support/grid.css"> +<meta name="flags" content="ahem"> +<style> +.grid { + justify-content: start; + width: 100px; + position: relative; + padding-top: 10px; + margin-bottom: 5px; + grid-column-gap: 5px; +} + +.fc0 { grid-template-columns: minmax(auto, 0px);} +.fc40 { grid-template-columns: minmax(auto, 40px); } +.fc80 { grid-template-columns: minmax(auto, 80px); } +.fc110 { grid-template-columns: auto; } + +.fc0x2 { grid-template-columns: repeat(2, minmax(auto, 0px));} +.fc40x2 { grid-template-columns: repeat(2, minmax(auto, 40px)); } +.fc80x2 { grid-template-columns: repeat(2, minmax(auto, 80px)); } +.fc110x2 { grid-template-columns: auto auto; } + +.fc0p { grid-template-columns: minmax(auto, 0%); } +.fc30p { grid-template-columns: minmax(auto, 30%); } +.fc90p { grid-template-columns: minmax(auto, 90%); } +.fc110p { grid-template-columns: auto; } + +.fc0px2 { grid-template-columns: repeat(2, minmax(auto, 0%)); } +.fc30px2 { grid-template-columns: repeat(2, minmax(auto, 30%)); } +.fc90px2 { grid-template-columns: repeat(2, minmax(auto, 90%)); } +.fc110px2 { grid-template-columns: auto auto; } + +.item { + font: 10px/1 Ahem; + background: cyan; +} + +.spanningItem { + font: 10px/1 Ahem; + grid-column: 1 / -1; + grid-row: 2; + background: salmon; +} + +.test { + position: absolute; + left: 0; right: 0; top: 0; + height: 5px; + background: purple; +} +.test:nth-child(2n) { background: orange; } + +.floatLeft { + float: left; + width: 190px; +} + +h3 { font-size: 1em; } +</style> + +<p>The test passes if it has the same output than the reference.</p> + +<div class="floatLeft"> + <h3>Only fit-content() and with fixed size tracks.</h3> + <div class="grid fc0"> + <div class="item">XXX</div> + <div class="test autoRowFirstColumn"></div> + </div> + + <div class="grid fc0x2"> + <div class="item">XXX</div> + <div class="spanningItem">XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid fc40"> + <div class="item">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: auto auto;"> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: minmax(auto, 40px) auto;"> + <div class="item">XXX XXX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid fc80"> + <div class="item">XXX XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + </div> + + <div class="grid fc80x2"> + <div class="spanningItem">XXX XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: auto minmax(auto, 80px)"> + <div class="item autoRowSecondColumn">XXX XXX XXX</div> + <div class="spanningItem">XXX XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: minmax(auto, 20px) 50%;"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: minmax(10px, 40px) minmax(auto, 40px);"> + <div class="item">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: auto minmax(10%, 200px);"> + <div class="item autoRowSecondColumn">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + +</div> + +<div class="floatLeft"> + <h3>fit-content() with other content-sized tracks.</h3> + <div class="grid" style="grid-template-columns: minmax(auto, 40px) max-content;"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: minmax(auto, 40px) max-content;"> + <div class="item">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: minmax(auto, 40px) max-content;"> + <div class="item autoRowSecondColumn">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: min-content minmax(auto, 40px);"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: min-content minmax(auto, 40px);"> + <div class="item">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: min-content minmax(auto, 40px);"> + <div class="item autoRowSecondColumn">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: minmax(auto, 30px) min-content max-content"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + <div class="test autoRowThirdColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: min-content minmax(auto, 30px) max-content"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + <div class="test autoRowThirdColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: min-content max-content minmax(auto, 30px)"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + <div class="test autoRowThirdColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: minmax(auto, 30px) min-content max-content"> + <div class="item" style="grid-column: 1">XXX XX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + <div class="test autoRowThirdColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: min-content minmax(auto, 30px) max-content"> + <div class="item" style="grid-column: 1">XXX XX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + <div class="test autoRowThirdColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: min-content max-content minmax(auto, 30px)"> + <div class="item" style="grid-column: 2">XXX XX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + <div class="test autoRowThirdColumn"></div> + </div> +</div> + +<div class="floatLeft"> + <h3>fit-content() with percentage arguments.</h3> + <div class="grid fc0p"> + <div class="item">XXX</div> + <div class="test autoRowFirstColumn"></div> + </div> + + <div class="grid fc0px2"> + <div class="item">XXX</div> + <div class="spanningItem">XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid fc30p"> + <div class="item">XX XX</div> + <div class="test autoRowFirstColumn"></div> + </div> + + <div class="grid fc30px2"> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid fc30px2"> + <div class="item autoRowSecondColumn">X X X</div> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid fc90p"> + <div class="item">XXX XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + </div> + + <div class="grid fc90px2"> + <div class="spanningItem">XXX XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: auto minmax(auto, 90%)"> + <div class="item autoRowSecondColumn">XXX XXX XXX</div> + <div class="spanningItem">XXX XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> +</div> + +<div class="floatLeft"> + <h3>max-content < fit-content() argument.</h3> + + <div class="grid fc110"> + <div class="item">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + </div> + + <div class="grid fc110x2"> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid fc110x2"> + <div class="item">XXX XXX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: auto auto;"> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: auto auto;"> + <div class="item autoRowSecondColumn">XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: max-content auto;"> + <div class="spanningItem" style="grid-row: 1;">XX XX XX XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: auto min-content;"> + <div class="spanningItem" style="grid-row: 1;">XX XX XX XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: max-content auto max-content;"> + <div class="spanningItem" style="grid-row: 1;">XX XX XX XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + <div class="test autoRowThirdColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: min-content auto min-content;"> + <div class="spanningItem" style="grid-row: 1;">XX XX XX XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + <div class="test autoRowThirdColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: auto auto auto;"> + <div class="spanningItem" style="grid-row: 1;">XX XX XX XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + <div class="test autoRowThirdColumn"></div> + </div> + +</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/grid-definition/grid-template-columns-fit-content-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/grid-definition/grid-template-columns-fit-content-001.html new file mode 100644 index 00000000000..808b91c32b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid-1/grid-definition/grid-template-columns-fit-content-001.html @@ -0,0 +1,355 @@ +<!DOCTYPE html> +<html lang=en> +<meta charset="utf-8"> +<title>CSS Grid Layout Test: grid-template-columns fit-content()</title> +<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-grid-1/#track-sizing"> +<link rel="match" href="grid-template-columns-fit-content-001-ref.html"> +<meta name="assert" content="This test checks that 'fit-content()' works as expected in grid-template-columns, i.e., it's similar to 'auto' ('minmax(auto, max-content)') except that the growth limit is clamped at the argument of 'fit-content' (if greater than the 'auto' minimum)."> +<meta name="flags" content="ahem"> +<link rel="stylesheet" href="../support/grid.css"> +<style> +.grid { + justify-content: start; + width: 100px; + position: relative; + padding-top: 10px; + margin-bottom: 5px; + grid-column-gap: 5px; +} + +.fc0 { grid-template-columns: fit-content(0px);} +.fc40 { grid-template-columns: fit-content(40px); } +.fc80 { grid-template-columns: fit-content(80px); } +.fc110 { grid-template-columns: fit-content(110px); } + +.fc0x2 { grid-template-columns: repeat(2, fit-content(0px));} +.fc40x2 { grid-template-columns: repeat(2, fit-content(40px)); } +.fc80x2 { grid-template-columns: repeat(2, fit-content(80px)); } +.fc110x2 { grid-template-columns: repeat(2, fit-content(110px)); } + +.fc0p { grid-template-columns: fit-content(0%); } +.fc30p { grid-template-columns: fit-content(30%); } +.fc90p { grid-template-columns: fit-content(90%); } +.fc110p { grid-template-columns: fit-content(110%); } + +.fc0px2 { grid-template-columns: repeat(2, fit-content(0%)); } +.fc30px2 { grid-template-columns: repeat(2, fit-content(30%)); } +.fc90px2 { grid-template-columns: repeat(2, fit-content(90%)); } +.fc110px2 { grid-template-columns: repeat(2, fit-content(110%)); } + +.item { + font: 10px/1 Ahem; + background: cyan; +} + +.spanningItem { + font: 10px/1 Ahem; + grid-column: 1 / -1; + grid-row: 2; + background: salmon; +} + +.test { + position: absolute; + left: 0; right: 0; top: 0; + height: 5px; + background: purple; +} +.test:nth-child(2n) { background: orange; } + +.floatLeft { + float: left; + width: 190px; +} + +h3 { font-size: 1em; } + +</style> + +<p>The test passes if it has the same output than the reference.</p> + +<div class="floatLeft"> + <h3>Only fit-content() and with fixed size tracks.</h3> + <div class="grid fc0"> + <div class="item">XXX</div> + <div class="test autoRowFirstColumn"></div> + </div> + + <div class="grid fc0x2"> + <div class="item">XXX</div> + <div class="spanningItem">XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid fc40"> + <div class="item">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + </div> + + <div class="grid fc40x2"> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid fc40x2"> + <div class="item">XXX XXX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid fc80"> + <div class="item">XXX XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + </div> + + <div class="grid fc80x2"> + <div class="spanningItem">XXX XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid fc80x2"> + <div class="item autoRowSecondColumn">XXX XXX XXX</div> + <div class="spanningItem">XXX XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: fit-content(20px) 50%;"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: minmax(10px, 40px) fit-content(40px);"> + <div class="item">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: fit-content(40px) minmax(10%, 200px);"> + <div class="item autoRowSecondColumn">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + +</div> + +<div class="floatLeft"> + <h3>fit-content() with other content-sized tracks.</h3> + <div class="grid" style="grid-template-columns: fit-content(40px) max-content;"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: fit-content(40px) max-content;"> + <div class="item">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: fit-content(40px) max-content;"> + <div class="item autoRowSecondColumn">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: min-content fit-content(40px);"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: min-content fit-content(40px);"> + <div class="item">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: min-content fit-content(40px);"> + <div class="item autoRowSecondColumn">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: fit-content(30px) min-content max-content"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + <div class="test autoRowThirdColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: min-content fit-content(30px) max-content"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + <div class="test autoRowThirdColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: min-content max-content fit-content(30px)"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + <div class="test autoRowThirdColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: fit-content(30px) min-content max-content"> + <div class="item" style="grid-column: 1">XXX XX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + <div class="test autoRowThirdColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: min-content fit-content(30px) max-content"> + <div class="item" style="grid-column: 1">XXX XX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + <div class="test autoRowThirdColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: min-content max-content fit-content(30px)"> + <div class="item" style="grid-column: 2">XXX XX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + <div class="test autoRowThirdColumn"></div> + </div> +</div> + +<div class="floatLeft"> + <h3>fit-content() with percentage arguments.</h3> + <div class="grid fc0p"> + <div class="item">XXX</div> + <div class="test autoRowFirstColumn"></div> + </div> + + <div class="grid fc0px2"> + <div class="item">XXX</div> + <div class="spanningItem">XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid fc30p"> + <div class="item">XX XX</div> + <div class="test autoRowFirstColumn"></div> + </div> + + <div class="grid fc30px2"> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid fc30px2"> + <div class="item autoRowSecondColumn">X X X</div> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid fc90p"> + <div class="item">XXX XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + </div> + + <div class="grid fc90px2"> + <div class="spanningItem">XXX XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid fc90px2"> + <div class="item autoRowSecondColumn">XXX XXX XXX</div> + <div class="spanningItem">XXX XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> +</div> + +<div class="floatLeft"> + <h3>max-content < fit-content() argument.</h3> + + <div class="grid fc110"> + <div class="item">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + </div> + + <div class="grid fc110x2"> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid fc110x2"> + <div class="item">XXX XXX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: fit-content(110px) fit-content(40px);"> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: fit-content(110px) fit-content(40px);"> + <div class="item autoRowSecondColumn">XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: max-content fit-content(110px);"> + <div class="spanningItem" style="grid-row: 1;">XX XX XX XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: fit-content(110px) min-content;"> + <div class="spanningItem" style="grid-row: 1;">XX XX XX XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: max-content fit-content(110px) max-content;"> + <div class="spanningItem" style="grid-row: 1;">XX XX XX XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + <div class="test autoRowThirdColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: min-content fit-content(110px) min-content;"> + <div class="spanningItem" style="grid-row: 1;">XX XX XX XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + <div class="test autoRowThirdColumn"></div> + </div> + + <div class="grid" style="grid-template-columns: auto fit-content(110px) auto;"> + <div class="spanningItem" style="grid-row: 1;">XX XX XX XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test autoRowFirstColumn"></div> + <div class="test autoRowSecondColumn"></div> + <div class="test autoRowThirdColumn"></div> + </div> + +</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/grid-definition/grid-template-rows-fit-content-001-ref.html b/tests/wpt/web-platform-tests/css/css-grid-1/grid-definition/grid-template-rows-fit-content-001-ref.html new file mode 100644 index 00000000000..bff6447c6f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid-1/grid-definition/grid-template-rows-fit-content-001-ref.html @@ -0,0 +1,348 @@ +<!DOCTYPE html> +<html lang=en> +<meta charset="utf-8"> +<title>CSS Grid Layout Test: grid-template-rows fit-content() reference file</title> +<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> +<link rel="stylesheet" href="../support/grid.css"> +<meta name="flags" content="ahem"> +<style> +.grid { + justify-content: start; + align-content: start; + height: 100px; + width: 40px; + position: relative; + padding-left: 10px; + margin-right: 5px; + grid-row-gap: 5px; + float: left; +} + +.fc0 { grid-template-rows: minmax(auto, 0px);} +.fc40 { grid-template-rows: minmax(auto, 40px); } +.fc80 { grid-template-rows: minmax(auto, 80px); } +.fc110 { grid-template-rows: auto; } + +.fc0x2 { grid-template-rows: repeat(2, minmax(auto, 0px));} +.fc40x2 { grid-template-rows: repeat(2, minmax(auto, 40px)); } +.fc80x2 { grid-template-rows: repeat(2, minmax(auto, 80px)); } +.fc110x2 { grid-template-rows: auto auto; } + +.fc0p { grid-template-rows: minmax(auto, 0%); } +.fc30p { grid-template-rows: minmax(auto, 30px); } +.fc90p { grid-template-rows: minmax(auto, 90px); } +.fc110p { grid-template-rows: auto; } + +.fc0px2 { grid-template-rows: repeat(2, minmax(auto, 0%)); } +.fc30px2 { grid-template-rows: repeat(2, minmax(auto, 30px)); } +.fc90px2 { grid-template-rows: repeat(2, minmax(auto, 90px)); } +.fc110px2 { grid-template-rows: auto auto; } + +.item { + font: 10px/1 Ahem; + background: cyan; +} + +.spanningItem { + font: 10px/1 Ahem; + grid-row: 1 / -1; + grid-column: 2; + background: salmon; +} + +.test { + position: absolute; + left: 0; top: 0; bottom: 0; + width: 5px; + background: purple; +} +.test:nth-child(2n) { background: orange; } + +.firstRow { grid-row: 1 / 2; } +.secondRow { grid-row: 2 / 3; } +.thirdRow { grid-row: 3 / 4; } + +div.grid > div { writing-mode: vertical-lr; } + +</style> + +<p>The test passes if it has the same output than the reference.</p> + +<div class="grid fc0"> + <div class="item">XXX</div> + <div class="test firstRow"></div> +</div> + +<div class="grid fc0x2"> + <div class="item">XXX</div> + <div class="spanningItem">XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid fc40"> + <div class="item">XXX XXX</div> + <div class="test firstRow"></div> +</div> + +<div class="grid" style="grid-template-rows: auto auto;"> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: minmax(auto, 40px) auto;"> + <div class="item">XXX XXX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid fc80"> + <div class="item">XXX XXX XXX</div> + <div class="test firstRow"></div> +</div> + +<div class="grid fc80x2"> + <div class="spanningItem">XXX XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: auto minmax(auto, 80px)"> + <div class="item secondRow">XXX XXX XXX</div> + <div class="spanningItem">XXX XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: minmax(auto, 20px) 50%;"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: minmax(10px, 40px) minmax(auto, 40px);"> + <div class="item">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: auto minmax(10%, 200px);"> + <div class="item secondRow">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<br clear="all"> +<br clear="all"> + +<div class="grid" style="grid-template-rows: minmax(auto, 40px) max-content;"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: minmax(auto, 40px) max-content;"> + <div class="item">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: minmax(auto, 40px) max-content;"> + <div class="item secondRow">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: min-content minmax(auto, 40px);"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: min-content minmax(auto, 40px);"> + <div class="item">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: min-content minmax(auto, 40px);"> + <div class="item secondRow">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: minmax(auto, 30px) min-content max-content"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> + <div class="test thirdRow"></div> +</div> + +<div class="grid" style="grid-template-rows: min-content minmax(auto, 30px) max-content"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> + <div class="test thirdRow"></div> +</div> + +<div class="grid" style="grid-template-rows: min-content max-content minmax(auto, 30px)"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> + <div class="test thirdRow"></div> +</div> + +<div class="grid" style="grid-template-rows: minmax(auto, 30px) min-content max-content"> + <div class="item" style="grid-row: 1">XXX XX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> + <div class="test thirdRow"></div> +</div> + +<div class="grid" style="grid-template-rows: min-content minmax(auto, 30px) max-content"> + <div class="item" style="grid-row: 1">XXX XX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> + <div class="test thirdRow"></div> +</div> + +<div class="grid" style="grid-template-rows: min-content max-content minmax(auto, 30px)"> + <div class="item" style="grid-row: 2">XXX XX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> + <div class="test thirdRow"></div> +</div> + +<br clear="all"> +<br clear="all"> + +<div class="grid fc0p"> + <div class="item">XXX</div> + <div class="test firstRow"></div> +</div> + +<div class="grid fc0px2"> + <div class="item">XXX</div> + <div class="spanningItem">XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid fc30p"> + <div class="item">XX XX</div> + <div class="test firstRow"></div> +</div> + +<div class="grid fc30px2"> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid fc30px2"> + <div class="item secondRow">X X X</div> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid fc90p"> + <div class="item">XXX XXX XXX</div> + <div class="test firstRow"></div> +</div> + +<div class="grid fc90px2"> + <div class="spanningItem">XXX XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: auto minmax(auto, 90px)"> + <div class="item secondRow">XXX XXX XXX</div> + <div class="spanningItem">XXX XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<br clear="all"> +<br clear="all"> + +<div class="grid fc110"> + <div class="item">XXX XXX</div> + <div class="test firstRow"></div> +</div> + +<div class="grid fc110x2"> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid fc110x2"> + <div class="item">XXX XXX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: auto auto;"> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: auto auto;"> + <div class="item secondRow">XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: max-content auto;"> + <div class="spanningItem" style="grid-column: 1;">XX XX XX XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: auto min-content;"> + <div class="spanningItem" style="grid-column: 1;">XX XX XX XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: max-content auto max-content;"> + <div class="spanningItem" style="grid-column: 1;">XX XX XX XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> + <div class="test thirdRow"></div> +</div> + +<div class="grid" style="grid-template-rows: min-content auto min-content;"> + <div class="spanningItem" style="grid-column: 1;">XX XX XX XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> + <div class="test thirdRow"></div> +</div> + +<div class="grid" style="grid-template-rows: auto auto auto;"> + <div class="spanningItem" style="grid-column: 1;">XX XX XX XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> + <div class="test thirdRow"></div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/grid-definition/grid-template-rows-fit-content-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/grid-definition/grid-template-rows-fit-content-001.html new file mode 100644 index 00000000000..6d406c3f1b4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid-1/grid-definition/grid-template-rows-fit-content-001.html @@ -0,0 +1,355 @@ +<!DOCTYPE html> +<html lang=en> +<meta charset="utf-8"> +<title>CSS Grid Layout Test: grid-template-rows fit-content()</title> +<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-grid-1/#track-sizing"> +<link rel="match" href="grid-template-rows-fit-content-001-ref.html"> +<meta name="assert" content="This test checks that 'fit-content()' works as expected in grid-template-rows, i.e., it's similar to 'auto' ('minmax(auto, max-content)') except that the growth limit is clamped at the argument of 'fit-content' (if greater than the 'auto' minimum)."> +<meta name="flags" content="ahem"> +<link rel="stylesheet" href="../support/grid.css"> +<style> +.grid { + justify-content: start; + align-content: start; + height: 100px; + width: 40px; + position: relative; + padding-left: 10px; + margin-right: 5px; + grid-row-gap: 5px; + float: left; +} + +.fc0 { grid-template-rows: fit-content(0px);} +.fc40 { grid-template-rows: fit-content(40px); } +.fc80 { grid-template-rows: fit-content(80px); } +.fc110 { grid-template-rows: fit-content(110px); } + +.fc0x2 { grid-template-rows: repeat(2, fit-content(0px));} +.fc40x2 { grid-template-rows: repeat(2, fit-content(40px)); } +.fc80x2 { grid-template-rows: repeat(2, fit-content(80px)); } +.fc110x2 { grid-template-rows: repeat(2, fit-content(110px)); } + +.fc0p { grid-template-rows: fit-content(0%); } +.fc30p { grid-template-rows: fit-content(30%); } +.fc90p { grid-template-rows: fit-content(90%); } +.fc110p { grid-template-rows: fit-content(110%); } + +.fc0px2 { grid-template-rows: repeat(2, fit-content(0%)); } +.fc30px2 { grid-template-rows: repeat(2, fit-content(30%)); } +.fc90px2 { grid-template-rows: repeat(2, fit-content(90%)); } +.fc110px2 { grid-template-rows: repeat(2, fit-content(110%)); } + +div.grid > div { writing-mode: vertical-lr; } + +.item { + font: 10px/1 Ahem; + background: cyan; +} + +.spanningItem { + font: 10px/1 Ahem; + grid-row: 1 / -1; + grid-column: 2; + background: salmon; +} + +.test { + position: absolute; + left: 0; bottom: 0; top: 0; + width: 5px; + background: purple; +} +.test:nth-child(2n) { background: orange; } + +.firstRow { grid-row: 1 / 2; } +.secondRow { grid-row: 2 / 3; } +.thirdRow { grid-row: 3 / 4; } + +h3 { font-size: 1em; } +.container { float: left; height: 110px;} + +</style> + +<p>The test passes if it has the same output than the reference.</p> + +<div class="grid fc0"> + <div class="item">XXX</div> + <div class="test firstRow"></div> +</div> + +<div class="grid fc0x2"> + <div class="item">XXX</div> + <div class="spanningItem">XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid fc40"> + <div class="item">XXX XXX</div> + <div class="test firstRow"></div> +</div> + +<div class="grid fc40x2"> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid fc40x2"> + <div class="item">XXX XXX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid fc80"> + <div class="item">XXX XXX XXX</div> + <div class="test firstRow"></div> +</div> + +<div class="grid fc80x2"> + <div class="spanningItem">XXX XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid fc80x2"> + <div class="item secondRow">XXX XXX XXX</div> + <div class="spanningItem">XXX XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: fit-content(20px) 50%;"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: minmax(10px, 40px) fit-content(40px);"> + <div class="item">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: fit-content(40px) minmax(10%, 200px);"> + <div class="item secondRow">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> +</div> + +<br clear ="all"> +<br clear ="all"> + +<div class="grid" style="grid-template-rows: fit-content(40px) max-content;"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: fit-content(40px) max-content;"> + <div class="item">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: fit-content(40px) max-content;"> + <div class="item secondRow">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: min-content fit-content(40px);"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: min-content fit-content(40px);"> + <div class="item">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: min-content fit-content(40px);"> + <div class="item secondRow">XXXXX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: fit-content(30px) min-content max-content"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> + <div class="test thirdRow"></div> +</div> + +<div class="grid" style="grid-template-rows: min-content fit-content(30px) max-content"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> + <div class="test thirdRow"></div> +</div> + +<div class="grid" style="grid-template-rows: min-content max-content fit-content(30px)"> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> + <div class="test thirdRow"></div> +</div> + +<div class="grid" style="grid-template-rows: fit-content(30px) min-content max-content"> + <div class="item" style="grid-row: 1">XXX XX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> + <div class="test thirdRow"></div> +</div> + +<div class="grid" style="grid-template-rows: min-content fit-content(30px) max-content"> + <div class="item" style="grid-row: 1">XXX XX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> + <div class="test thirdRow"></div> +</div> + +<div class="grid" style="grid-template-rows: min-content max-content fit-content(30px)"> + <div class="item" style="grid-row: 2">XXX XX</div> + <div class="spanningItem">XXX XX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> + <div class="test thirdRow"></div> +</div> + +<br clear="all"> +<br clear="all"> + +<div class="grid fc0p"> + <div class="item">XXX</div> + <div class="test firstRow"></div> +</div> + +<div class="grid fc0px2"> + <div class="item">XXX</div> + <div class="spanningItem">XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid fc30p"> + <div class="item">XX XX</div> + <div class="test firstRow"></div> +</div> + +<div class="grid fc30px2"> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid fc30px2"> + <div class="item secondRow">X X X</div> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid fc90p"> + <div class="item">XXX XXX XXX</div> + <div class="test firstRow"></div> +</div> + +<div class="grid fc90px2"> + <div class="spanningItem">XXX XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid fc90px2"> + <div class="item secondRow">XXX XXX XXX</div> + <div class="spanningItem">XXX XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<br clear="all"> +<br clear="all"> + +<div class="grid fc110"> + <div class="item">XXX XXX</div> + <div class="test firstRow"></div> +</div> + +<div class="grid fc110x2"> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid fc110x2"> + <div class="item">XXX XXX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: fit-content(110px) fit-content(40px);"> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: fit-content(110px) fit-content(40px);"> + <div class="item secondRow">XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: max-content fit-content(110px);"> + <div class="spanningItem" style="grid-column: 1;">XX XX XX XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: fit-content(110px) min-content;"> + <div class="spanningItem" style="grid-column: 1;">XX XX XX XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> +</div> + +<div class="grid" style="grid-template-rows: max-content fit-content(110px) max-content;"> + <div class="spanningItem" style="grid-column: 1;">XX XX XX XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> + <div class="test thirdRow"></div> +</div> + +<div class="grid" style="grid-template-rows: min-content fit-content(110px) min-content;"> + <div class="spanningItem" style="grid-column: 1;">XX XX XX XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> + <div class="test thirdRow"></div> +</div> + +<div class="grid" style="grid-template-rows: auto fit-content(110px) auto;"> + <div class="spanningItem" style="grid-column: 1;">XX XX XX XX</div> + <div class="spanningItem">XXX XXX</div> + <div class="test firstRow"></div> + <div class="test secondRow"></div> + <div class="test thirdRow"></div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/grid-model/grid-box-sizing-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/grid-model/grid-box-sizing-001.html new file mode 100644 index 00000000000..825d35e85bd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid-1/grid-model/grid-box-sizing-001.html @@ -0,0 +1,188 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Grid Layout Test: Grid container and tracks sizes with box-sizing property</title> +<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-grid-1/#intrinsic-sizes"> +<link rel="help" href="https://drafts.csswg.org/css-ui-3/#box-sizing"> +<meta name="assert" content="The test checks the sizes of a grid container and its track depending on min-size constraints and the box-sizing property."> +<style> +.wrapper { + position: relative; + width: 200px; + height: 100px; +} + +.grid { + position: absolute; + left: 0; + top: 0; + display: grid; + border-style: solid; + border-width: 5px 10px 15px 20px; + padding: 17px 13px 7px 3px; +} + +.wholeWidth { + right: 0; +} + +.wholeHeight { + bottom: 0; +} +.item { + background: cyan; +} +</style> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/check-layout-th.js">"></script> + +<body onload="checkLayout('.grid')"> + +<div id="log"></div> + +<div class="wrapper"> + <div class="grid wholeWidth" style="height: 100px;" data-expected-width="200" data-expected-height="144"> + <div class="item" data-expected-width="154" data-expected-height="100"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeWidth" style="min-height: 100px;" data-expected-width="200" data-expected-height="144"> + <div class="item" data-expected-width="154" data-expected-height="100"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeWidth" style="height: 100px; box-sizing: border-box;" data-expected-width="200" data-expected-height="100"> + <div class="item" data-expected-width="154" data-expected-height="56"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeWidth" style="min-height: 100px; box-sizing: border-box;" data-expected-width="200" data-expected-height="100"> + <div class="item" data-expected-width="154" data-expected-height="56"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeWidth" style="bottom: 0;" data-expected-width="200" data-expected-height="100"> + <div class="item" data-expected-width="154" data-expected-height="56"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeWidth" style="bottom: 0;" data-expected-width="200" data-expected-height="100"> + <div class="item" data-expected-width="154" data-expected-height="56"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeWidth" style="bottom: 0; box-sizing: border-box;" data-expected-width="200" data-expected-height="100"> + <div class="item" data-expected-width="154" data-expected-height="56"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeWidth" style="bottom: 0; box-sizing: border-box;" data-expected-width="200" data-expected-height="100"> + <div class="item" data-expected-width="154" data-expected-height="56"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeWidth" style="height: 100px; bottom: 0;" data-expected-width="200" data-expected-height="144"> + <div class="item" data-expected-width="154" data-expected-height="100"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeWidth" style="min-height: 100px; bottom: 0;" data-expected-width="200" data-expected-height="144"> + <div class="item" data-expected-width="154" data-expected-height="100"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeWidth" style="height: 100px; bottom: 0; box-sizing: border-box;" data-expected-width="200" data-expected-height="100"> + <div class="item" data-expected-width="154" data-expected-height="56"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeWidth" style="min-height: 100px; bottom: 0; box-sizing: border-box;" data-expected-width="200" data-expected-height="100"> + <div class="item" data-expected-width="154" data-expected-height="56"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeHeight" style="width: 200px;" data-expected-width="246" data-expected-height="100"> + <div class="item" data-expected-width="200" data-expected-height="56"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeHeight" style="min-width: 200px;" data-expected-width="246" data-expected-height="100"> + <div class="item" data-expected-width="200" data-expected-height="56"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeHeight" style="width: 200px; box-sizing: border-box;" data-expected-width="200" data-expected-height="100"> + <div class="item" data-expected-width="154" data-expected-height="56"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeHeight" style="min-width: 200px; box-sizing: border-box;" data-expected-width="200" data-expected-height="100"> + <div class="item" data-expected-width="154" data-expected-height="56"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeHeight" style="right: 0;" data-expected-width="200" data-expected-height="100"> + <div class="item" data-expected-width="154" data-expected-height="56"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeHeight" style="right: 0;" data-expected-width="200" data-expected-height="100"> + <div class="item" data-expected-width="154" data-expected-height="56"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeHeight" style="right: 0; box-sizing: border-box;" data-expected-width="200" data-expected-height="100"> + <div class="item" data-expected-width="154" data-expected-height="56"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeHeight" style="right: 0; box-sizing: border-box;" data-expected-width="200" data-expected-height="100"> + <div class="item" data-expected-width="154" data-expected-height="56"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeHeight" style="width: 200px; right: 0;" data-expected-width="246" data-expected-height="100"> + <div class="item" data-expected-width="200" data-expected-height="56"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeHeight" style="min-width: 200px; right: 0;" data-expected-width="246" data-expected-height="100"> + <div class="item" data-expected-width="200" data-expected-height="56"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeHeight" style="width: 200px; right: 0; box-sizing: border-box;" data-expected-width="200" data-expected-height="100"> + <div class="item" data-expected-width="154" data-expected-height="56"></div> + </div> +</div> + +<div class="wrapper"> + <div class="grid wholeHeight" style="min-width: 200px; right: 0; box-sizing: border-box;" data-expected-width="200" data-expected-height="100"> + <div class="item" data-expected-width="154" data-expected-height="56"></div> + </div> +</div> + +</body> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/layout-algorithm/grid-stretch-respects-min-size-001.html b/tests/wpt/web-platform-tests/css/css-grid-1/layout-algorithm/grid-stretch-respects-min-size-001.html new file mode 100644 index 00000000000..29eca9dbc6f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid-1/layout-algorithm/grid-stretch-respects-min-size-001.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Grid Layout Test: stretch alignment respects min size constraints of the grid container</title> +<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-grid-1/#algo-stretch"> +<link rel="help" href="https://drafts.csswg.org/css-grid-1/#grid-align"> +<link rel="match" href="../../reference/ref-filled-green-100px-square.xht"> +<meta name="assert" content="The test checks that during the last step of the track sizing algorithm (stretch auto tracks), the min-width/height constraints of the grid container are respected."> +<style> + #reference-overlapped-red { + position: absolute; + background-color: red; + width: 100px; + height: 100px; + z-index: -1; + } + + #constrained-wrapper { + width: 50px; + height: 50px; + } + + #grid { + display: grid; + min-width: 100px; + min-height: 100px; + } + + #test-item-overlapping-green { + background: green; + } +</style> +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> + +<div id="reference-overlapped-red"></div> +<div id="constrained-wrapper"> + <div id="grid"> + <div id="test-item-overlapping-green"></div> + </div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-grid-1/support/check-layout-th.js b/tests/wpt/web-platform-tests/css/css-grid-1/support/check-layout-th.js deleted file mode 100644 index 07f7d5ded82..00000000000 --- a/tests/wpt/web-platform-tests/css/css-grid-1/support/check-layout-th.js +++ /dev/null @@ -1,190 +0,0 @@ -(function() { -// Test is initiated from body.onload, so explicit done() call is required. -setup({ explicit_done: true }); - -function checkSubtreeExpectedValues(t, parent, prefix) -{ - var checkedLayout = checkExpectedValues(t, parent, prefix); - Array.prototype.forEach.call(parent.childNodes, function(node) { - checkedLayout |= checkSubtreeExpectedValues(t, node, prefix); - }); - return checkedLayout; -} - -function checkAttribute(output, node, attribute) -{ - var result = node.getAttribute && node.getAttribute(attribute); - output.checked |= !!result; - return result; -} - -function assert_tolerance(actual, expected, message) -{ - if (isNaN(expected) || Math.abs(actual - expected) >= 1) { - assert_equals(actual, Number(expected), message); - } -} - -function checkExpectedValues(t, node, prefix) -{ - var output = { checked: false }; - - var expectedWidth = checkAttribute(output, node, "data-expected-width"); - if (expectedWidth) { - assert_tolerance(node.offsetWidth, expectedWidth, prefix + "width"); - } - - var expectedHeight = checkAttribute(output, node, "data-expected-height"); - if (expectedHeight) { - assert_tolerance(node.offsetHeight, expectedHeight, prefix + "height"); - } - - var expectedOffset = checkAttribute(output, node, "data-offset-x"); - if (expectedOffset) { - assert_tolerance(node.offsetLeft, expectedOffset, prefix + "offsetLeft"); - } - - var expectedOffset = checkAttribute(output, node, "data-offset-y"); - if (expectedOffset) { - assert_tolerance(node.offsetTop, expectedOffset, prefix + "offsetTop"); - } - - var expectedWidth = checkAttribute(output, node, "data-expected-client-width"); - if (expectedWidth) { - assert_tolerance(node.clientWidth, expectedWidth, prefix + "clientWidth"); - } - - var expectedHeight = checkAttribute(output, node, "data-expected-client-height"); - if (expectedHeight) { - assert_tolerance(node.clientHeight, expectedHeight, prefix + "clientHeight"); - } - - var expectedWidth = checkAttribute(output, node, "data-expected-scroll-width"); - if (expectedWidth) { - assert_tolerance(node.scrollWidth, expectedWidth, prefix + "scrollWidth"); - } - - var expectedHeight = checkAttribute(output, node, "data-expected-scroll-height"); - if (expectedHeight) { - assert_tolerance(node.scrollHeight, expectedHeight, prefix + "scrollHeight"); - } - - var expectedOffset = checkAttribute(output, node, "data-total-x"); - if (expectedOffset) { - var totalLeft = node.clientLeft + node.offsetLeft; - assert_tolerance(totalLeft, expectedOffset, prefix + - "clientLeft+offsetLeft (" + node.clientLeft + " + " + node.offsetLeft + ")"); - } - - var expectedOffset = checkAttribute(output, node, "data-total-y"); - if (expectedOffset) { - var totalTop = node.clientTop + node.offsetTop; - assert_tolerance(totalTop, expectedOffset, prefix + - "clientTop+offsetTop (" + node.clientTop + " + " + node.offsetTop + ")"); - } - - var expectedDisplay = checkAttribute(output, node, "data-expected-display"); - if (expectedDisplay) { - var actualDisplay = getComputedStyle(node).display; - assert_equals(actualDisplay, expectedDisplay, prefix + "display"); - } - - var expectedPaddingTop = checkAttribute(output, node, "data-expected-padding-top"); - if (expectedPaddingTop) { - var actualPaddingTop = getComputedStyle(node).paddingTop; - // Trim the unit "px" from the output. - actualPaddingTop = actualPaddingTop.slice(0, -2); - assert_equals(actualPaddingTop, expectedPaddingTop, prefix + "padding-top"); - } - - var expectedPaddingBottom = checkAttribute(output, node, "data-expected-padding-bottom"); - if (expectedPaddingBottom) { - var actualPaddingBottom = getComputedStyle(node).paddingBottom; - // Trim the unit "px" from the output. - actualPaddingBottom = actualPaddingBottom.slice(0, -2); - assert_equals(actualPaddingBottom, expectedPaddingBottom, prefix + "padding-bottom"); - } - - var expectedPaddingLeft = checkAttribute(output, node, "data-expected-padding-left"); - if (expectedPaddingLeft) { - var actualPaddingLeft = getComputedStyle(node).paddingLeft; - // Trim the unit "px" from the output. - actualPaddingLeft = actualPaddingLeft.slice(0, -2); - assert_equals(actualPaddingLeft, expectedPaddingLeft, prefix + "padding-left"); - } - - var expectedPaddingRight = checkAttribute(output, node, "data-expected-padding-right"); - if (expectedPaddingRight) { - var actualPaddingRight = getComputedStyle(node).paddingRight; - // Trim the unit "px" from the output. - actualPaddingRight = actualPaddingRight.slice(0, -2); - assert_equals(actualPaddingRight, expectedPaddingRight, prefix + "padding-right"); - } - - var expectedMarginTop = checkAttribute(output, node, "data-expected-margin-top"); - if (expectedMarginTop) { - var actualMarginTop = getComputedStyle(node).marginTop; - // Trim the unit "px" from the output. - actualMarginTop = actualMarginTop.slice(0, -2); - assert_equals(actualMarginTop, expectedMarginTop, prefix + "margin-top"); - } - - var expectedMarginBottom = checkAttribute(output, node, "data-expected-margin-bottom"); - if (expectedMarginBottom) { - var actualMarginBottom = getComputedStyle(node).marginBottom; - // Trim the unit "px" from the output. - actualMarginBottom = actualMarginBottom.slice(0, -2); - assert_equals(actualMarginBottom, expectedMarginBottom, prefix + "margin-bottom"); - } - - var expectedMarginLeft = checkAttribute(output, node, "data-expected-margin-left"); - if (expectedMarginLeft) { - var actualMarginLeft = getComputedStyle(node).marginLeft; - // Trim the unit "px" from the output. - actualMarginLeft = actualMarginLeft.slice(0, -2); - assert_equals(actualMarginLeft, expectedMarginLeft, prefix + "margin-left"); - } - - var expectedMarginRight = checkAttribute(output, node, "data-expected-margin-right"); - if (expectedMarginRight) { - var actualMarginRight = getComputedStyle(node).marginRight; - // Trim the unit "px" from the output. - actualMarginRight = actualMarginRight.slice(0, -2); - assert_equals(actualMarginRight, expectedMarginRight, prefix + "margin-right"); - } - - return output.checked; -} - -window.checkLayout = function(selectorList, outputContainer) -{ - if (!selectorList) { - console.error("You must provide a CSS selector of nodes to check."); - return; - } - var nodes = document.querySelectorAll(selectorList); - var testNumber = 0; - nodes = Array.prototype.slice.call(nodes); - nodes.reverse(); - var checkedLayout = false; - Array.prototype.forEach.call(nodes, function(node) { - test(function(t) { - var container = node.parentNode.className == 'container' ? node.parentNode : node; - var prefix = "\n" + container.outerHTML + "\n"; - var passed = false; - try { - checkedLayout |= checkExpectedValues(t, node.parentNode, prefix); - checkedLayout |= checkSubtreeExpectedValues(t, node, prefix); - passed = true; - } finally { - checkedLayout |= !passed; - } - }, selectorList + ' ' + String(++testNumber)); - }); - if (!checkedLayout) { - console.error("No valid data-* attributes found in selector list : " + selectorList); - } - done(); -}; - -})(); diff --git a/tests/wpt/web-platform-tests/css/css-images-3/gradients-with-transparent-ref.html b/tests/wpt/web-platform-tests/css/css-images-3/gradients-with-transparent-ref.html new file mode 100644 index 00000000000..9f52476b2a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images-3/gradients-with-transparent-ref.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Linear gradient with transparent reference</title> +<style> + .test { + width: 200px; + height: 100px; + margin-left: 90px; + } + .gradient { + background-image: linear-gradient(to left, blue 0%, blue 20%, rgba(0,0,255,0)); + } +</style> + +<body> + <p>Gradient using 'transparent'</p> + <div id="gradient1" class="test gradient"></div> + <br /> + <p>Gradient using rgba(0,0,255,0)</p> + <div id="gradient2" class="test gradient"></div> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-images-3/gradients-with-transparent.html b/tests/wpt/web-platform-tests/css/css-images-3/gradients-with-transparent.html new file mode 100644 index 00000000000..e4505bc282e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images-3/gradients-with-transparent.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Gradients with transparent</title> +<link rel="help" href="https://www.w3.org/TR/css3-images/#linear-gradients"> +<link rel="match" href="gradients-with-transparent-ref.html"> +<meta name="assert" content="The blue gradients to 'transparent' keyword, and rgba(0,0,0,0), match the gradient to rgba(0,0,255,0)"> +<style> + .test { + width: 200px; + height: 100px; + margin-left: 90px; + } + #gradient1 { + background-image: linear-gradient(to left, blue 0%, blue 20%, transparent); + } + #gradient2 { + background-image: linear-gradient(to left, blue 0%, blue 20%, rgba(0,0,0,0)); + } +</style> +<body> + <p>Gradient using 'transparent'</p> + <div id="gradient1" class="test"></div> + <br /> + <p>Gradient using rgba(0,0,255,0)</p> + <div id="gradient2" class="test"></div> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-tables-3/fixed-layout-calc-width-001.html b/tests/wpt/web-platform-tests/css/css-tables-3/fixed-layout-calc-width-001.html index 91c665ee2d4..4d3622bb932 100644 --- a/tests/wpt/web-platform-tests/css/css-tables-3/fixed-layout-calc-width-001.html +++ b/tests/wpt/web-platform-tests/css/css-tables-3/fixed-layout-calc-width-001.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <link rel="author" title="David Grogan" href="dgrogan@chromium.org"> <link rel="help" href="https://drafts.csswg.org/css-tables-3/#distributing-width-to-columns"> diff --git a/tests/wpt/web-platform-tests/css/css-tables-3/fixed-layout-excess-width-distribution-001.html b/tests/wpt/web-platform-tests/css/css-tables-3/fixed-layout-excess-width-distribution-001.html index a9a78bd59b0..a2d1884b585 100644 --- a/tests/wpt/web-platform-tests/css/css-tables-3/fixed-layout-excess-width-distribution-001.html +++ b/tests/wpt/web-platform-tests/css/css-tables-3/fixed-layout-excess-width-distribution-001.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="support/check-layout-th.js"></script> +<script src="/resources/check-layout-th.js">"></script> <link rel="author" title="David Grogan" href="dgrogan@chromium.org"> <link rel="help" href="https://drafts.csswg.org/css-tables-3/#distributing-width-to-columns"> diff --git a/tests/wpt/web-platform-tests/css/css-tables-3/support/check-layout-th.js b/tests/wpt/web-platform-tests/css/css-tables-3/support/check-layout-th.js deleted file mode 100644 index 07f7d5ded82..00000000000 --- a/tests/wpt/web-platform-tests/css/css-tables-3/support/check-layout-th.js +++ /dev/null @@ -1,190 +0,0 @@ -(function() { -// Test is initiated from body.onload, so explicit done() call is required. -setup({ explicit_done: true }); - -function checkSubtreeExpectedValues(t, parent, prefix) -{ - var checkedLayout = checkExpectedValues(t, parent, prefix); - Array.prototype.forEach.call(parent.childNodes, function(node) { - checkedLayout |= checkSubtreeExpectedValues(t, node, prefix); - }); - return checkedLayout; -} - -function checkAttribute(output, node, attribute) -{ - var result = node.getAttribute && node.getAttribute(attribute); - output.checked |= !!result; - return result; -} - -function assert_tolerance(actual, expected, message) -{ - if (isNaN(expected) || Math.abs(actual - expected) >= 1) { - assert_equals(actual, Number(expected), message); - } -} - -function checkExpectedValues(t, node, prefix) -{ - var output = { checked: false }; - - var expectedWidth = checkAttribute(output, node, "data-expected-width"); - if (expectedWidth) { - assert_tolerance(node.offsetWidth, expectedWidth, prefix + "width"); - } - - var expectedHeight = checkAttribute(output, node, "data-expected-height"); - if (expectedHeight) { - assert_tolerance(node.offsetHeight, expectedHeight, prefix + "height"); - } - - var expectedOffset = checkAttribute(output, node, "data-offset-x"); - if (expectedOffset) { - assert_tolerance(node.offsetLeft, expectedOffset, prefix + "offsetLeft"); - } - - var expectedOffset = checkAttribute(output, node, "data-offset-y"); - if (expectedOffset) { - assert_tolerance(node.offsetTop, expectedOffset, prefix + "offsetTop"); - } - - var expectedWidth = checkAttribute(output, node, "data-expected-client-width"); - if (expectedWidth) { - assert_tolerance(node.clientWidth, expectedWidth, prefix + "clientWidth"); - } - - var expectedHeight = checkAttribute(output, node, "data-expected-client-height"); - if (expectedHeight) { - assert_tolerance(node.clientHeight, expectedHeight, prefix + "clientHeight"); - } - - var expectedWidth = checkAttribute(output, node, "data-expected-scroll-width"); - if (expectedWidth) { - assert_tolerance(node.scrollWidth, expectedWidth, prefix + "scrollWidth"); - } - - var expectedHeight = checkAttribute(output, node, "data-expected-scroll-height"); - if (expectedHeight) { - assert_tolerance(node.scrollHeight, expectedHeight, prefix + "scrollHeight"); - } - - var expectedOffset = checkAttribute(output, node, "data-total-x"); - if (expectedOffset) { - var totalLeft = node.clientLeft + node.offsetLeft; - assert_tolerance(totalLeft, expectedOffset, prefix + - "clientLeft+offsetLeft (" + node.clientLeft + " + " + node.offsetLeft + ")"); - } - - var expectedOffset = checkAttribute(output, node, "data-total-y"); - if (expectedOffset) { - var totalTop = node.clientTop + node.offsetTop; - assert_tolerance(totalTop, expectedOffset, prefix + - "clientTop+offsetTop (" + node.clientTop + " + " + node.offsetTop + ")"); - } - - var expectedDisplay = checkAttribute(output, node, "data-expected-display"); - if (expectedDisplay) { - var actualDisplay = getComputedStyle(node).display; - assert_equals(actualDisplay, expectedDisplay, prefix + "display"); - } - - var expectedPaddingTop = checkAttribute(output, node, "data-expected-padding-top"); - if (expectedPaddingTop) { - var actualPaddingTop = getComputedStyle(node).paddingTop; - // Trim the unit "px" from the output. - actualPaddingTop = actualPaddingTop.slice(0, -2); - assert_equals(actualPaddingTop, expectedPaddingTop, prefix + "padding-top"); - } - - var expectedPaddingBottom = checkAttribute(output, node, "data-expected-padding-bottom"); - if (expectedPaddingBottom) { - var actualPaddingBottom = getComputedStyle(node).paddingBottom; - // Trim the unit "px" from the output. - actualPaddingBottom = actualPaddingBottom.slice(0, -2); - assert_equals(actualPaddingBottom, expectedPaddingBottom, prefix + "padding-bottom"); - } - - var expectedPaddingLeft = checkAttribute(output, node, "data-expected-padding-left"); - if (expectedPaddingLeft) { - var actualPaddingLeft = getComputedStyle(node).paddingLeft; - // Trim the unit "px" from the output. - actualPaddingLeft = actualPaddingLeft.slice(0, -2); - assert_equals(actualPaddingLeft, expectedPaddingLeft, prefix + "padding-left"); - } - - var expectedPaddingRight = checkAttribute(output, node, "data-expected-padding-right"); - if (expectedPaddingRight) { - var actualPaddingRight = getComputedStyle(node).paddingRight; - // Trim the unit "px" from the output. - actualPaddingRight = actualPaddingRight.slice(0, -2); - assert_equals(actualPaddingRight, expectedPaddingRight, prefix + "padding-right"); - } - - var expectedMarginTop = checkAttribute(output, node, "data-expected-margin-top"); - if (expectedMarginTop) { - var actualMarginTop = getComputedStyle(node).marginTop; - // Trim the unit "px" from the output. - actualMarginTop = actualMarginTop.slice(0, -2); - assert_equals(actualMarginTop, expectedMarginTop, prefix + "margin-top"); - } - - var expectedMarginBottom = checkAttribute(output, node, "data-expected-margin-bottom"); - if (expectedMarginBottom) { - var actualMarginBottom = getComputedStyle(node).marginBottom; - // Trim the unit "px" from the output. - actualMarginBottom = actualMarginBottom.slice(0, -2); - assert_equals(actualMarginBottom, expectedMarginBottom, prefix + "margin-bottom"); - } - - var expectedMarginLeft = checkAttribute(output, node, "data-expected-margin-left"); - if (expectedMarginLeft) { - var actualMarginLeft = getComputedStyle(node).marginLeft; - // Trim the unit "px" from the output. - actualMarginLeft = actualMarginLeft.slice(0, -2); - assert_equals(actualMarginLeft, expectedMarginLeft, prefix + "margin-left"); - } - - var expectedMarginRight = checkAttribute(output, node, "data-expected-margin-right"); - if (expectedMarginRight) { - var actualMarginRight = getComputedStyle(node).marginRight; - // Trim the unit "px" from the output. - actualMarginRight = actualMarginRight.slice(0, -2); - assert_equals(actualMarginRight, expectedMarginRight, prefix + "margin-right"); - } - - return output.checked; -} - -window.checkLayout = function(selectorList, outputContainer) -{ - if (!selectorList) { - console.error("You must provide a CSS selector of nodes to check."); - return; - } - var nodes = document.querySelectorAll(selectorList); - var testNumber = 0; - nodes = Array.prototype.slice.call(nodes); - nodes.reverse(); - var checkedLayout = false; - Array.prototype.forEach.call(nodes, function(node) { - test(function(t) { - var container = node.parentNode.className == 'container' ? node.parentNode : node; - var prefix = "\n" + container.outerHTML + "\n"; - var passed = false; - try { - checkedLayout |= checkExpectedValues(t, node.parentNode, prefix); - checkedLayout |= checkSubtreeExpectedValues(t, node, prefix); - passed = true; - } finally { - checkedLayout |= !passed; - } - }, selectorList + ' ' + String(++testNumber)); - }); - if (!checkedLayout) { - console.error("No valid data-* attributes found in selector list : " + selectorList); - } - done(); -}; - -})(); diff --git a/tests/wpt/web-platform-tests/css/css-ui-3/cursor-auto-004.html b/tests/wpt/web-platform-tests/css/css-ui-3/cursor-auto-004.html index eedaa618345..820a93303ce 100644 --- a/tests/wpt/web-platform-tests/css/css-ui-3/cursor-auto-004.html +++ b/tests/wpt/web-platform-tests/css/css-ui-3/cursor-auto-004.html @@ -4,7 +4,7 @@ <link rel="help" href="http://www.w3.org/TR/css3-ui/#cursor"> <meta name="flags" content="interact"> <meta charset="UTF-8"> -<meta name="assert" content="The 'auto' cursor value does the same as 'text' over text."> +<meta name="assert" content="The 'auto' cursor value does the same as 'default' over non-textual content."> <style> div { width: 100px; diff --git a/tests/wpt/web-platform-tests/css/css-ui-3/cursor-auto-005.html b/tests/wpt/web-platform-tests/css/css-ui-3/cursor-auto-005.html index ad11863b598..cb5ab8e5a51 100644 --- a/tests/wpt/web-platform-tests/css/css-ui-3/cursor-auto-005.html +++ b/tests/wpt/web-platform-tests/css/css-ui-3/cursor-auto-005.html @@ -1,10 +1,10 @@ <!DOCTYPE html> <title>CSS Basic User Interface Test: cursor:auto on form elements</title> -<link rel="author" title="Florian Rivoal" href="mailto:florian@rivoal.net"> +<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/"> <link rel="help" href="http://www.w3.org/TR/css3-ui/#cursor"> <meta name="flags" content="interact"> <meta charset="UTF-8"> -<meta name="assert" content="The 'auto' cursor value does the same as 'default' over everything other than text, such as form elements."> +<meta name="assert" content="The 'auto' cursor value does the same as 'default' over everything other than selectable text or editable elements, such as form elements that do not take text input."> <style> #test { border: solid blue; @@ -33,8 +33,6 @@ <p>Place the cursor into the orange box for a reference of what this should look like.</p> <div id=test> <button>button</button> - <textarea></textarea> - <input> <input type=button value=input-button> <select></select> </div> diff --git a/tests/wpt/web-platform-tests/css/css-ui-3/cursor-auto-006.html b/tests/wpt/web-platform-tests/css/css-ui-3/cursor-auto-006.html new file mode 100644 index 00000000000..7385beec8e6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui-3/cursor-auto-006.html @@ -0,0 +1,46 @@ +<!DOCTYPE html> +<title>CSS Basic User Interface Test: cursor:auto on editable elements</title> +<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/"> +<link rel="help" href="http://www.w3.org/TR/css3-ui/#cursor"> +<meta name="flags" content="interact"> +<meta charset="UTF-8"> +<meta name="assert" content="The 'auto' cursor value does the same as 'text' over editable elements."> +<style> +#test { + border: solid blue; + width: 200px; + cursor: auto; +} +#test * { + cursor: url("support/cursors/fail.png"), help !important; /* Override UA styles, regardless of specificity */ + cursor: auto !important; /* Override UA styles, regardless of specificity */ + resize: none; /* The appearance of the cursor over UA provided resize controls is out of scope. */ + overflow: hidden; /* The appearance of the cursor over UA provided scroll controls is out of scope */ +} +#ref { + width: 100px; + height: 100px; + cursor: text; + border: solid orange; +} +:root { + cursor: help; /* give the root element a different cursor so that + it is easy to tell if something changes when hovering the target.*/ +} + +[contenteditable] { + border: solid; + height: 1em; + margin: 5px; +} +</style> +<body> + <p>The test passes if, when moved over every element inside the blue box, the cursor looks like the text insertion and selection cursor.</p> + <p>Place the cursor into the orange box for a reference of what this should look like.</p> + <div id=test> + <textarea></textarea> + <input> + <div contenteditable=true style="border:solid"></div> + </div> + <div id=ref></div> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-ui-3/cursor-auto-007.html b/tests/wpt/web-platform-tests/css/css-ui-3/cursor-auto-007.html new file mode 100644 index 00000000000..6cf1495a02c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui-3/cursor-auto-007.html @@ -0,0 +1,55 @@ +<!DOCTYPE html> +<title>CSS Basic User Interface Test: cursor:auto on unselectable text</title> +<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/"> +<link rel="help" href="http://www.w3.org/TR/css3-ui/#cursor"> +<link rel="help" href="https://drafts.csswg.org/css-ui-4/#content-selection"> +<meta name="flags" content="interact"> +<meta charset="UTF-8"> +<meta name="assert" content="The 'auto' cursor value does the same as 'default' over unselectable text."> +<style> +#test { + border: solid blue; + width: 200px; + cursor: auto; +} +#test * { + cursor: url("support/cursors/fail.png"), help !important; /* Override UA styles, regardless of specificity */ + cursor: auto !important; /* Override UA styles, regardless of specificity */ +} +#ref { + width: 100px; + height: 100px; + cursor: default; + border: solid orange; +} +:root { + cursor: help; /* give the root element a different cursor so that + it is easy to tell if something changes when hovering the target.*/ +} + +/* Hide the text if we cannot make it unselectable. + user-select is not part of css-ui level 3, so we should not depend on it + but it is nice to test it if it is supported. + Test for level 4 can take the conditional out. */ +.unselectable { display: none; } +@supports (user-select: none) or (-webkit-user-select: none) { + .unselectable { + display: block; + user-select: none; + -webkit-user-select: none; /* Yes, vendor prefixes are ugly. But this one was grandfathered in and support is required by spec. */ + } +} + +</style> +<body> + <p>The test passes if, when moved over every element inside the blue box, the cursor remains the platform-dependent default cursor.</p> + <p>Place the cursor into the orange box for a reference of what this should look like.</p> + <div id=test> + <!-- text in a button is either not considered text because it's in a replaced element, + or it is text but it is unselectable, eitherway, we should get the default cursor--> + <button>Text in a button</button> + + <div class=unselectable>Unselectable text</div> + </div> + <div id=ref></div> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-ui-3/cursor-image-006.html b/tests/wpt/web-platform-tests/css/css-ui-3/cursor-image-006.html index d4b6b55afe7..c123a65f2a0 100644 --- a/tests/wpt/web-platform-tests/css/css-ui-3/cursor-image-006.html +++ b/tests/wpt/web-platform-tests/css/css-ui-3/cursor-image-006.html @@ -2,7 +2,7 @@ <title>CSS Basic User Interface Test: Cursor property, url value</title> <link rel="author" title="Chris Lilley" href="mailto:chris@w3.org"> <link rel="help" href="http://www.w3.org/TR/css3-ui/#cursor"> -<meta name="flags" content="interact image animated"> +<meta name="flags" content="interact image animated may"> <meta charset="UTF-8"> <meta name="assert" content="Test checks that an ANI image, with it's own hotspot, is supported as a custom cursor."> <style> diff --git a/tests/wpt/web-platform-tests/css/css3-color/t44-currentcolor-inherited-c-ref.xht b/tests/wpt/web-platform-tests/css/css3-color/t44-currentcolor-inherited-c-ref.xht new file mode 100644 index 00000000000..85a391d5a2c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css3-color/t44-currentcolor-inherited-c-ref.xht @@ -0,0 +1,15 @@ +<!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> + <title>"This paragraph" green background ref</title> + <style type="text/css"><![CDATA[ + p { + background: green; + color: white; + } + ]]></style> + </head> + <body> + <p>This paragraph should have a green background.</p> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css3-color/t44-currentcolor-inherited-c.xht b/tests/wpt/web-platform-tests/css/css3-color/t44-currentcolor-inherited-c.xht index 8b8fefccaf3..402dff16449 100644 --- a/tests/wpt/web-platform-tests/css/css3-color/t44-currentcolor-inherited-c.xht +++ b/tests/wpt/web-platform-tests/css/css3-color/t44-currentcolor-inherited-c.xht @@ -7,6 +7,7 @@ <link rel="reviewer" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact" /> <link rel="help" href="http://www.w3.org/TR/css3-color/#currentcolor" /> <link rel="help" href="http://www.w3.org/Style/2011/REC-css3-color-20110607-errata.html#s.4.5" /> + <link rel="match" href="t44-currentcolor-inherited-c-ref.xht" /> <meta name="flags" content="" /> <meta name="assert" content="currentColor is a computed value" /> <style type="text/css"><![CDATA[ diff --git a/tests/wpt/web-platform-tests/css/filter-effects-1/parsing/color-interpolation-filters-parsing-invalid.html b/tests/wpt/web-platform-tests/css/filter-effects-1/parsing/color-interpolation-filters-parsing-invalid.html new file mode 100644 index 00000000000..3aca3734eaa --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects-1/parsing/color-interpolation-filters-parsing-invalid.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Filter Effects Module Level 1: parsing color-interpolation-filters with invalid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects/#ColorInterpolationFiltersProperty"> +<meta name="assert" content="color-interpolation-filters supports only the grammar 'auto | sRGB | linearRGB'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_invalid_value("color-interpolation-filters", "none"); +test_invalid_value("color-interpolation-filters", "linearRGB sRGB"); +test_invalid_value("color-interpolation-filters", "auto sRGB linearRGB"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/filter-effects-1/parsing/color-interpolation-filters-parsing-valid.html b/tests/wpt/web-platform-tests/css/filter-effects-1/parsing/color-interpolation-filters-parsing-valid.html new file mode 100644 index 00000000000..d2e89a36258 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects-1/parsing/color-interpolation-filters-parsing-valid.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Filter Effects Module Level 1: parsing color-interpolation-filters with valid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects/#ColorInterpolationFiltersProperty"> +<meta name="assert" content="color-interpolation-filters supports the full grammar 'auto | sRGB | linearRGB'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_valid_value("color-interpolation-filters", "auto"); + +// Blink serializes these keywords as mixed case. Firefox serializes as lowercase. +test_valid_value("color-interpolation-filters", "sRGB", ["sRGB", "srgb"]); +test_valid_value("color-interpolation-filters", "srgb", ["sRGB", "srgb"]); +test_valid_value("color-interpolation-filters", "SrGb", ["sRGB", "srgb"]); +test_valid_value("color-interpolation-filters", "linearRGB", ["linearRGB", "linearrgb"]); +test_valid_value("color-interpolation-filters", "linearrgb", ["linearRGB", "linearrgb"]); +test_valid_value("color-interpolation-filters", "LiNeArRgB", ["linearRGB", "linearrgb"]); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/filter-effects-1/parsing/filter-parsing-invalid.html b/tests/wpt/web-platform-tests/css/filter-effects-1/parsing/filter-parsing-invalid.html new file mode 100644 index 00000000000..add2875716d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects-1/parsing/filter-parsing-invalid.html @@ -0,0 +1,65 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Filter Effects Module Level 1: parsing filter with invalid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects/#FilterProperty"> +<meta name="assert" content="filter supports only the grammar 'none | <filter-function-list>'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +// Edge fails: expected "" but got "none" + +test_invalid_value("filter", "auto"); +test_invalid_value("filter", "none hue-rotate(0deg)"); + +test_invalid_value("filter", "blur(10)"); +test_invalid_value("filter", "blur(-100px)"); +test_invalid_value("filter", "blur()"); // crbug.com/618960 Blink/WebKit accept no arguments for all but drop-shadow. + +test_invalid_value("filter", "brightness(-20)"); // crbug.com/776208 Blink/WebKit accept negative brightness. +test_invalid_value("filter", "brightness(30px)"); +test_invalid_value("filter", "brightness()"); + +test_invalid_value("filter", "contrast(-20)"); +test_invalid_value("filter", "contrast(30px)"); +test_invalid_value("filter", "contrast()"); + +test_invalid_value("filter", "drop-shadow(10 20)"); +test_invalid_value("filter", "drop-shadow(10% 20%)"); +test_invalid_value("filter", "drop-shadow(1px)"); +test_invalid_value("filter", "drop-shadow(1px 2px 3px 4px)"); +test_invalid_value("filter", "drop-shadow(rgb(4, 5, 6))"); +// https://github.com/w3c/fxtf-drafts/issues/231 +test_invalid_value("filter", "drop-shadow(rgb(4, 5, 6) 1px 2px)"); // Fails in Blink/WebKit "drop-shadow(rgb(4, 5, 6) 1px 2px)" and Firefox "drop-shadow(1px 2px rgb(4, 5, 6))". +test_invalid_value("filter", "drop-shadow()"); + +test_invalid_value("filter", "grayscale(-20)"); +test_invalid_value("filter", "grayscale(30px)"); +test_invalid_value("filter", "grayscale()"); + +test_invalid_value("filter", "hue-rotate(90)"); +test_invalid_value("filter", "hue-rotate()"); + +test_invalid_value("filter", "invert(-20)"); +test_invalid_value("filter", "invert(30px)"); +test_invalid_value("filter", "invert()"); + +test_invalid_value("filter", "opacity(-20)"); +test_invalid_value("filter", "opacity(30px)"); +test_invalid_value("filter", "opacity()"); + +test_invalid_value("filter", "saturate(-20)"); +test_invalid_value("filter", "saturate(30px)"); +test_invalid_value("filter", "saturate()"); + +test_invalid_value("filter", "sepia(-20)"); +test_invalid_value("filter", "sepia(30px)"); +test_invalid_value("filter", "sepia()"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/filter-effects-1/parsing/filter-parsing-valid.html b/tests/wpt/web-platform-tests/css/filter-effects-1/parsing/filter-parsing-valid.html new file mode 100644 index 00000000000..d7e0af4a78a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects-1/parsing/filter-parsing-valid.html @@ -0,0 +1,61 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Filter Effects Module Level 1: parsing filter with valid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects/#FilterProperty"> +<meta name="assert" content="filter supports the full grammar 'none | <filter-function-list>'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_valid_value("filter", "none"); + +test_valid_value("filter", "blur(100px)"); +test_valid_value("filter", "blur(0)", "blur(0px)"); + +test_valid_value("filter", "brightness(0)"); +test_valid_value("filter", "brightness(300%)"); + +test_valid_value("filter", "contrast(0)"); +test_valid_value("filter", "contrast(300%)"); + +test_valid_value("filter", "drop-shadow(1px 2px)"); +test_valid_value("filter", "drop-shadow(1px 2px 3px)"); +test_valid_value("filter", "drop-shadow(0 0 0)", "drop-shadow(0px 0px 0px)"); +// https://github.com/w3c/fxtf-drafts/issues/231 +test_valid_value("filter", "drop-shadow(1px 2px rgb(4, 5, 6))"); // Blink/WebKit serialize as "drop-shadow(rgb(4, 5, 6) 1px 2px)" +test_valid_value("filter", "drop-shadow(1px 2px 3px rgba(4, 5, 6, 0.75))"); // Blink/WebKit serialize as "drop-shadow(rgba(4, 5, 6, 0.75) 1px 2px 3px)" + +test_valid_value("filter", "grayscale(0)"); +test_valid_value("filter", "grayscale(300%)", "grayscale(100%)"); + +test_valid_value("filter", "hue-rotate(90deg)"); +test_valid_value("filter", "hue-rotate(0)", "hue-rotate(0deg)"); // https://github.com/w3c/fxtf-drafts/issues/228 + +test_valid_value("filter", "invert(0)"); +test_valid_value("filter", "invert(300%)", "invert(100%)"); + +test_valid_value("filter", "opacity(0)"); +test_valid_value("filter", "opacity(300%)", "opacity(100%)"); + +test_valid_value("filter", "saturate(0)"); +test_valid_value("filter", "saturate(300%)"); + +test_valid_value("filter", "sepia(0)"); +test_valid_value("filter", "sepia(300%)", "sepia(100%)"); + +// Edge serializes url(...) without quotes. Blink/WebKit and Firefox use quotes. +test_valid_value("filter", "url(picture.svg#f)", ['url("picture.svg#f")', 'url(picture.svg#f)']); + +test_valid_value("filter", 'url("https://www.example.com/picture.svg#f")', + ['url("https://www.example.com/picture.svg#f")', 'url(https://www.example.com/picture.svg#f)']); + +test_valid_value("filter", 'blur(10px) url("picture.svg#f") contrast(20) brightness(30)', + ['blur(10px) url("picture.svg#f") contrast(20) brightness(30)', 'blur(10px) url(picture.svg#f) contrast(20) brightness(30)']); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/filter-effects-1/parsing/lighting-color-parsing-invalid.html b/tests/wpt/web-platform-tests/css/filter-effects-1/parsing/lighting-color-parsing-invalid.html new file mode 100644 index 00000000000..b74888ee9f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects-1/parsing/lighting-color-parsing-invalid.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Filter Effects Module Level 1: parsing lighting-color with invalid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects/#LightingColorProperty"> +<meta name="assert" content="lighting-color supports only the grammar 'auto | sRGB | linearRGB'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_invalid_value("lighting-color", "auto"); +test_invalid_value("lighting-color", "none"); +test_invalid_value("lighting-color", "#a"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/filter-effects-1/parsing/lighting-color-parsing-valid.html b/tests/wpt/web-platform-tests/css/filter-effects-1/parsing/lighting-color-parsing-valid.html new file mode 100644 index 00000000000..2dd316327a8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects-1/parsing/lighting-color-parsing-valid.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Filter Effects Module Level 1: parsing lighting-color with valid values</title> +<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/filter-effects/#LightingColorProperty"> +<meta name="assert" content="lighting-color supports the full grammar 'auto | sRGB | linearRGB'."> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/parsing-testcommon.js"></script> +</head> +<body> +<script> +test_valid_value("lighting-color", "rgb(1,2,3)", "rgb(1, 2, 3)"); +test_valid_value("lighting-color", "#102030", "rgb(16, 32, 48)"); +test_valid_value("lighting-color", "rgba(1, 2, 3, 0.5)"); + +// Edge serializes this keyword as mixed case. Blink, WebKit, Firefox serialize as lowercase. +test_valid_value("lighting-color", "currentColor", ["currentColor", "currentcolor"]); +test_valid_value("lighting-color", "currentcolor", ["currentColor", "currentcolor"]); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/filter-effects-1/parsing/resources/parsing-testcommon.js b/tests/wpt/web-platform-tests/css/filter-effects-1/parsing/resources/parsing-testcommon.js new file mode 100644 index 00000000000..70a1c38fb38 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects-1/parsing/resources/parsing-testcommon.js @@ -0,0 +1,37 @@ +'use strict'; + +function test_valid_value(property, value, serializedValue) { + if (arguments.length < 3) + serializedValue = value; + + var stringifiedValue = JSON.stringify(value); + + test(function(){ + var div = document.createElement('div'); + div.style[property] = value; + assert_not_equals(div.style[property], ""); + }, "e.style['" + property + "'] = " + stringifiedValue + " should set the property value"); + + test(function(){ + var div = document.createElement('div'); + div.style[property] = value; + var readValue = div.style[property]; + + if (Array.isArray(serializedValue)) + assert_true(serializedValue.indexOf(readValue) >= 0, '"' + readValue + '" in ' + JSON.stringify(serializedValue)); + else + assert_equals(readValue, serializedValue); + div.style[property] = readValue; + assert_equals(div.style[property], readValue); + }, "Serialization should round-trip after setting e.style['" + property + "'] = " + stringifiedValue); +} + +function test_invalid_value(property, value) { + var stringifiedValue = JSON.stringify(value); + + test(function(){ + var div = document.createElement('div'); + div.style[property] = value; + assert_equals(div.style[property], ""); + }, "e.style['" + property + "'] = " + stringifiedValue + " should not set the property value"); +} diff --git a/tests/wpt/web-platform-tests/cssom-view/overscrollBehavior-manual.html b/tests/wpt/web-platform-tests/cssom-view/overscrollBehavior-manual.html new file mode 100644 index 00000000000..b37c4dc770c --- /dev/null +++ b/tests/wpt/web-platform-tests/cssom-view/overscrollBehavior-manual.html @@ -0,0 +1,151 @@ +<!doctype html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<style> +.outer { + height: 400px; + width: 1000px; + background: white +} +.content { + height: 600px; + width: 1200px; +} +#root { + overflow: scroll; + height: 600px; + width: 800px; + background: white; +} +#container { + overflow: scroll; +} +#non_scrollable { + overflow: none; +} +#green { + background: repeating-linear-gradient(to bottom right, green 15%, white 30%); +} +#blue { + background: repeating-linear-gradient(to bottom right, blue 15%, white 30%); +} +</style> + +<div id='root'> + <div id='non_scrollable' class='outer'> + <div id='green' class='content'></div> + </div> + <div id='container' class='outer'> + <div id='blue' class='content'></div> + </div> +</div> +<input type="button" id="btnDone" value="DONE" style="width: 100px; height: 50px;"/> +<h1>overscroll-behavior</h1> +<h4>Tests that overscroll-behavior prevents scroll-propagation in the area and direction as specified.</h4> +<ol> + <li id="i1">Make two scrolls on <span style="color: blue">BLUE</span>, in this order: scroll UP (or drag down), then scroll LEFT (or drag right). Scroll (or drag) until nothing is scrolling. Then tap on DONE.</li> + <li id="i2">Repeat the same scrolls as in step 1 and then tap on DONE.</li> + <li id="i3">Repeat the same scrolls as in step 1 and then tap on DONE.</li> + <li id="i4">Make two separate scrolls on <span style="color: green">GREEN</span>, in this order: scroll UP (or drag down), then scroll LEFT (or drag right). Scroll (or drag) until nothing is scrolling. Then tap on DONE.</li> +</ol> + + +<script> +const container = document.getElementById('container'); +const non_scrollable = document.getElementById('non_scrollable'); +const root = document.getElementById('root'); +var test = async_test("overscroll-behavior prevents scroll-propagation in the area and direction as specified"); +var instruction1 = document.getElementById("i1"); +var instruction2 = document.getElementById("i2"); +var instruction3 = document.getElementById("i3"); +var instruction4 = document.getElementById("i4"); + +function setUpForRoot(offset) { + root.scrollTop = offset; + root.scrollLeft = offset; +} + +function setUpForContainer(offset) { + container.scrollTop = offset; + container.scrollLeft = offset +} + +function set_boundary_prevents_y() { + instruction1.style.color = 'red'; + instruction1.style.fontWeight = 'bold'; + container.style.overscrollBehaviorX = 'auto'; + container.style.overscrollBehaviorY = 'none'; + setUpForRoot(100); + setUpForContainer(0); +} + +function verify_y_prevented_and_set_boundary_prevents_x() { + instruction1.style.fontWeight = 'normal'; + instruction2.style.fontWeight = 'bold'; + test.step(function() { + assert_equals(root.scrollTop, 100); + assert_equals(root.scrollLeft, 0); + }, "overscroll-behavior-y: none should only prevent scroll propagation on y axis."); + + container.style.overscrollBehaviorX = 'none'; + container.style.overscrollBehaviorY = 'auto'; + setUpForRoot(100); + setUpForContainer(0); +} + +function verify_x_prevented_and_set_boundary_allows_inner() { + instruction2.style.fontWeight = 'normal'; + instruction3.style.fontWeight = 'bold'; + test.step(function() { + assert_equals(root.scrollTop, 0); + assert_equals(root.scrollLeft, 100); + }, "overscroll-behavior-x: none should only prevent scroll propagation on x axis."); + + container.style.overscrollBehaviorX = 'none'; + container.style.overscrollBehaviorY = 'none'; + setUpForRoot(100); + setUpForContainer(100); +} + +function verify_inner_allowed_and_set_nonscrollable_allows_propagation() { + instruction1.style.color = 'black'; + instruction4.style.color = 'red'; + instruction3.style.fontWeight = 'normal'; + instruction4.style.fontWeight = 'bold'; + test.step(function() { + assert_equals(container.scrollTop, 0); + assert_equals(container.scrollLeft, 0); + assert_equals(root.scrollTop, 100); + assert_equals(root.scrollLeft, 100); + }, "overscroll-behavior should latch the scroll to the inner container."); + + non_scrollable.style.overscrollBehaviorX = 'none'; + non_scrollable.style.overscrollBehaviorY = 'none'; + setUpForRoot(100); +} + +function verify_non_scrollable_allows_propagation() { + test.step(function() { + assert_equals(root.scrollLeft, 0); + assert_equals(root.scrollTop, 0); + }, "overscroll-behavior on non-scrollable area should not affect scroll propagation."); + test.done(); +} + +var verifyAndSetupForNext = [ + set_boundary_prevents_y, + verify_y_prevented_and_set_boundary_prevents_x, + verify_x_prevented_and_set_boundary_allows_inner, + verify_inner_allowed_and_set_nonscrollable_allows_propagation, + verify_non_scrollable_allows_propagation]; + +on_event(document.getElementById("btnDone"), "click", function() { + if (current_test < verifyAndSetupForNext.length) + verifyAndSetupForNext[current_test++](); +}); + +var current_test = 0; +verifyAndSetupForNext[current_test++](); + +</script> diff --git a/tests/wpt/web-platform-tests/cssom-view/scrollBoundaryBehavior-manual.html b/tests/wpt/web-platform-tests/cssom-view/scrollBoundaryBehavior-manual.html deleted file mode 100644 index efd00437bde..00000000000 --- a/tests/wpt/web-platform-tests/cssom-view/scrollBoundaryBehavior-manual.html +++ /dev/null @@ -1,151 +0,0 @@ -<!doctype html> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> - -<style> -.outer { - height: 400px; - width: 1000px; - background: white -} -.content { - height: 600px; - width: 1200px; -} -#root { - overflow: scroll; - height: 600px; - width: 800px; - background: white; -} -#container { - overflow: scroll; -} -#non_scrollable { - overflow: none; -} -#green { - background: repeating-linear-gradient(to bottom right, green 15%, white 30%); -} -#blue { - background: repeating-linear-gradient(to bottom right, blue 15%, white 30%); -} -</style> - -<div id='root'> - <div id='non_scrollable' class='outer'> - <div id='green' class='content'></div> - </div> - <div id='container' class='outer'> - <div id='blue' class='content'></div> - </div> -</div> -<input type="button" id="btnDone" value="DONE" style="width: 100px; height: 50px;"/> -<h1>scroll-boundary-behavior</h1> -<h4>Tests that scroll-boundary-behavior prevents scroll-propagation in the area and direction as specified.</h4> -<ol> - <li id="i1">Make two scrolls on <span style="color: blue">BLUE</span>, in this order: scroll UP (or drag down), then scroll LEFT (or drag right). Scroll (or drag) until nothing is scrolling. Then tap on DONE.</li> - <li id="i2">Repeat the same scrolls as in step 1 and then tap on DONE.</li> - <li id="i3">Repeat the same scrolls as in step 1 and then tap on DONE.</li> - <li id="i4">Make two separate scrolls on <span style="color: green">GREEN</span>, in this order: scroll UP (or drag down), then scroll LEFT (or drag right). Scroll (or drag) until nothing is scrolling. Then tap on DONE.</li> -</ol> - - -<script> -const container = document.getElementById('container'); -const non_scrollable = document.getElementById('non_scrollable'); -const root = document.getElementById('root'); -var test = async_test("scroll-boundary-behavior prevents scroll-propagation in the area and direction as specified"); -var instruction1 = document.getElementById("i1"); -var instruction2 = document.getElementById("i2"); -var instruction3 = document.getElementById("i3"); -var instruction4 = document.getElementById("i4"); - -function setUpForRoot(offset) { - root.scrollTop = offset; - root.scrollLeft = offset; -} - -function setUpForContainer(offset) { - container.scrollTop = offset; - container.scrollLeft = offset -} - -function set_boundary_prevents_y() { - instruction1.style.color = 'red'; - instruction1.style.fontWeight = 'bold'; - container.style.scrollBoundaryBehaviorX = 'auto'; - container.style.scrollBoundaryBehaviorY = 'none'; - setUpForRoot(100); - setUpForContainer(0); -} - -function verify_y_prevented_and_set_boundary_prevents_x() { - instruction1.style.fontWeight = 'normal'; - instruction2.style.fontWeight = 'bold'; - test.step(function() { - assert_equals(root.scrollTop, 100); - assert_equals(root.scrollLeft, 0); - }, "scroll-boundary-behavior-y: none should only prevent scroll propagation on y axis."); - - container.style.scrollBoundaryBehaviorX = 'none'; - container.style.scrollBoundaryBehaviorY = 'auto'; - setUpForRoot(100); - setUpForContainer(0); -} - -function verify_x_prevented_and_set_boundary_allows_inner() { - instruction2.style.fontWeight = 'normal'; - instruction3.style.fontWeight = 'bold'; - test.step(function() { - assert_equals(root.scrollTop, 0); - assert_equals(root.scrollLeft, 100); - }, "scroll-boundary-behavior-x: none should only prevent scroll propagation on x axis."); - - container.style.scrollBoundaryBehaviorX = 'none'; - container.style.scrollBoundaryBehaviorY = 'none'; - setUpForRoot(100); - setUpForContainer(100); -} - -function verify_inner_allowed_and_set_nonscrollable_allows_propagation() { - instruction1.style.color = 'black'; - instruction4.style.color = 'red'; - instruction3.style.fontWeight = 'normal'; - instruction4.style.fontWeight = 'bold'; - test.step(function() { - assert_equals(container.scrollTop, 0); - assert_equals(container.scrollLeft, 0); - assert_equals(root.scrollTop, 100); - assert_equals(root.scrollLeft, 100); - }, "scroll-boundary-behavior should latch the scroll to the inner container."); - - non_scrollable.style.scrollBoundaryBehaviorX = 'none'; - non_scrollable.style.scrollBoundaryBehaviorY = 'none'; - setUpForRoot(100); -} - -function verify_non_scrollable_allows_propagation() { - test.step(function() { - assert_equals(root.scrollLeft, 0); - assert_equals(root.scrollTop, 0); - }, "scroll-boundary-behavior on non-scrollable area should not affect scroll propagation."); - test.done(); -} - -var verifyAndSetupForNext = [ - set_boundary_prevents_y, - verify_y_prevented_and_set_boundary_prevents_x, - verify_x_prevented_and_set_boundary_allows_inner, - verify_inner_allowed_and_set_nonscrollable_allows_propagation, - verify_non_scrollable_allows_propagation]; - -on_event(document.getElementById("btnDone"), "click", function() { - if (current_test < verifyAndSetupForNext.length) - verifyAndSetupForNext[current_test++](); -}); - -var current_test = 0; -verifyAndSetupForNext[current_test++](); - -</script> diff --git a/tests/wpt/web-platform-tests/encrypted-media/encrypted-media-default-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/encrypted-media/encrypted-media-default-feature-policy.https.sub.html index 1514d306f30..e1ad3c5881b 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/encrypted-media-default-feature-policy.https.sub.html +++ b/tests/wpt/web-platform-tests/encrypted-media/encrypted-media-default-feature-policy.https.sub.html @@ -9,7 +9,7 @@ run_all_fp_tests_allow_self( 'https://{{domains[www]}}:{{ports[https][0]}}', 'encrypted-media', - 'NotSupportedError: requestMediaKeySystemAccess is disabled by feature ' + + 'SecurityError: requestMediaKeySystemAccess is disabled by feature ' + 'policy.', function() { return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{ diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/keepalive.html b/tests/wpt/web-platform-tests/fetch/api/basic/keepalive.html new file mode 100644 index 00000000000..5316410004a --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/basic/keepalive.html @@ -0,0 +1,31 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<title>Fetch API: keepalive handling</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<body> +<script> +const host_info = get_host_info(); +promise_test(async (test) => { + const iframe = document.createElement('iframe'); + iframe.src = host_info.HTTP_REMOTE_ORIGIN + + '/fetch/api/resources/keepalive-iframe.html'; + document.body.appendChild(iframe); + const uuid_promise = new Promise((resolve) => { + window.addEventListener('message', (event) => { + resolve(event.data); + }); + }); + await (new Promise((resolve) => iframe.addEventListener('load', resolve))); + const uuid = await uuid_promise; + iframe.remove(); + await (new Promise((resolve) => test.step_timeout(resolve, 1000))); + const response = await fetch(`../resources/stash-take.py?key=${uuid}`); + const json = await response.json(); + assert_equals(json, 'on'); +}); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/fetch/api/request/request-keepalive.html b/tests/wpt/web-platform-tests/fetch/api/request/request-keepalive.html new file mode 100644 index 00000000000..c9e1a6acdd3 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/request/request-keepalive.html @@ -0,0 +1,28 @@ +<!doctype html> +<html> +<head> +<meta charset="utf-8"> +<title>Request keepalive</title> +<meta name="help" href="https://fetch.spec.whatwg.org/#request"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/utils.js"></script> +<script src="/common/get-host-info.sub.js"></script> +</head> +<body> +<script> +test(() => { + assert_false(new Request('/').keepalive, 'default'); + assert_true(new Request('/', {keepalive: true}).keepalive, 'true'); + assert_false(new Request('/', {keepalive: false}).keepalive, 'false'); + assert_true(new Request('/', {keepalive: 1}).keepalive, 'truish'); + assert_false(new Request('/', {keepalive: 0}).keepalive, 'falsy'); +}, 'keepalive flag'); + +test(() => { + const init = {method: 'POST', keepalive: true, body: new ReadableStream()}; + assert_throws('TypeError', () => {new Request('/', init)}); +}, 'keepalive flag with stream body'); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/fetch/api/resources/keepalive-iframe.html b/tests/wpt/web-platform-tests/fetch/api/resources/keepalive-iframe.html new file mode 100644 index 00000000000..742309ab4d2 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/resources/keepalive-iframe.html @@ -0,0 +1,17 @@ +<!doctype html> +<html> +<meta charset="utf-8"> +<script src="/common/utils.js"></script> +<script> +const uuid = token(); +const URL = + `../resources/redirect.py?` + + `delay=100&` + + `location=../resources/stash-put.py?key=${uuid}%26value=on`; + +addEventListener('load', () => { + let p = fetch(URL, {keepalive: true}); + window.parent.postMessage(uuid, '*'); +}); +</script> +</html> diff --git a/tests/wpt/web-platform-tests/fetch/api/resources/redirect.py b/tests/wpt/web-platform-tests/fetch/api/resources/redirect.py index 5184be1f611..3d313e5b0b4 100644 --- a/tests/wpt/web-platform-tests/fetch/api/resources/redirect.py +++ b/tests/wpt/web-platform-tests/fetch/api/resources/redirect.py @@ -1,5 +1,6 @@ from urllib import urlencode from urlparse import urlparse +import time def main(request, response): stashed_data = {'count': 0, 'preflight': "0"} @@ -48,6 +49,9 @@ def main(request, response): if "redirect_referrerpolicy" in request.GET: headers.append(("Referrer-Policy", request.GET['redirect_referrerpolicy'])) + if "delay" in request.GET: + time.sleep(float(request.GET.first("delay", 0)) / 1E3) + if token: request.server.stash.put(request.GET.first("token"), stashed_data) if "max_count" in request.GET: diff --git a/tests/wpt/web-platform-tests/generic-sensor/SensorErrorEvent-constructor.html b/tests/wpt/web-platform-tests/generic-sensor/SensorErrorEvent-constructor.https.html index 6e2d1684f57..6e2d1684f57 100644 --- a/tests/wpt/web-platform-tests/generic-sensor/SensorErrorEvent-constructor.html +++ b/tests/wpt/web-platform-tests/generic-sensor/SensorErrorEvent-constructor.https.html diff --git a/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js b/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js index b0671634622..aa9a2522752 100644 --- a/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js +++ b/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js @@ -40,8 +40,10 @@ function runGenericSensorTests(sensorType) { let sensor = new sensorType(); sensor.onreading = t.step_func_done(() => { assert_reading_not_null(sensor); + assert_true(sensor.hasReading); sensor.stop(); assert_reading_null(sensor); + assert_false(sensor.hasReading); }); sensor.onerror = t.step_func_done(unreached); sensor.start(); @@ -192,8 +194,8 @@ function runGenericSensorTests(sensorType) { function runGenericSensorInsecureContext(sensorType) { test(() => { - assert_throws('SecurityError', () => { new sensorType(); }); - }, `${sensorType.name}: throw a 'SecurityError' when construct sensor in an insecure context`); + assert_false(sensorType in window, `${sensorType} must not be exposed`); + }, `${sensorType} is not exposed in an insecure context`); } function runGenericSensorOnerror(sensorType) { diff --git a/tests/wpt/web-platform-tests/gyroscope/Gyroscope_insecure_context.html b/tests/wpt/web-platform-tests/gyroscope/Gyroscope_insecure_context.html index f772b0a2540..2ae8117d708 100644 --- a/tests/wpt/web-platform-tests/gyroscope/Gyroscope_insecure_context.html +++ b/tests/wpt/web-platform-tests/gyroscope/Gyroscope_insecure_context.html @@ -15,6 +15,6 @@ </ol> <script> -runGenericSensorInsecureContext(Gyroscope); +runGenericSensorInsecureContext("Gyroscope"); </script> diff --git a/tests/wpt/web-platform-tests/gyroscope/idlharness.https.html b/tests/wpt/web-platform-tests/gyroscope/idlharness.https.html index ca8f69d94d5..d6911988cb7 100644 --- a/tests/wpt/web-platform-tests/gyroscope/idlharness.https.html +++ b/tests/wpt/web-platform-tests/gyroscope/idlharness.https.html @@ -24,6 +24,7 @@ interface EventHandler { [SecureContext, Exposed=Window] interface Sensor : EventTarget { readonly attribute boolean activated; + readonly attribute boolean hasReading; readonly attribute DOMHighResTimeStamp? timestamp; void start(); void stop(); @@ -34,9 +35,9 @@ interface Sensor : EventTarget { [Constructor(optional SensorOptions sensorOptions), Exposed=Window] interface Gyroscope : Sensor { - readonly attribute unrestricted double? x; - readonly attribute unrestricted double? y; - readonly attribute unrestricted double? z; + readonly attribute double? x; + readonly attribute double? y; + readonly attribute double? z; }; </script> diff --git a/tests/wpt/web-platform-tests/html/dom/elements-embedded.js b/tests/wpt/web-platform-tests/html/dom/elements-embedded.js index 64e7416cb94..176da29d4f6 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements-embedded.js +++ b/tests/wpt/web-platform-tests/html/dom/elements-embedded.js @@ -33,6 +33,7 @@ var embeddedElements = { width: "string", height: "string", referrerPolicy: {type: "enum", keywords: ["", "no-referrer", "no-referrer-when-downgrade", "same-origin", "origin", "strict-origin", "origin-when-cross-origin", "strict-origin-when-cross-origin", "unsafe-url"]}, + delegateStickyUserActivation: {type: "enum", keywords: ["vibration", "media"], defaultVal: null}, // Obsolete align: "string", diff --git a/tests/wpt/web-platform-tests/html/editing/focus/processing-model/preventScroll.html b/tests/wpt/web-platform-tests/html/editing/focus/processing-model/preventScroll.html new file mode 100644 index 00000000000..fda9480e8b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/focus/processing-model/preventScroll.html @@ -0,0 +1,75 @@ +<!doctype html> +<title>focus(options) - preventScroll</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<style> +#iframe { width: 500px; height: 500px; border: none } +</style> +<iframe id=iframe src="support/preventScroll-helper.html"></iframe> +<script> +function isEntirelyInView(elm, win) { + const inViewHorizontal = (elm.offsetLeft >= win.scrollX) && + ((elm.offsetLeft + elm.clientWidth) <= (win.scrollX + win.innerWidth)); + const inViewVertical = (elm.offsetTop >= win.scrollY) && + ((elm.offsetTop + elm.clientHeight) <= (win.scrollY + win.innerHeight)); + return inViewHorizontal && inViewVertical; +} + +setup({explicit_done: true}); + +function resetState(win) { + win.scrollTo(0, 0); + win.document.activeElement.blur(); +} + +onload = () => { + const win = document.getElementById('iframe').contentWindow; + const elm = win.document.getElementById('button'); + + test(() => { + assert_false(isEntirelyInView(elm, win), 'initial state'); + elm.scrollIntoView(); + assert_true(isEntirelyInView(elm, win), 'after elm.scrollIntoView()'); + resetState(win); + assert_false(isEntirelyInView(elm, win), 'after resetScrollPosition(win)'); + }, 'Sanity test'); + + test(() => { + resetState(win); + elm.focus(); + assert_true(isEntirelyInView(elm, win)); + }, 'elm.focus() without arguments'); + + test(() => { + resetState(win); + elm.focus(undefined); + assert_true(isEntirelyInView(elm, win)); + }, 'elm.focus(undefined)'); + + test(() => { + resetState(win); + elm.focus(null); + assert_true(isEntirelyInView(elm, win)); + }, 'elm.focus(null)'); + + test(() => { + resetState(win); + elm.focus({}); + assert_true(isEntirelyInView(elm, win)); + }, 'elm.focus({})'); + + test(() => { + resetState(win); + elm.focus({preventScroll: false}); + assert_true(isEntirelyInView(elm, win)); + }, 'elm.focus({preventScroll: false})'); + + test(() => { + resetState(win); + elm.focus({preventScroll: true}); + assert_false(isEntirelyInView(elm, win)); + }, 'elm.focus({preventScroll: true})'); + + done(); +} +</script> diff --git a/tests/wpt/web-platform-tests/html/editing/focus/processing-model/support/preventScroll-helper.html b/tests/wpt/web-platform-tests/html/editing/focus/processing-model/support/preventScroll-helper.html new file mode 100644 index 00000000000..43c6d86a578 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/focus/processing-model/support/preventScroll-helper.html @@ -0,0 +1,6 @@ +<!doctype html> +<title>Helper document for preventScroll test</title> +<style> +body { padding: 2000px } +</style> +<button id=button>X</button> diff --git a/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/resources/resolve-url.js b/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/resources/resolve-url.js index 907b5fb1a50..769b41bcc27 100644 --- a/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/resources/resolve-url.js +++ b/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/resources/resolve-url.js @@ -35,7 +35,7 @@ onload = function() { // page and the test timing out test_obj.force_timeout(); } - setTimeout(poll, 200); + step_timeout(poll, 200); } else { assert_equals(xhr.response, expected); test_obj.done(); @@ -43,7 +43,7 @@ onload = function() { }); xhr.send(); }) - setTimeout(poll, 200); + step_timeout(poll, 200); } // background attribute, check with getComputedStyle diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-enabled.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-enabled.html new file mode 100644 index 00000000000..87a130c6f01 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-enabled.html @@ -0,0 +1,16 @@ +<!DOCTYPE html> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +</head> +<body> +<dialog></dialog> +<script> +test(function() { + dialog = document.querySelector('dialog') + assert_true(dialog instanceof HTMLDialogElement); +}, "The DIALOG element should be recognized"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-return-value.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-return-value.html new file mode 100644 index 00000000000..2a80de65a15 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-return-value.html @@ -0,0 +1,54 @@ +<!DOCTYPE html> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +</head> +<body> +<dialog></dialog> +<script> +test(function() { + dialog = document.querySelector('dialog'); + assert_equals(dialog.returnValue, ''); + + dialog.returnValue = 'Setting value directly'; + assert_equals(dialog.returnValue, 'Setting value directly'); + + dialog.returnValue = null; + assert_equals(dialog.returnValue, 'null'); + + dialog.returnValue = ''; + assert_equals(dialog.returnValue, ''); + + dialog.returnValue = 7; + assert_equals(dialog.returnValue, '7'); + + dialog.show(); + dialog.close('Return value set from close()'); + assert_equals(dialog.returnValue, 'Return value set from close()'); + + dialog.show(); + dialog.close(''); + assert_equals(dialog.returnValue, ''); + + dialog.show(); + dialog.close(null); + assert_equals(dialog.returnValue, 'null'); + + dialog.returnValue = 'Should not change because no argument to close()'; + dialog.show(); + dialog.close(); + assert_equals(dialog.returnValue, 'Should not change because no argument to close()'); + + dialog.returnValue = 'Should not change because of undefined argument to close()'; + dialog.show(); + dialog.close(undefined); + assert_equals(dialog.returnValue, 'Should not change because of undefined argument to close()'); + + dialog.returnValue = 'Should not change because of no-op close()'; + dialog.close('blah'); + assert_equals(dialog.returnValue, 'Should not change because of no-op close()'); +}, "Tests dialog.returnValue is settable and returns the last value set."); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/show-modal-focusing-steps.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/show-modal-focusing-steps.html new file mode 100644 index 00000000000..164b41459d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/show-modal-focusing-steps.html @@ -0,0 +1,63 @@ +<!DOCTYPE html> +<html> +<head> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="./resources/common.js"></script> +<script> +promise_test(() => { + return waitUntilLoadedAndAutofocused().then(() => { + outerButton = document.getElementById('outer-button'); + assert_equals(document.activeElement, outerButton); + + // Test that focus goes to body if the dialog has no focusable elements, including itself + var outerDialog = document.getElementById('outer-dialog'); + outerDialog.showModal(); + assert_equals(document.activeElement, document.body); + + // Test that an autofocus element in the dialog gets focus. + var dialog = document.getElementById('dialog'); + dialog.showModal(); + autofocusButton = document.getElementById('autofocus-button'); + assert_equals(document.activeElement, autofocusButton); + dialog.close(); + + // ... or else first focusable element in the dialog gets focus. + autofocusButton.parentNode.removeChild(autofocusButton); + dialog.showModal(); + firstButton = document.getElementById('first-button'); + assert_equals(document.activeElement, firstButton); + dialog.close(); + + // ... or else the dialog itself gets focus.; + var buttons = dialog.querySelectorAll('button'); + for (var i = 0; i < buttons.length; ++i) + buttons[i].hidden = true; + dialog.showModal(); + assert_equals(document.activeElement, dialog); + dialog.close(); + + document.getElementById('outer-dialog').close(); + }); +}, "focus when a modal dialog is opened"); +</script> +</head> +<body> +<button id="outer-button" autofocus></button> +<dialog id="outer-dialog"> + <dialog id="dialog" tabindex=0> + <button disabled></button> + <dialog> + <button autofocus></button> + </dialog> + <button id="first-button"></button> + <div> + <span> + <button id="autofocus-button" autofocus></button> + </span> + </div> + <button id="final-button"></button> + </dialog> +</dialog> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-error.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-error.html deleted file mode 100644 index 3a04395678f..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-error.html +++ /dev/null @@ -1,21 +0,0 @@ -<!DOCTYPE html> -<title>Basic dynamic imports</title> -<link rel="author" title="Kouhei Ueno" href="mailto:kouhei@chromium.org"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script type="module"> -promise_test(t => { - return promise_rejects(t, new SyntaxError, import("../syntaxerror.js")); -}, "Dynamic imports should reject if the imported tree has a syntax error."); -promise_test(t => { - return promise_rejects(t, new SyntaxError, import("../instantiation-error-1.js")); -}, "Dynamic imports should reject if the imported tree has an instantiation error."); -promise_test(t => { - return promise_rejects(t, new Error, import("../throw-error.js")).then(() => { - assert_true(window.before_throwing_error, - "the module script should run to a point where it throws exception"); - assert_equals(undefined, window.after_throwing_error, - "the module script should not run after it throws exception"); - }); -}, "Dynamic imports should reject if the imported tree has an evaluation error."); -</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-fetch-error.sub.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-fetch-error.sub.html new file mode 100644 index 00000000000..5cc600c5a3d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-fetch-error.sub.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<title>import(): error cases occuring during fetching</title> +<link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<script type="module"> +const cases = [ + ["wrong MIME type", "../errorhandling-wrongMimetype.js?pipe=header(Content-Type,text/plain)"], + ["wrong MIME type of a dependency", "../errorhandling-wrongMimetype-import.js"], + ["404", "../resources/404-but-js.asis"], + ["404 of a dependency", "../resources/imports-404-but-js.js"], + ["500", "../resources/500-but-js.asis"], + ["500 of a dependency", "../resources/imports-500-but-js.js"], + ["cross-origin module (without CORS)", "http://{{domains[www2]}}:{{ports[http][0]}}/html/semantics/scripting-1/the-script-element/module/imports-a.js"], + ["cross-origin module dependency (without CORS)", "../resources/imports-b-cross-origin.sub.js"] +]; + +for (const [label, specifier] of cases) { + promise_test(t => { + return promise_rejects(t, new TypeError, import(specifier)); + }, "import() must reject when there is a " + label); + + promise_test(async t => { + // The use of ?x is used to separate tests so they don't interfere with each other. + // (However, it shouldn't matter anyway, in a spec-compliant implementation.) + const suffix = (specifier.includes("?") ? "&" : "?") + "x"; + const promise1 = import(specifier + suffix); + const promise2 = import(specifier + suffix); + + await promise_rejects(t, new TypeError, promise1, "It must reject the first time"); + await promise_rejects(t, new TypeError, promise2, "It must reject the second time"); + + const error1 = await promise1.catch(e => e); + const error2 = await promise2.catch(e => e); + + assert_not_equals(error1, error2, "The error objects must be different"); + }, "import() must reject with a different error object for each import when there is a " + label); +} +</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-script-error.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-script-error.html new file mode 100644 index 00000000000..9390ce0a7a8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/dynamic-imports-script-error.html @@ -0,0 +1,53 @@ +<!DOCTYPE html> +<title>import(): error cases caused by the imported module script</title> +<link rel="author" title="Kouhei Ueno" href="mailto:kouhei@chromium.org"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<script type="module"> +const cases = [ + ["parse error", "../syntaxerror.js", new SyntaxError], + ["bad module specifier", "does-not-start-with-dot.js", new TypeError, { differentErrorObjects: true }], + ["bad module specifier in a dependency", "../bad-module-specifier.js", new TypeError], + ["instantiation error", "../instantiation-error-1.js", new SyntaxError], + ["evaluation error", "../throw-error.js", new Error] +]; + +for (const [label, specifier, error, { differentErrorObjects } = {}] of cases) { + promise_test(t => { + return promise_rejects(t, error, import(specifier)); + }, "import() must reject when there is a " + label); + + const errorObjectsLabel = differentErrorObjects ? "different error objects" : "the same error object"; + promise_test(async t => { + // The use of ?x is used to separate tests so they don't interfere with each other. + // (However, it shouldn't matter anyway, in a spec-compliant implementation.) + const promise1 = import(specifier + "?x"); + const promise2 = import(specifier + "?x"); + + await promise_rejects(t, error, promise1, "It must reject the first time"); + await promise_rejects(t, error, promise2, "It must reject the second time"); + + const error1 = await promise1.catch(e => e); + const error2 = await promise2.catch(e => e); + + if (differentErrorObjects) { + assert_not_equals(error1, error2, "The error objects must be different"); + } else { + assert_equals(error1, error2, "The error objects must be equal"); + } + }, `import() must reject with ${errorObjectsLabel} for each import when there is a ${label}`); +} + +promise_test(t => { + delete window.before_throwing_error; + delete window.after_throwing_error; + + return promise_rejects(t, new Error, import("../throw-error.js?y")).then(() => { + assert_true(window.before_throwing_error, + "the module script should run to a point where it throws exception"); + assert_equals(window.after_throwing_error, undefined, + "the module script should not run after it throws exception"); + }); +}, "import()ing a module with an evaluation error must stop evaluation"); +</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype-import.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype-import.js index 5e7b21b3214..286e1a42298 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype-import.js +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling-wrongMimetype-import.js @@ -1,4 +1,4 @@ -import foo from "./errorhandling-wrongMimetype.js?pipe=header(X-Content-Type-Options,nosniff),header(Content-Type,text/plain)"; +import foo from "./errorhandling-wrongMimetype.js?pipe=header(Content-Type,text/plain)"; // We don't expect this code to run, the import above should fail! // If we do run though, don't trigger an error that the testharness diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling.html index 5315df0f5b2..cf47465b494 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling.html +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/errorhandling.html @@ -35,7 +35,7 @@ var test_wrongMimetype_root = async_test("External root module with non-script mimetype"); var script_wrongMimetype_root = document.createElement("script"); script_wrongMimetype_root.type = "module"; - script_wrongMimetype_root.src = "errorhandling-wrongMimetype.js?pipe=header(Content-Type,text/plain),header(X-Content-Type-Options,nosniff)"; + script_wrongMimetype_root.src = "errorhandling-wrongMimetype.js?pipe=header(Content-Type,text/plain)"; script_wrongMimetype_root.addEventListener("error", test_wrongMimetype_root.step_func(function () { test_wrongMimetype_root.done(); })); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-dependent.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-dependent.js new file mode 100644 index 00000000000..cfaeabc47e1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-dependent.js @@ -0,0 +1 @@ +export let importMetaOnDependentModule = import.meta; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-root.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-root.js new file mode 100644 index 00000000000..62ec082a8ef --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-root.js @@ -0,0 +1,2 @@ +export let importMetaOnRootModule = import.meta; +export { importMetaOnDependentModule } from "./import-meta-dependent.js"; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-url.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-url.html new file mode 100644 index 00000000000..3c853b22d6e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/import-meta/import-meta-url.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script type="module"> +import { importMetaOnRootModule, importMetaOnDependentModule } + from "./import-meta-root.js"; + +var base = location.href.slice(0, location.href.lastIndexOf('/')); + +test(() => { + assert_equals(import.meta.url, location.href); +}, "import.meta.url in a root inline script"); + +test(() => { + assert_equals(importMetaOnRootModule.url, + base + "/import-meta-root.js"); +}, "import.meta.url in a root external script"); + +test(() => { + assert_equals(importMetaOnDependentModule.url, + base + "/import-meta-dependent.js"); +}, "import.meta.url in a dependent external script"); +</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/404-but-js.asis b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/404-but-js.asis new file mode 100644 index 00000000000..0fe1379e569 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/404-but-js.asis @@ -0,0 +1,4 @@ +HTTP/1.1 404 Not Found +Content-Type: text/javascript + +window.ran404 = true; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/500-but-js.asis b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/500-but-js.asis new file mode 100644 index 00000000000..c81202f7ef0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/500-but-js.asis @@ -0,0 +1,4 @@ +HTTP/1.1 500 Not Found +Content-Type: text/javascript + +window.ran500 = true; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/imports-404-but-js.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/imports-404-but-js.js new file mode 100644 index 00000000000..d62e4f05bec --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/imports-404-but-js.js @@ -0,0 +1 @@ +import "./404-but-js.asis"; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/imports-500-but-js.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/imports-500-but-js.js new file mode 100644 index 00000000000..d62e4f05bec --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/imports-500-but-js.js @@ -0,0 +1 @@ +import "./404-but-js.asis"; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/imports-b-cross-origin.sub.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/imports-b-cross-origin.sub.js new file mode 100644 index 00000000000..6db57b5017d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/imports-b-cross-origin.sub.js @@ -0,0 +1 @@ +import "http://{{domains[www2]}}:{{ports[http][0]}}/html/semantics/scripting-1/the-script-element/module/imports-b.js"; diff --git a/tests/wpt/web-platform-tests/interfaces/ambient-light.idl b/tests/wpt/web-platform-tests/interfaces/ambient-light.idl new file mode 100644 index 00000000000..0bdc9cb9e3b --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/ambient-light.idl @@ -0,0 +1,4 @@ +[Constructor(optional SensorOptions sensorOptions), SecureContext, Exposed=Window] +interface AmbientLightSensor : Sensor { + readonly attribute double? illuminance; +}; diff --git a/tests/wpt/web-platform-tests/interfaces/cssom-view.idl b/tests/wpt/web-platform-tests/interfaces/cssom-view.idl index af779a1cc4a..4a70cb99795 100644 --- a/tests/wpt/web-platform-tests/interfaces/cssom-view.idl +++ b/tests/wpt/web-platform-tests/interfaces/cssom-view.idl @@ -89,15 +89,14 @@ interface CaretPosition { enum ScrollLogicalPosition { "start", "center", "end", "nearest" }; dictionary ScrollIntoViewOptions : ScrollOptions { - ScrollLogicalPosition block = "center"; - ScrollLogicalPosition inline = "center"; + ScrollLogicalPosition block = "start"; + ScrollLogicalPosition inline = "nearest"; }; partial interface Element { DOMRectList getClientRects(); [NewObject] DOMRect getBoundingClientRect(); - void scrollIntoView(); - void scrollIntoView((boolean or object) arg); + void scrollIntoView(optional (boolean or ScrollIntoViewOptions) arg); void scroll(optional ScrollToOptions options); void scroll(unrestricted double x, unrestricted double y); void scrollTo(optional ScrollToOptions options); diff --git a/tests/wpt/web-platform-tests/interfaces/html.idl b/tests/wpt/web-platform-tests/interfaces/html.idl index a372298d7c0..a8693340e9a 100644 --- a/tests/wpt/web-platform-tests/interfaces/html.idl +++ b/tests/wpt/web-platform-tests/interfaces/html.idl @@ -1,4 +1,5 @@ -[LegacyUnenumerableNamedProperties] +[Exposed=Window, + LegacyUnenumerableNamedProperties] interface HTMLAllCollection { readonly attribute unsigned long length; getter Element? (unsigned long index); @@ -6,6 +7,7 @@ interface HTMLAllCollection { legacycaller (HTMLCollection or Element)? item(optional DOMString nameOrIndex); }; +[Exposed=Window] interface HTMLFormControlsCollection : HTMLCollection { // inherits length and item() getter (RadioNodeList or Element)? namedItem(DOMString name); // shadows inherited namedItem() @@ -15,6 +17,7 @@ interface RadioNodeList : NodeList { attribute DOMString value; }; +[Exposed=Window] interface HTMLOptionsCollection : HTMLCollection { // inherits item(), namedItem() [CEReactions] attribute unsigned long length; // shadows inherited length @@ -84,7 +87,8 @@ partial interface Document { Document implements GlobalEventHandlers; Document implements DocumentAndElementEventHandlers; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLElement : Element { // metadata attributes [CEReactions] attribute DOMString title; @@ -97,7 +101,7 @@ interface HTMLElement : Element { [CEReactions] attribute boolean hidden; void click(); [CEReactions] attribute long tabIndex; - void focus(); + void focus(optional FocusOptions options); void blur(); [CEReactions] attribute DOMString accessKey; readonly attribute DOMString accessKeyLabel; @@ -106,6 +110,11 @@ interface HTMLElement : Element { [CEReactions] attribute [TreatNullAs=EmptyString] DOMString innerText; }; + +dictionary FocusOptions { + boolean preventScroll = false; +}; + HTMLElement implements GlobalEventHandlers; HTMLElement implements DocumentAndElementEventHandlers; HTMLElement implements ElementContentEditable; @@ -113,33 +122,39 @@ HTMLElement implements ElementContentEditable; // Note: intentionally not [HTMLConstructor] interface HTMLUnknownElement : HTMLElement { }; -[OverrideBuiltins] +[Exposed=Window, + OverrideBuiltins] interface DOMStringMap { getter DOMString (DOMString name); [CEReactions] setter void (DOMString name, DOMString value); [CEReactions] deleter void (DOMString name); }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLHtmlElement : HTMLElement { // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLHeadElement : HTMLElement {}; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLTitleElement : HTMLElement { [CEReactions] attribute DOMString text; }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLBaseElement : HTMLElement { [CEReactions] attribute USVString href; [CEReactions] attribute DOMString target; }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLLinkElement : HTMLElement { [CEReactions] attribute USVString href; [CEReactions] attribute DOMString? crossOrigin; @@ -161,7 +176,8 @@ interface HTMLLinkElement : HTMLElement { }; HTMLLinkElement implements LinkStyle; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLMetaElement : HTMLElement { [CEReactions] attribute DOMString name; [CEReactions] attribute DOMString httpEquiv; @@ -170,7 +186,8 @@ interface HTMLMetaElement : HTMLElement { // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLStyleElement : HTMLElement { [CEReactions] attribute DOMString media; [CEReactions] attribute DOMString nonce; @@ -178,39 +195,46 @@ interface HTMLStyleElement : HTMLElement { }; HTMLStyleElement implements LinkStyle; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLBodyElement : HTMLElement { // also has obsolete members }; HTMLBodyElement implements WindowEventHandlers; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLHeadingElement : HTMLElement { // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLParagraphElement : HTMLElement { // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLHRElement : HTMLElement { // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLPreElement : HTMLElement { // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLQuoteElement : HTMLElement { [CEReactions] attribute USVString cite; }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLOListElement : HTMLElement { [CEReactions] attribute boolean reversed; [CEReactions] attribute long start; @@ -219,35 +243,41 @@ interface HTMLOListElement : HTMLElement { // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLUListElement : HTMLElement { // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLMenuElement : HTMLElement { // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLLIElement : HTMLElement { [CEReactions] attribute long value; // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLDListElement : HTMLElement { // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLDivElement : HTMLElement { // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLAnchorElement : HTMLElement { [CEReactions] attribute DOMString target; [CEReactions] attribute DOMString download; @@ -265,25 +295,30 @@ interface HTMLAnchorElement : HTMLElement { }; HTMLAnchorElement implements HTMLHyperlinkElementUtils; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLDataElement : HTMLElement { [CEReactions] attribute DOMString value; }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLTimeElement : HTMLElement { [CEReactions] attribute DOMString dateTime; }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLSpanElement : HTMLElement {}; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLBRElement : HTMLElement { // also has obsolete members }; -[NoInterfaceObject] +[Exposed=Window, + NoInterfaceObject] interface HTMLHyperlinkElementUtils { [CEReactions] stringifier attribute USVString href; readonly attribute USVString origin; @@ -298,16 +333,19 @@ interface HTMLHyperlinkElementUtils { [CEReactions] attribute USVString hash; }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLModElement : HTMLElement { [CEReactions] attribute USVString cite; [CEReactions] attribute DOMString dateTime; }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLPictureElement : HTMLElement {}; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLSourceElement : HTMLElement { [CEReactions] attribute USVString src; [CEReactions] attribute DOMString type; @@ -316,7 +354,9 @@ interface HTMLSourceElement : HTMLElement { [CEReactions] attribute DOMString media; }; -[HTMLConstructor, NamedConstructor=Image(optional unsigned long width, optional unsigned long height)] +[Exposed=Window, + HTMLConstructor, + NamedConstructor=Image(optional unsigned long width, optional unsigned long height)] interface HTMLImageElement : HTMLElement { [CEReactions] attribute DOMString alt; [CEReactions] attribute USVString src; @@ -338,7 +378,8 @@ interface HTMLImageElement : HTMLElement { // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLIFrameElement : HTMLElement { [CEReactions] attribute USVString src; [CEReactions] attribute DOMString srcdoc; @@ -353,11 +394,13 @@ interface HTMLIFrameElement : HTMLElement { readonly attribute Document? contentDocument; readonly attribute WindowProxy? contentWindow; Document? getSVGDocument(); + [SameObject, PutForwards=value] readonly attribute DOMTokenList delegateStickyUserActivation; // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLEmbedElement : HTMLElement { [CEReactions] attribute USVString src; [CEReactions] attribute DOMString type; @@ -368,7 +411,8 @@ interface HTMLEmbedElement : HTMLElement { // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLObjectElement : HTMLElement { [CEReactions] attribute USVString data; [CEReactions] attribute DOMString type; @@ -392,7 +436,8 @@ interface HTMLObjectElement : HTMLElement { // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLParamElement : HTMLElement { [CEReactions] attribute DOMString name; [CEReactions] attribute DOMString value; @@ -400,7 +445,8 @@ interface HTMLParamElement : HTMLElement { // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLVideoElement : HTMLMediaElement { [CEReactions] attribute unsigned long width; [CEReactions] attribute unsigned long height; @@ -410,10 +456,13 @@ interface HTMLVideoElement : HTMLMediaElement { [CEReactions] attribute boolean playsInline; }; -[HTMLConstructor, NamedConstructor=Audio(optional DOMString src)] +[Exposed=Window, + HTMLConstructor, + NamedConstructor=Audio(optional DOMString src)] interface HTMLAudioElement : HTMLMediaElement {}; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLTrackElement : HTMLElement { [CEReactions] attribute DOMString kind; [CEReactions] attribute USVString src; @@ -432,6 +481,8 @@ interface HTMLTrackElement : HTMLElement { enum CanPlayTypeResult { "" /* empty string */, "maybe", "probably" }; typedef (MediaStream or MediaSource or Blob) MediaProvider; + +[Exposed=Window] interface HTMLMediaElement : HTMLElement { // error state @@ -490,6 +541,7 @@ interface HTMLMediaElement : HTMLElement { TextTrack addTextTrack(TextTrackKind kind, optional DOMString label = "", optional DOMString language = ""); }; +[Exposed=Window] interface MediaError { const unsigned short MEDIA_ERR_ABORTED = 1; const unsigned short MEDIA_ERR_NETWORK = 2; @@ -500,6 +552,7 @@ interface MediaError { readonly attribute DOMString message; }; +[Exposed=Window] interface AudioTrackList : EventTarget { readonly attribute unsigned long length; getter AudioTrack (unsigned long index); @@ -510,6 +563,7 @@ interface AudioTrackList : EventTarget { attribute EventHandler onremovetrack; }; +[Exposed=Window] interface AudioTrack { readonly attribute DOMString id; readonly attribute DOMString kind; @@ -518,6 +572,7 @@ interface AudioTrack { attribute boolean enabled; }; +[Exposed=Window] interface VideoTrackList : EventTarget { readonly attribute unsigned long length; getter VideoTrack (unsigned long index); @@ -529,6 +584,7 @@ interface VideoTrackList : EventTarget { attribute EventHandler onremovetrack; }; +[Exposed=Window] interface VideoTrack { readonly attribute DOMString id; readonly attribute DOMString kind; @@ -537,6 +593,7 @@ interface VideoTrack { attribute boolean selected; }; +[Exposed=Window] interface TextTrackList : EventTarget { readonly attribute unsigned long length; getter TextTrack (unsigned long index); @@ -549,6 +606,8 @@ interface TextTrackList : EventTarget { enum TextTrackMode { "disabled", "hidden", "showing" }; enum TextTrackKind { "subtitles", "captions", "descriptions", "chapters", "metadata" }; + +[Exposed=Window] interface TextTrack : EventTarget { readonly attribute TextTrackKind kind; readonly attribute DOMString label; @@ -568,12 +627,14 @@ interface TextTrack : EventTarget { attribute EventHandler oncuechange; }; +[Exposed=Window] interface TextTrackCueList { readonly attribute unsigned long length; getter TextTrackCue (unsigned long index); TextTrackCue? getCueById(DOMString id); }; +[Exposed=Window] interface TextTrackCue : EventTarget { readonly attribute TextTrack? track; @@ -586,13 +647,15 @@ interface TextTrackCue : EventTarget { attribute EventHandler onexit; }; +[Exposed=Window] interface TimeRanges { readonly attribute unsigned long length; double start(unsigned long index); double end(unsigned long index); }; -[Constructor(DOMString type, optional TrackEventInit eventInitDict)] +[Exposed=Window, + Constructor(DOMString type, optional TrackEventInit eventInitDict)] interface TrackEvent : Event { readonly attribute (VideoTrack or AudioTrack or TextTrack)? track; }; @@ -601,13 +664,15 @@ dictionary TrackEventInit : EventInit { (VideoTrack or AudioTrack or TextTrack)? track = null; }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLMapElement : HTMLElement { [CEReactions] attribute DOMString name; [SameObject] readonly attribute HTMLCollection areas; }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLAreaElement : HTMLElement { [CEReactions] attribute DOMString alt; [CEReactions] attribute DOMString coords; @@ -623,7 +688,8 @@ interface HTMLAreaElement : HTMLElement { }; HTMLAreaElement implements HTMLHyperlinkElementUtils; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLTableElement : HTMLElement { [CEReactions] attribute HTMLTableCaptionElement? caption; HTMLTableCaptionElement createCaption(); @@ -647,19 +713,22 @@ interface HTMLTableElement : HTMLElement { // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLTableCaptionElement : HTMLElement { // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLTableColElement : HTMLElement { [CEReactions] attribute unsigned long span; // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLTableSectionElement : HTMLElement { [SameObject] readonly attribute HTMLCollection rows; HTMLElement insertRow(optional long index = -1); @@ -668,7 +737,8 @@ interface HTMLTableSectionElement : HTMLElement { // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLTableRowElement : HTMLElement { readonly attribute long rowIndex; readonly attribute long sectionRowIndex; @@ -679,7 +749,8 @@ interface HTMLTableRowElement : HTMLElement { // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLTableCellElement : HTMLElement { [CEReactions] attribute unsigned long colSpan; [CEReactions] attribute unsigned long rowSpan; @@ -692,7 +763,10 @@ interface HTMLTableCellElement : HTMLElement { // also has obsolete members }; -[OverrideBuiltins, LegacyUnenumerableNamedProperties, HTMLConstructor] +[Exposed=Window, + OverrideBuiltins, + LegacyUnenumerableNamedProperties, + HTMLConstructor] interface HTMLFormElement : HTMLElement { [CEReactions] attribute DOMString acceptCharset; [CEReactions] attribute USVString action; @@ -715,14 +789,16 @@ interface HTMLFormElement : HTMLElement { boolean reportValidity(); }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLLabelElement : HTMLElement { readonly attribute HTMLFormElement? form; [CEReactions] attribute DOMString htmlFor; readonly attribute HTMLElement? control; }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLInputElement : HTMLElement { [CEReactions] attribute DOMString accept; [CEReactions] attribute DOMString alt; @@ -786,7 +862,8 @@ interface HTMLInputElement : HTMLElement { // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLButtonElement : HTMLElement { [CEReactions] attribute boolean autofocus; [CEReactions] attribute boolean disabled; @@ -810,7 +887,8 @@ interface HTMLButtonElement : HTMLElement { readonly attribute NodeList labels; }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLSelectElement : HTMLElement { [CEReactions] attribute DOMString autocomplete; [CEReactions] attribute boolean autofocus; @@ -846,18 +924,22 @@ interface HTMLSelectElement : HTMLElement { readonly attribute NodeList labels; }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLDataListElement : HTMLElement { [SameObject] readonly attribute HTMLCollection options; }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLOptGroupElement : HTMLElement { [CEReactions] attribute boolean disabled; [CEReactions] attribute DOMString label; }; -[HTMLConstructor, NamedConstructor=Option(optional DOMString text = "", optional DOMString value, optional boolean defaultSelected = false, optional boolean selected = false)] +[Exposed=Window, + HTMLConstructor, + NamedConstructor=Option(optional DOMString text = "", optional DOMString value, optional boolean defaultSelected = false, optional boolean selected = false)] interface HTMLOptionElement : HTMLElement { [CEReactions] attribute boolean disabled; readonly attribute HTMLFormElement? form; @@ -870,7 +952,8 @@ interface HTMLOptionElement : HTMLElement { readonly attribute long index; }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLTextAreaElement : HTMLElement { [CEReactions] attribute DOMString autocomplete; [CEReactions] attribute boolean autofocus; @@ -911,7 +994,8 @@ interface HTMLTextAreaElement : HTMLElement { void setSelectionRange(unsigned long start, unsigned long end, optional DOMString direction); }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLOutputElement : HTMLElement { [SameObject, PutForwards=value] readonly attribute DOMTokenList htmlFor; readonly attribute HTMLFormElement? form; @@ -931,7 +1015,8 @@ interface HTMLOutputElement : HTMLElement { readonly attribute NodeList labels; }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLProgressElement : HTMLElement { [CEReactions] attribute double value; [CEReactions] attribute double max; @@ -939,7 +1024,8 @@ interface HTMLProgressElement : HTMLElement { readonly attribute NodeList labels; }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLMeterElement : HTMLElement { [CEReactions] attribute double value; [CEReactions] attribute double min; @@ -950,7 +1036,8 @@ interface HTMLMeterElement : HTMLElement { readonly attribute NodeList labels; }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLFieldSetElement : HTMLElement { [CEReactions] attribute boolean disabled; readonly attribute HTMLFormElement? form; @@ -968,7 +1055,8 @@ interface HTMLFieldSetElement : HTMLElement { void setCustomValidity(DOMString error); }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLLegendElement : HTMLElement { readonly attribute HTMLFormElement? form; @@ -982,6 +1070,7 @@ enum SelectionMode { "preserve" // default }; +[Exposed=Window] interface ValidityState { readonly attribute boolean valueMissing; readonly attribute boolean typeMismatch; @@ -996,12 +1085,14 @@ interface ValidityState { readonly attribute boolean valid; }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLDetailsElement : HTMLElement { [CEReactions] attribute boolean open; }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLDialogElement : HTMLElement { [CEReactions] attribute boolean open; attribute DOMString returnValue; @@ -1010,12 +1101,12 @@ interface HTMLDialogElement : HTMLElement { [CEReactions] void close(optional DOMString returnValue); }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLScriptElement : HTMLElement { [CEReactions] attribute USVString src; [CEReactions] attribute DOMString type; [CEReactions] attribute boolean noModule; - [CEReactions] attribute DOMString charset; [CEReactions] attribute boolean async; [CEReactions] attribute boolean defer; [CEReactions] attribute DOMString? crossOrigin; @@ -1027,12 +1118,14 @@ interface HTMLScriptElement : HTMLElement { // also has obsolete members }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLTemplateElement : HTMLElement { readonly attribute DocumentFragment content; }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLSlotElement : HTMLElement { [CEReactions] attribute DOMString name; sequence<Node> assignedNodes(optional AssignedNodesOptions options); @@ -1044,7 +1137,8 @@ dictionary AssignedNodesOptions { typedef (CanvasRenderingContext2D or WebGLRenderingContext) RenderingContext; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLCanvasElement : HTMLElement { [CEReactions] attribute unsigned long width; [CEReactions] attribute unsigned long height; @@ -1075,6 +1169,7 @@ dictionary CanvasRenderingContext2DSettings { enum ImageSmoothingQuality { "low", "medium", "high" }; +[Exposed=Window] interface CanvasRenderingContext2D { // back-reference to the canvas readonly attribute HTMLCanvasElement canvas; @@ -1184,7 +1279,8 @@ interface CanvasDrawPath { boolean isPointInStroke(Path2D path, unrestricted double x, unrestricted double y); }; -[NoInterfaceObject] +[Exposed=Window, + NoInterfaceObject] interface CanvasUserInterface { void drawFocusIfNeeded(Element element); void drawFocusIfNeeded(Path2D path, Element element); @@ -1192,7 +1288,8 @@ interface CanvasUserInterface { void scrollPathIntoView(Path2D path); }; -[NoInterfaceObject] +[Exposed=Window, + NoInterfaceObject] interface CanvasText { // text (see also the CanvasPathDrawingStyles and CanvasTextDrawingStyles interfaces) void fillText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth); @@ -1238,7 +1335,8 @@ interface CanvasPathDrawingStyles { attribute unrestricted double lineDashOffset; }; -[NoInterfaceObject] +[Exposed=Window, + NoInterfaceObject] interface CanvasTextDrawingStyles { // text attribute DOMString font; // (default 10px sans-serif) @@ -1274,6 +1372,7 @@ interface CanvasPattern { void setTransform(optional DOMMatrix2DInit transform); }; +[Exposed=Window] interface TextMetrics { // x-direction readonly attribute double width; // advance width @@ -1312,6 +1411,7 @@ interface Path2D { }; Path2D implements CanvasPath; +[Exposed=Window] interface ImageBitmapRenderingContext { readonly attribute HTMLCanvasElement canvas; void transferFromImageBitmap(ImageBitmap? bitmap); @@ -1363,6 +1463,7 @@ OffscreenCanvasRenderingContext2D implements CanvasPathDrawingStyles; OffscreenCanvasRenderingContext2D implements CanvasPath; +[Exposed=Window] interface CustomElementRegistry { [CEReactions] void define(DOMString name, Function constructor, optional ElementDefinitionOptions options); any get(DOMString name); @@ -1373,13 +1474,15 @@ dictionary ElementDefinitionOptions { DOMString extends; }; -[NoInterfaceObject] +[Exposed=Window, + NoInterfaceObject] interface ElementContentEditable { [CEReactions] attribute DOMString contentEditable; readonly attribute boolean isContentEditable; }; -[Constructor, Exposed=(Window)] +[Exposed=Window, + Constructor] interface DataTransfer { attribute DOMString dropEffect; attribute DOMString effectAllowed; @@ -1396,6 +1499,7 @@ interface ElementContentEditable { [SameObject] readonly attribute FileList files; }; +[Exposed=Window] interface DataTransferItemList { readonly attribute unsigned long length; getter DataTransferItem (unsigned long index); @@ -1405,6 +1509,7 @@ interface DataTransferItemList { void clear(); }; +[Exposed=Window] interface DataTransferItem { readonly attribute DOMString kind; readonly attribute DOMString type; @@ -1414,7 +1519,8 @@ interface DataTransferItem { callback FunctionStringCallback = void (DOMString data); -[Constructor(DOMString type, optional DragEventInit eventInitDict)] +[Exposed=Window, + Constructor(DOMString type, optional DragEventInit eventInitDict)] interface DragEvent : MouseEvent { readonly attribute DataTransfer? dataTransfer; }; @@ -1482,13 +1588,16 @@ Window implements WindowEventHandlers; callback FrameRequestCallback = void (DOMHighResTimeStamp time); +[Exposed=Window] interface BarProp { readonly attribute boolean visible; }; enum ScrollRestoration { "auto", "manual" }; +[Exposed=Window] interface History { + readonly attribute unsigned long index; readonly attribute unsigned long length; attribute ScrollRestoration scrollRestoration; readonly attribute any state; @@ -1499,6 +1608,7 @@ interface History { void replaceState(any data, DOMString title, optional USVString? url = null); }; +[Exposed=Window] interface Location { // but see also additional creation steps and overridden internal methods [Unforgeable] stringifier attribute USVString href; [Unforgeable] readonly attribute USVString origin; @@ -1517,7 +1627,8 @@ interface Location { // but see also additional creation steps and overridden in [Unforgeable, SameObject] readonly attribute DOMStringList ancestorOrigins; }; -[Constructor(DOMString type, optional PopStateEventInit eventInitDict)] +[Exposed=Window, + Constructor(DOMString type, optional PopStateEventInit eventInitDict)] interface PopStateEvent : Event { readonly attribute any state; }; @@ -1526,7 +1637,8 @@ dictionary PopStateEventInit : EventInit { any state = null; }; -[Constructor(DOMString type, optional HashChangeEventInit eventInitDict)] +[Exposed=Window, + Constructor(DOMString type, optional HashChangeEventInit eventInitDict)] interface HashChangeEvent : Event { readonly attribute USVString oldURL; readonly attribute USVString newURL; @@ -1537,7 +1649,8 @@ dictionary HashChangeEventInit : EventInit { USVString newURL = ""; }; -[Constructor(DOMString type, optional PageTransitionEventInit eventInitDict)] +[Exposed=Window, + Constructor(DOMString type, optional PageTransitionEventInit eventInitDict)] interface PageTransitionEvent : Event { readonly attribute boolean persisted; }; @@ -1546,10 +1659,12 @@ dictionary PageTransitionEventInit : EventInit { boolean persisted = false; }; +[Exposed=Window] interface BeforeUnloadEvent : Event { attribute DOMString returnValue; }; +[Exposed=Window] interface ApplicationCache : EventTarget { // update status @@ -1622,7 +1737,8 @@ typedef OnErrorEventHandlerNonNull? OnErrorEventHandler; callback OnBeforeUnloadEventHandlerNonNull = DOMString? (Event event); typedef OnBeforeUnloadEventHandlerNonNull? OnBeforeUnloadEventHandler; -[NoInterfaceObject] +[Exposed=Window, + NoInterfaceObject] interface GlobalEventHandlers { attribute EventHandler onabort; attribute EventHandler onauxclick; @@ -1688,7 +1804,8 @@ interface GlobalEventHandlers { attribute EventHandler onwaiting; }; -[NoInterfaceObject] +[Exposed=Window, + NoInterfaceObject] interface WindowEventHandlers { attribute EventHandler onafterprint; attribute EventHandler onbeforeprint; @@ -1708,7 +1825,8 @@ interface WindowEventHandlers { attribute EventHandler onunload; }; -[NoInterfaceObject] +[Exposed=Window, + NoInterfaceObject] interface DocumentAndElementEventHandlers { attribute EventHandler oncopy; attribute EventHandler oncut; @@ -1723,7 +1841,7 @@ interface WindowOrWorkerGlobalScope { // base64 utility methods DOMString btoa(DOMString data); - DOMString atob(DOMString data); + ByteString atob(DOMString data); // timers long setTimeout(TimerHandler handler, optional long timeout = 0, any... arguments); @@ -1738,6 +1856,7 @@ interface WindowOrWorkerGlobalScope { Window implements WindowOrWorkerGlobalScope; WorkerGlobalScope implements WindowOrWorkerGlobalScope; +[Exposed=Window] interface Navigator { // objects implementing this interface also implement the interfaces given below }; @@ -1775,25 +1894,29 @@ interface NavigatorLanguage { readonly attribute FrozenArray<DOMString> languages; }; -[NoInterfaceObject] +[Exposed=Window, + NoInterfaceObject] interface NavigatorContentUtils { void registerProtocolHandler(DOMString scheme, USVString url, DOMString title); void unregisterProtocolHandler(DOMString scheme, USVString url); }; -[NoInterfaceObject] +[Exposed=Window, + NoInterfaceObject] interface NavigatorCookies { readonly attribute boolean cookieEnabled; }; -[NoInterfaceObject] +[Exposed=Window, + NoInterfaceObject] interface NavigatorPlugins { [SameObject] readonly attribute PluginArray plugins; [SameObject] readonly attribute MimeTypeArray mimeTypes; boolean javaEnabled(); }; -[LegacyUnenumerableNamedProperties] +[Exposed=Window, + LegacyUnenumerableNamedProperties] interface PluginArray { void refresh(optional boolean reload = false); readonly attribute unsigned long length; @@ -1801,14 +1924,16 @@ interface PluginArray { getter Plugin? namedItem(DOMString name); }; -[LegacyUnenumerableNamedProperties] +[Exposed=Window, + LegacyUnenumerableNamedProperties] interface MimeTypeArray { readonly attribute unsigned long length; getter MimeType? item(unsigned long index); getter MimeType? namedItem(DOMString name); }; -[LegacyUnenumerableNamedProperties] +[Exposed=Window, + LegacyUnenumerableNamedProperties] interface Plugin { readonly attribute DOMString name; readonly attribute DOMString description; @@ -1818,6 +1943,7 @@ interface Plugin { getter MimeType? namedItem(DOMString name); }; +[Exposed=Window] interface MimeType { readonly attribute DOMString type; readonly attribute DOMString description; @@ -1850,7 +1976,7 @@ dictionary ImageBitmapOptions { ResizeQuality resizeQuality = "low"; }; -[Constructor(DOMString type, optional MessageEventInit eventInitDict), Exposed=(Window,Worker)] +[Constructor(DOMString type, optional MessageEventInit eventInitDict), Exposed=(Window,Worker,AudioWorklet)] interface MessageEvent : Event { readonly attribute any data; readonly attribute USVString origin; @@ -1942,7 +2068,7 @@ interface MessageChannel { readonly attribute MessagePort port2; }; -[Exposed=(Window,Worker), Transferable] +[Exposed=(Window,Worker,AudioWorklet), Transferable] interface MessagePort : EventTarget { void postMessage(any message, optional sequence<object> transfer = []); void start(); @@ -2054,6 +2180,7 @@ interface WorkerLocation { readonly attribute USVString hash; }; +[Exposed=Window] interface Storage { readonly attribute unsigned long length; DOMString? key(unsigned long index); @@ -2063,19 +2190,22 @@ interface Storage { void clear(); }; -[NoInterfaceObject] +[Exposed=Window, + NoInterfaceObject] interface WindowSessionStorage { readonly attribute Storage sessionStorage; }; Window implements WindowSessionStorage; -[NoInterfaceObject] +[Exposed=Window, + NoInterfaceObject] interface WindowLocalStorage { readonly attribute Storage localStorage; }; Window implements WindowLocalStorage; -[Constructor(DOMString type, optional StorageEventInit eventInitDict)] +[Exposed=Window, + Constructor(DOMString type, optional StorageEventInit eventInitDict)] interface StorageEvent : Event { readonly attribute DOMString? key; readonly attribute DOMString? oldValue; @@ -2092,22 +2222,8 @@ dictionary StorageEventInit : EventInit { Storage? storageArea = null; }; -// Note: intentionally not [HTMLConstructor] -interface HTMLAppletElement : HTMLElement { - attribute DOMString align; - attribute DOMString alt; - attribute DOMString archive; - attribute DOMString code; - attribute USVString codeBase; - attribute DOMString height; - attribute unsigned long hspace; - attribute DOMString name; - attribute USVString _object; // the underscore is not part of the identifier - attribute unsigned long vspace; - attribute DOMString width; -}; - -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLMarqueeElement : HTMLElement { [CEReactions] attribute DOMString behavior; [CEReactions] attribute DOMString bgColor; @@ -2129,14 +2245,16 @@ interface HTMLMarqueeElement : HTMLElement { void stop(); }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLFrameSetElement : HTMLElement { [CEReactions] attribute DOMString cols; [CEReactions] attribute DOMString rows; }; HTMLFrameSetElement implements WindowEventHandlers; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLFrameElement : HTMLElement { [CEReactions] attribute DOMString name; [CEReactions] attribute DOMString scrolling; @@ -2188,7 +2306,8 @@ partial interface HTMLTableColElement { [CEReactions] attribute DOMString width; }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLDirectoryElement : HTMLElement { [CEReactions] attribute boolean compact; }; @@ -2206,7 +2325,8 @@ partial interface HTMLEmbedElement { [CEReactions] attribute DOMString name; }; -[HTMLConstructor] +[Exposed=Window, + HTMLConstructor] interface HTMLFontElement : HTMLElement { [CEReactions] attribute [TreatNullAs=EmptyString] DOMString color; [CEReactions] attribute DOMString face; @@ -2309,6 +2429,7 @@ partial interface HTMLPreElement { }; partial interface HTMLScriptElement { + [CEReactions] attribute DOMString charset; [CEReactions] attribute DOMString event; [CEReactions] attribute DOMString htmlFor; }; @@ -2385,7 +2506,8 @@ partial interface Window { [Replaceable, SameObject] readonly attribute External external; }; -[NoInterfaceObject] +[Exposed=Window, + NoInterfaceObject] interface External { void AddSearchProvider(); void IsSearchProviderInstalled(); diff --git a/tests/wpt/web-platform-tests/interfaces/wake-lock.idl b/tests/wpt/web-platform-tests/interfaces/wake-lock.idl new file mode 100644 index 00000000000..4e2b257d24e --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/wake-lock.idl @@ -0,0 +1,23 @@ +enum WakeLockType { + "screen", + "system" +}; + +partial interface Navigator { + [SecureContext] Promise<WakeLock> getWakeLock(WakeLockType type); +}; + +[SecureContext, + Exposed=Window] +interface WakeLock : EventTarget { + readonly attribute WakeLockType type; + readonly attribute boolean active; + attribute EventHandler onactivechange; + WakeLockRequest createRequest(); +}; + +[SecureContext, + Exposed=Window] +interface WakeLockRequest { + void cancel(); +}; diff --git a/tests/wpt/web-platform-tests/lint.whitelist b/tests/wpt/web-platform-tests/lint.whitelist index af6a293dd8f..77ba95230a1 100644 --- a/tests/wpt/web-platform-tests/lint.whitelist +++ b/tests/wpt/web-platform-tests/lint.whitelist @@ -146,6 +146,7 @@ PARSE-FAILED:content-security-policy/svg/including.sub.svg #Helper files that aren't valid XML PARSE-FAILED:dom/nodes/Document-createElement-namespace-tests/empty.xml PARSE-FAILED:dom/nodes/Document-createElement-namespace-tests/minimal_html.xml +PARSE-FAILED:acid/acid3/empty.xml # The patches may have trailing whitespace TRAILING WHITESPACE:webgl/tools/*.patch @@ -338,6 +339,9 @@ GENERATE_TESTS: shadow-dom/untriaged/shadow-trees/upper-boundary-encapsulation/w # Intentional use of setTimeout SET TIMEOUT: html/webappapis/timers/* +# setTimeout use in reftests +SET TIMEOUT: acid/acid3/test.html + # CI scripts PRINT STATEMENT:check_stability.py W3C-TEST.ORG:check_stability.py diff --git a/tests/wpt/web-platform-tests/longtask-timing/shared-renderer/longtask-in-new-window.html b/tests/wpt/web-platform-tests/longtask-timing/shared-renderer/longtask-in-new-window.html new file mode 100644 index 00000000000..ebe9cdcb727 --- /dev/null +++ b/tests/wpt/web-platform-tests/longtask-timing/shared-renderer/longtask-in-new-window.html @@ -0,0 +1,45 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>LongTask Timing: long task in another window</title> +<body> + +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<script> +/* This test should pass even when windows share a single renderer process. + This window opens a new window which contains a longtask. We test that the + longtask from the new window is not observed by the observer of this window. */ +async_test(t => { + const observer = new PerformanceObserver( + t.step_func(function (entryList) { + const entries = entryList.getEntries(); + let markFound = false; + for (let i = 0; i < entries.length; ++i) { + const entry = entries[i]; + // We do not expect to observe longtasks but the work being made in this window may produce a longtask. + assert_true(entry.entryType === 'longtask' || + entry.entryType === 'mark'); + if (entry.entryType === 'mark') { + markFound = true; + continue; + } + // If a longtask is observed, it must come from this window. + assert_equals(entry.name, 'self'); + } + // If we found the mark, then the other window longtask is done. + if (markFound) + t.done(); + }) + ); + observer.observe({entryTypes: ['mark', 'longtask']}); + + // Open a window with a longtask. + const other_window = window.open('resources/frame-with-longtask.html'); + window.addEventListener('message', t.step_func(e => { + // Do a mark (after the other window's longtask) to fire the callback. + self.performance.mark('mark1'); + })); +}, 'A longtask in a frame from window.open is not reported in original frame'); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/longtask-timing/shared-renderer/resources/frame-with-longtask.html b/tests/wpt/web-platform-tests/longtask-timing/shared-renderer/resources/frame-with-longtask.html new file mode 100644 index 00000000000..72e525f04d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/longtask-timing/shared-renderer/resources/frame-with-longtask.html @@ -0,0 +1,14 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<meta name="viewport" content="width=device-width"> + +<title>Long Task Frame</title> +<body> +<h1>Long Task plus PostMessage</h1> + +<script> + const begin = window.performance.now(); + while (window.performance.now() < begin + 51); + window.opener.postMessage('Finished.', '*'); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/magnetometer/Magnetometer_insecure_context.html b/tests/wpt/web-platform-tests/magnetometer/Magnetometer_insecure_context.html index 452bfc1c6ee..307c19b101b 100644 --- a/tests/wpt/web-platform-tests/magnetometer/Magnetometer_insecure_context.html +++ b/tests/wpt/web-platform-tests/magnetometer/Magnetometer_insecure_context.html @@ -15,6 +15,6 @@ </ol> <script> -runGenericSensorInsecureContext(Magnetometer); +runGenericSensorInsecureContext("Magnetometer"); </script> diff --git a/tests/wpt/web-platform-tests/magnetometer/idlharness.https.html b/tests/wpt/web-platform-tests/magnetometer/idlharness.https.html index 2f98dda24d0..1e90ce1954f 100644 --- a/tests/wpt/web-platform-tests/magnetometer/idlharness.https.html +++ b/tests/wpt/web-platform-tests/magnetometer/idlharness.https.html @@ -24,6 +24,7 @@ interface EventHandler { [SecureContext, Exposed=Window] interface Sensor : EventTarget { readonly attribute boolean activated; + readonly attribute boolean hasReading; readonly attribute DOMHighResTimeStamp? timestamp; void start(); void stop(); @@ -34,19 +35,19 @@ interface Sensor : EventTarget { [Constructor(optional SensorOptions sensorOptions), Exposed=Window] interface Magnetometer : Sensor { - readonly attribute unrestricted double? x; - readonly attribute unrestricted double? y; - readonly attribute unrestricted double? z; + readonly attribute double? x; + readonly attribute double? y; + readonly attribute double? z; }; [Constructor(optional SensorOptions sensorOptions), Exposed=Window] interface UncalibratedMagnetometer : Sensor { - readonly attribute unrestricted double? x; - readonly attribute unrestricted double? y; - readonly attribute unrestricted double? z; - readonly attribute unrestricted double? xBias; - readonly attribute unrestricted double? yBias; - readonly attribute unrestricted double? zBias; + readonly attribute double? x; + readonly attribute double? y; + readonly attribute double? z; + readonly attribute double? xBias; + readonly attribute double? yBias; + readonly attribute double? zBias; }; </script> diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-default-feature-policy.https.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-default-feature-policy.https.html new file mode 100644 index 00000000000..12e64925847 --- /dev/null +++ b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-default-feature-policy.https.html @@ -0,0 +1,62 @@ +<!DOCTYPE html> +<body> + <script src=/resources/testharness.js></script> + <script src=/resources/testharnessreport.js></script> + <script src=/common/get-host-info.sub.js></script> + <script src=/feature-policy/resources/featurepolicy.js></script> + <script> + 'use strict'; + + // The promise_factory must return a promise that runs the feature and + // resolves if feature usage is successful, otherwise rejects. Using + // getUserMedia is successful if at least one mic/camera is returned when + // mic/camera has been explicitly allowed by feature policy. + function promise_factory(allowed_features) { + return new Promise((resolve, reject) => { + navigator.getUserMedia({video: true, audio: true}, + function(stream) { + // If microphone is allowed, there should be at least one microphone + // in the result. If camera is allowed, there should be at least one + // camera in the result. + if ((allowed_features.includes('microphone') && + stream.getAudioTracks().length == 0) || + (allowed_features.includes('camera') && + stream.getVideoTracks().length == 0)) { + reject('Feature policy allowed feature but devices not ' + + 'present.'); + } else { + // Otherwise the result is expected. + resolve(); + } + }, + function(error) { reject(error); }); + }); + }; + + var cross_domain = get_host_info().HTTPS_REMOTE_ORIGIN; + run_all_fp_tests_allow_self( + cross_domain, + 'microphone', + '[object NavigatorUserMediaError]', + function() { + return promise_factory('microphone'); + }); + + run_all_fp_tests_allow_self( + cross_domain, + 'camera', + '[object NavigatorUserMediaError]', + function() { + return promise_factory('camera'); + }); + + run_all_fp_tests_allow_self( + cross_domain, + 'camera; microphone', + '[object NavigatorUserMediaError]', + function() { + return promise_factory('camera; microphone'); + }); + </script> +</body> + diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-default-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-default-feature-policy.https.sub.html deleted file mode 100644 index 1f48e854f7e..00000000000 --- a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-default-feature-policy.https.sub.html +++ /dev/null @@ -1,61 +0,0 @@ -<!DOCTYPE html> -<body> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - <script src=/feature-policy/resources/featurepolicy.js></script> - <script src=util/utils.js></script> - <script> - 'use strict'; - - // The promise_factory must return a promise that runs the feature and - // resolves if feature usage is successful, otherwise rejects. Using - // getUserMedia is successful if at least one mic/camera is returned when - // mic/camera has been explicitly allowed by feature policy. - function promise_factory(allowed_features) { - return new Promise((resolve, reject) => { - navigator.getUserMedia({video: true, audio: true}, - function(stream) { - // If microphone is allowed, there should be at least one microphone - // in the result. If camera is allowed, there should be at least one - // camera in the result. - if ((allowed_features.includes('microphone') && - stream.getAudioTracks().length == 0) || - (allowed_features.includes('camera') && - stream.getVideoTracks().length == 0)) { - reject('Feature policy allowed feature but devices not ' + - 'present.'); - } else { - // Otherwise the result is expected. - resolve(); - } - }, - function(error) { reject(error); }); - }); - }; - - run_all_fp_tests_allow_self( - 'https://{{domains[www]}}:{{ports[https][0]}}', - 'microphone', - '[object NavigatorUserMediaError]', - function() { - return promise_factory('microphone'); - }); - - run_all_fp_tests_allow_self( - 'https://{{domains[www]}}:{{ports[https][0]}}', - 'camera', - '[object NavigatorUserMediaError]', - function() { - return promise_factory('camera'); - }); - - run_all_fp_tests_allow_self( - 'https://{{domains[www]}}:{{ports[https][0]}}', - 'camera; microphone', - '[object NavigatorUserMediaError]', - function() { - return promise_factory('camera; microphone'); - }); - </script> -</body> - diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-idl.https.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-idl.https.html new file mode 100644 index 00000000000..5164d997284 --- /dev/null +++ b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-idl.https.html @@ -0,0 +1,52 @@ +<!doctype html> +<title>MediaStreamTrack IDL tests</title> +<link rel="help" href="https://w3c.github.io/mediacapture-main/#media-stream-track-interface-definition"> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src=/resources/WebIDLParser.js></script> +<script src=/resources/idlharness.js></script> +<script> +function idl_test([dom_idl, stream]) { + const idl_array = new IdlArray(); + + idl_array.add_untested_idls(dom_idl); + idl_array.add_untested_idls('interface EventHandler {};'); + idl_array.add_idls("interface MediaStreamTrack : EventTarget {\ + readonly attribute DOMString kind;\ + readonly attribute DOMString id;\ + readonly attribute DOMString label;\ + attribute boolean enabled;\ + readonly attribute boolean muted;\ + attribute EventHandler onmute;\ + attribute EventHandler onunmute;\ + readonly attribute MediaStreamTrackState readyState;\ + attribute EventHandler onended;\ + attribute EventHandler onoverconstrained;\ + MediaStreamTrack clone ();\ + void stop ();\ + MediaTrackCapabilities getCapabilities ();\ + MediaTrackConstraints getConstraints ();\ + MediaTrackSettings getSettings ();\ + Promise<void> applyConstraints (optional MediaTrackConstraints constraints);\ +};\ +\ +enum MediaStreamTrackState {\ + \"live\",\ + \"ended\"\ +};"); + + self.track = stream.getTracks()[0]; + idl_array.add_objects({MediaStreamTrack: ["track"]}); + + idl_array.test(); +} + +promise_test(() => { + return Promise.all([ + fetch("/interfaces/dom.idl").then(response => response.text()), + navigator.mediaDevices.getUserMedia({audio: true}), + ]).then(idl_test); +}, "Test driver") +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-init.https.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-init.https.html index a51cb67913c..e3e5ada541c 100644 --- a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-init.https.html +++ b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-init.https.html @@ -18,53 +18,19 @@ object returned by the success callback in getUserMedia is correctly initialized <div id='log'></div> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> -<script src=/resources/WebIDLParser.js></script> -<script src=/resources/idlharness.js></script> <script> -var t = async_test("Tests that the video MediaStreamTrack objects are properly initialized", {timeout:10000}); -var track = null -var idl_array = new IdlArray(); - -idl_array.add_idls("interface EventTarget {\ - void addEventListener(DOMString type, EventListener? callback, optional boolean capture = false);\ - void removeEventListener(DOMString type, EventListener? callback, optional boolean capture = false);\ - boolean dispatchEvent(Event event);\ -};"); - -idl_array.add_idls("interface MediaStreamTrack : EventTarget {\ - readonly attribute DOMString kind;\ - readonly attribute DOMString id;\ - readonly attribute DOMString label;\ - attribute boolean enabled;\ - readonly attribute boolean muted;\ - attribute EventHandler onmute;\ - attribute EventHandler onunmute;\ - readonly attribute MediaStreamTrackState readyState;\ - attribute EventHandler onended;\ - attribute EventHandler onoverconstrained;\ - MediaStreamTrack clone ();\ - void stop ();\ - MediaTrackCapabilities getCapabilities ();\ - MediaTrackConstraints getConstraints ();\ - MediaTrackSettings getSettings ();\ - Promise<void> applyConstraints (optional MediaTrackConstraints constraints);\ -};"); - -t.step(function () { - navigator.mediaDevices.getUserMedia({video: true}) - .then(t.step_func(function (stream) { +promise_test(() => { + return navigator.mediaDevices.getUserMedia({video: true}) + .then(stream => { var videoTracks = stream.getVideoTracks(); assert_equals(videoTracks.length, 1, "There is exactly one video track in the media stream"); track = videoTracks[0]; - idl_array.add_objects({MediaStreamTrack: ["track"]}); - idl_array.test(); assert_equals(track.readyState, "live", "The track object is in live state"); assert_equals(track.kind, "video", "The track object is of video kind"); // Not clear that this is required by the spec, // see https://www.w3.org/Bugs/Public/show_bug.cgi?id=22212 assert_true(track.enabled, "The track object is enabed"); - t.done(); - })); + }); }); </script> </body> diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/OWNERS b/tests/wpt/web-platform-tests/mediacapture-streams/OWNERS index 2fec44486be..25688fa7c9b 100644 --- a/tests/wpt/web-platform-tests/mediacapture-streams/OWNERS +++ b/tests/wpt/web-platform-tests/mediacapture-streams/OWNERS @@ -1,3 +1,5 @@ @agouaillard @alvestrand @dontcallmedom +@eric-carlson +@youennf diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/form-tag/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/form-tag/top-level/keep-scheme-redirect/allowed.https.html deleted file mode 100644 index 742363922fb..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/form-tag/top-level/keep-scheme-redirect/allowed.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Allowed content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of allowed content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/"> - <meta name="assert" content="opt_in_method: http-csp - origin: same-host-https - source_scheme: https - context_nesting: top-level - redirection: keep-scheme-redirect - subresource: form-tag - expectation: allowed"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "http-csp", - "origin": "same-host-https", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "keep-scheme-redirect", - "subresource": "form-tag", - "expectation": "allowed" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/form-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/form-tag/top-level/no-redirect/allowed.https.html deleted file mode 100644 index 3f781b8201a..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/form-tag/top-level/no-redirect/allowed.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Allowed content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of allowed content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/"> - <meta name="assert" content="opt_in_method: http-csp - origin: same-host-https - source_scheme: https - context_nesting: top-level - redirection: no-redirect - subresource: form-tag - expectation: allowed"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "http-csp", - "origin": "same-host-https", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "no-redirect", - "subresource": "form-tag", - "expectation": "allowed" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/iframe-tag/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/iframe-tag/top-level/keep-scheme-redirect/allowed.https.html deleted file mode 100644 index f584e0be95a..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/iframe-tag/top-level/keep-scheme-redirect/allowed.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Allowed content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of allowed content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/"> - <meta name="assert" content="opt_in_method: http-csp - origin: same-host-https - source_scheme: https - context_nesting: top-level - redirection: keep-scheme-redirect - subresource: iframe-tag - expectation: allowed"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "http-csp", - "origin": "same-host-https", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "keep-scheme-redirect", - "subresource": "iframe-tag", - "expectation": "allowed" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/iframe-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/iframe-tag/top-level/no-redirect/allowed.https.html deleted file mode 100644 index eb24a71a796..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/iframe-tag/top-level/no-redirect/allowed.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Allowed content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of allowed content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/"> - <meta name="assert" content="opt_in_method: http-csp - origin: same-host-https - source_scheme: https - context_nesting: top-level - redirection: no-redirect - subresource: iframe-tag - expectation: allowed"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "http-csp", - "origin": "same-host-https", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "no-redirect", - "subresource": "iframe-tag", - "expectation": "allowed" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/worker-request/top-level/keep-scheme-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/worker-request/top-level/keep-scheme-redirect/allowed.https.html.headers deleted file mode 100644 index 46e2255e388..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/worker-request/top-level/keep-scheme-redirect/allowed.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/worker-request/top-level/no-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/worker-request/top-level/no-redirect/allowed.https.html.headers deleted file mode 100644 index 46e2255e388..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/worker-request/top-level/no-redirect/allowed.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/xhr-request/top-level/keep-scheme-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/xhr-request/top-level/keep-scheme-redirect/allowed.https.html.headers deleted file mode 100644 index 46e2255e388..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/xhr-request/top-level/keep-scheme-redirect/allowed.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/xhr-request/top-level/no-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/xhr-request/top-level/no-redirect/allowed.https.html.headers deleted file mode 100644 index 46e2255e388..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/xhr-request/top-level/no-redirect/allowed.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/form-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/form-tag/top-level/no-redirect/allowed.https.html deleted file mode 100644 index 8452988259b..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/form-tag/top-level/no-redirect/allowed.https.html +++ /dev/null @@ -1,41 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Allowed content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of allowed content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/"> - <meta name="assert" content="opt_in_method: meta-csp - origin: same-host-https - source_scheme: https - context_nesting: top-level - redirection: no-redirect - subresource: form-tag - expectation: allowed"> - <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "meta-csp", - "origin": "same-host-https", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "no-redirect", - "subresource": "form-tag", - "expectation": "allowed" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/iframe-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/iframe-tag/top-level/no-redirect/allowed.https.html deleted file mode 100644 index 148a6ec880d..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/iframe-tag/top-level/no-redirect/allowed.https.html +++ /dev/null @@ -1,41 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Allowed content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of allowed content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/"> - <meta name="assert" content="opt_in_method: meta-csp - origin: same-host-https - source_scheme: https - context_nesting: top-level - redirection: no-redirect - subresource: iframe-tag - expectation: allowed"> - <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "meta-csp", - "origin": "same-host-https", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "no-redirect", - "subresource": "iframe-tag", - "expectation": "allowed" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/form-tag/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/form-tag/top-level/keep-scheme-redirect/allowed.https.html deleted file mode 100644 index a640ddee7d9..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/form-tag/top-level/keep-scheme-redirect/allowed.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Allowed content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of allowed content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/"> - <meta name="assert" content="opt_in_method: no-opt-in - origin: same-host-https - source_scheme: https - context_nesting: top-level - redirection: keep-scheme-redirect - subresource: form-tag - expectation: allowed"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "no-opt-in", - "origin": "same-host-https", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "keep-scheme-redirect", - "subresource": "form-tag", - "expectation": "allowed" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/form-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/form-tag/top-level/no-redirect/allowed.https.html deleted file mode 100644 index 48f005a386e..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/form-tag/top-level/no-redirect/allowed.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Allowed content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of allowed content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/"> - <meta name="assert" content="opt_in_method: no-opt-in - origin: same-host-https - source_scheme: https - context_nesting: top-level - redirection: no-redirect - subresource: form-tag - expectation: allowed"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "no-opt-in", - "origin": "same-host-https", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "no-redirect", - "subresource": "form-tag", - "expectation": "allowed" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/iframe-tag/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/iframe-tag/top-level/keep-scheme-redirect/allowed.https.html deleted file mode 100644 index f44a0b54d66..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/iframe-tag/top-level/keep-scheme-redirect/allowed.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Allowed content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of allowed content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/"> - <meta name="assert" content="opt_in_method: no-opt-in - origin: same-host-https - source_scheme: https - context_nesting: top-level - redirection: keep-scheme-redirect - subresource: iframe-tag - expectation: allowed"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "no-opt-in", - "origin": "same-host-https", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "keep-scheme-redirect", - "subresource": "iframe-tag", - "expectation": "allowed" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/iframe-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/iframe-tag/top-level/no-redirect/allowed.https.html deleted file mode 100644 index 9cd4f1ba421..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/iframe-tag/top-level/no-redirect/allowed.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Allowed content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of allowed content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/"> - <meta name="assert" content="opt_in_method: no-opt-in - origin: same-host-https - source_scheme: https - context_nesting: top-level - redirection: no-redirect - subresource: iframe-tag - expectation: allowed"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "no-opt-in", - "origin": "same-host-https", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "no-redirect", - "subresource": "iframe-tag", - "expectation": "allowed" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html index ac620c1075b..ac620c1075b 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html index abc81b30191..abc81b30191 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html index 27c67b081dd..27c67b081dd 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html index 5fd63aa6d0b..5fd63aa6d0b 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html index e6f742213cc..e6f742213cc 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html index 522e9442072..522e9442072 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html index 5e6b8cbe168..5e6b8cbe168 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/keep-scheme-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/keep-scheme-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/keep-scheme-redirect/allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html index 0adc65f828b..0adc65f828b 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/no-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/audio-tag/top-level/no-redirect/allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/meta-csp/cross-origin-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/audio-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html index 283c34207bf..283c34207bf 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/meta-csp/cross-origin-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/meta-csp/same-host-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/audio-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html index 1c65507b4ce..1c65507b4ce 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/meta-csp/same-host-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/audio-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/audio-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html index a29157047a6..a29157047a6 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/audio-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/audio-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html index 15fe5d2afc1..15fe5d2afc1 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/audio-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/audio-tag/top-level/no-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html index 2da4a2b9361..2da4a2b9361 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/audio-tag/top-level/no-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/audio-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html index 8b610ada7db..8b610ada7db 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/audio-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/audio-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/audio-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html index cd4d8a52e76..cd4d8a52e76 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/audio-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/audio-tag/top-level/no-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/audio-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html index 20d31cf690e..20d31cf690e 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/audio-tag/top-level/no-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/audio-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/audio-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html index 2ed233dc885..2ed233dc885 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/audio-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/audio-tag/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/audio-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html index b30f28b2aab..b30f28b2aab 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/audio-tag/top-level/keep-scheme-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/audio-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/audio-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html index c13fd88e47e..c13fd88e47e 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/audio-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/audio-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html deleted file mode 100644 index 277d4789180..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: http-csp - origin: cross-origin-http - source_scheme: https - context_nesting: top-level - redirection: keep-scheme-redirect - subresource: form-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "http-csp", - "origin": "cross-origin-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "keep-scheme-redirect", - "subresource": "form-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html deleted file mode 100644 index 582ed6012b1..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: http-csp - origin: cross-origin-http - source_scheme: https - context_nesting: top-level - redirection: no-redirect - subresource: form-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "http-csp", - "origin": "cross-origin-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "no-redirect", - "subresource": "form-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html deleted file mode 100644 index 37d4db54b49..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/form-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: http-csp - origin: cross-origin-http - source_scheme: https - context_nesting: top-level - redirection: swap-scheme-redirect - subresource: form-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "http-csp", - "origin": "cross-origin-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "swap-scheme-redirect", - "subresource": "form-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html deleted file mode 100644 index b4957a41eb1..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: http-csp - origin: cross-origin-http - source_scheme: https - context_nesting: top-level - redirection: keep-scheme-redirect - subresource: iframe-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "http-csp", - "origin": "cross-origin-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "keep-scheme-redirect", - "subresource": "iframe-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html deleted file mode 100644 index e910a0ab7be..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: http-csp - origin: cross-origin-http - source_scheme: https - context_nesting: top-level - redirection: no-redirect - subresource: iframe-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "http-csp", - "origin": "cross-origin-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "no-redirect", - "subresource": "iframe-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html deleted file mode 100644 index 1f8763010f0..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: http-csp - origin: cross-origin-http - source_scheme: https - context_nesting: top-level - redirection: swap-scheme-redirect - subresource: iframe-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "http-csp", - "origin": "cross-origin-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "swap-scheme-redirect", - "subresource": "iframe-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html deleted file mode 100644 index 6d67e4d0e40..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: http-csp - origin: same-host-http - source_scheme: https - context_nesting: top-level - redirection: keep-scheme-redirect - subresource: form-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "http-csp", - "origin": "same-host-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "keep-scheme-redirect", - "subresource": "form-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html deleted file mode 100644 index 0d8b5ebdbd1..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: http-csp - origin: same-host-http - source_scheme: https - context_nesting: top-level - redirection: no-redirect - subresource: form-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "http-csp", - "origin": "same-host-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "no-redirect", - "subresource": "form-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html deleted file mode 100644 index 326ca747cb4..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: http-csp - origin: same-host-http - source_scheme: https - context_nesting: top-level - redirection: swap-scheme-redirect - subresource: form-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "http-csp", - "origin": "same-host-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "swap-scheme-redirect", - "subresource": "form-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html deleted file mode 100644 index 35e3102a5dd..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: http-csp - origin: same-host-http - source_scheme: https - context_nesting: top-level - redirection: keep-scheme-redirect - subresource: iframe-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "http-csp", - "origin": "same-host-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "keep-scheme-redirect", - "subresource": "iframe-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html deleted file mode 100644 index eaa1cc5d729..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: http-csp - origin: same-host-http - source_scheme: https - context_nesting: top-level - redirection: no-redirect - subresource: iframe-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "http-csp", - "origin": "same-host-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "no-redirect", - "subresource": "iframe-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html deleted file mode 100644 index ff99ecf9bbd..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: http-csp - origin: same-host-http - source_scheme: https - context_nesting: top-level - redirection: swap-scheme-redirect - subresource: iframe-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "http-csp", - "origin": "same-host-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "swap-scheme-redirect", - "subresource": "iframe-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/cross-origin-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/cross-origin-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html deleted file mode 100644 index 2ea8aadcaa3..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/cross-origin-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html +++ /dev/null @@ -1,41 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: meta-csp - origin: cross-origin-http - source_scheme: https - context_nesting: top-level - redirection: no-redirect - subresource: form-tag - expectation: blocked"> - <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "meta-csp", - "origin": "cross-origin-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "no-redirect", - "subresource": "form-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/cross-origin-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/cross-origin-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html deleted file mode 100644 index 2aa9e013bb1..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/cross-origin-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html +++ /dev/null @@ -1,41 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: meta-csp - origin: cross-origin-http - source_scheme: https - context_nesting: top-level - redirection: no-redirect - subresource: iframe-tag - expectation: blocked"> - <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "meta-csp", - "origin": "cross-origin-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "no-redirect", - "subresource": "iframe-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/same-host-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/same-host-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html deleted file mode 100644 index b5dcde734a4..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/same-host-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html +++ /dev/null @@ -1,41 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: meta-csp - origin: same-host-http - source_scheme: https - context_nesting: top-level - redirection: no-redirect - subresource: form-tag - expectation: blocked"> - <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "meta-csp", - "origin": "same-host-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "no-redirect", - "subresource": "form-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/same-host-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/same-host-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html deleted file mode 100644 index 1fb7a9385a6..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/same-host-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html +++ /dev/null @@ -1,41 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: meta-csp - origin: same-host-http - source_scheme: https - context_nesting: top-level - redirection: no-redirect - subresource: iframe-tag - expectation: blocked"> - <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "meta-csp", - "origin": "same-host-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "no-redirect", - "subresource": "iframe-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/form-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/form-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html deleted file mode 100644 index aaeaf76737f..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/form-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: no-opt-in - origin: cross-origin-http - source_scheme: https - context_nesting: top-level - redirection: keep-scheme-redirect - subresource: form-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "no-opt-in", - "origin": "cross-origin-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "keep-scheme-redirect", - "subresource": "form-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/form-tag/top-level/no-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/form-tag/top-level/no-redirect/no-opt-in-blocks.https.html deleted file mode 100644 index a649f4de484..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/form-tag/top-level/no-redirect/no-opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: no-opt-in - origin: cross-origin-http - source_scheme: https - context_nesting: top-level - redirection: no-redirect - subresource: form-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "no-opt-in", - "origin": "cross-origin-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "no-redirect", - "subresource": "form-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/form-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/form-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html deleted file mode 100644 index fa1d0fe9094..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/form-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: no-opt-in - origin: cross-origin-http - source_scheme: https - context_nesting: top-level - redirection: swap-scheme-redirect - subresource: form-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "no-opt-in", - "origin": "cross-origin-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "swap-scheme-redirect", - "subresource": "form-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/iframe-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/iframe-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html deleted file mode 100644 index 0dad760aad3..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/iframe-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: no-opt-in - origin: cross-origin-http - source_scheme: https - context_nesting: top-level - redirection: keep-scheme-redirect - subresource: iframe-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "no-opt-in", - "origin": "cross-origin-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "keep-scheme-redirect", - "subresource": "iframe-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/iframe-tag/top-level/no-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/iframe-tag/top-level/no-redirect/no-opt-in-blocks.https.html deleted file mode 100644 index ed11ad73e8d..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/iframe-tag/top-level/no-redirect/no-opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: no-opt-in - origin: cross-origin-http - source_scheme: https - context_nesting: top-level - redirection: no-redirect - subresource: iframe-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "no-opt-in", - "origin": "cross-origin-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "no-redirect", - "subresource": "iframe-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/iframe-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/iframe-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html deleted file mode 100644 index de84e1278b6..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/iframe-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: no-opt-in - origin: cross-origin-http - source_scheme: https - context_nesting: top-level - redirection: swap-scheme-redirect - subresource: iframe-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "no-opt-in", - "origin": "cross-origin-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "swap-scheme-redirect", - "subresource": "iframe-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/form-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/form-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html deleted file mode 100644 index 45a2764ade6..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/form-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: no-opt-in - origin: same-host-http - source_scheme: https - context_nesting: top-level - redirection: keep-scheme-redirect - subresource: form-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "no-opt-in", - "origin": "same-host-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "keep-scheme-redirect", - "subresource": "form-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/form-tag/top-level/no-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/form-tag/top-level/no-redirect/no-opt-in-blocks.https.html deleted file mode 100644 index 09e948a84b5..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/form-tag/top-level/no-redirect/no-opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: no-opt-in - origin: same-host-http - source_scheme: https - context_nesting: top-level - redirection: no-redirect - subresource: form-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "no-opt-in", - "origin": "same-host-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "no-redirect", - "subresource": "form-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/form-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/form-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html deleted file mode 100644 index f72d269d11e..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/form-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: no-opt-in - origin: same-host-http - source_scheme: https - context_nesting: top-level - redirection: swap-scheme-redirect - subresource: form-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "no-opt-in", - "origin": "same-host-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "swap-scheme-redirect", - "subresource": "form-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/iframe-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/iframe-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html deleted file mode 100644 index a69f2bb412e..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/iframe-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: no-opt-in - origin: same-host-http - source_scheme: https - context_nesting: top-level - redirection: keep-scheme-redirect - subresource: iframe-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "no-opt-in", - "origin": "same-host-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "keep-scheme-redirect", - "subresource": "iframe-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/iframe-tag/top-level/no-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/iframe-tag/top-level/no-redirect/no-opt-in-blocks.https.html deleted file mode 100644 index f98fe6c4cdf..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/iframe-tag/top-level/no-redirect/no-opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: no-opt-in - origin: same-host-http - source_scheme: https - context_nesting: top-level - redirection: no-redirect - subresource: iframe-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "no-opt-in", - "origin": "same-host-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "no-redirect", - "subresource": "iframe-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/iframe-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/iframe-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html deleted file mode 100644 index b891c73e817..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/iframe-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html +++ /dev/null @@ -1,40 +0,0 @@ -<!DOCTYPE html> -<!-- DO NOT EDIT! Generated by mixed-content/generic/tools/generate.py using mixed-content/generic/template/test.release.html.template. --> -<html> - <head> - <title>Mixed-Content: Blockable content</title> - <meta charset='utf-8'> - <meta name="description" content="Test behavior of blockable content."> - <link rel="author" title="Kristijan Burnik" href="burnik@chromium.org"> - <link rel="help" href="http://www.w3.org/TR/mixed-content/#category-blockable"> - <meta name="assert" content="opt_in_method: no-opt-in - origin: same-host-http - source_scheme: https - context_nesting: top-level - redirection: swap-scheme-redirect - subresource: iframe-tag - expectation: blocked"> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - <script src="/mixed-content/generic/common.js"></script> - <script src="/mixed-content/generic/mixed-content-test-case.js?pipe=sub"></script> - </head> - <body> - <script> - MixedContentTestCase( - { - "opt_in_method": "no-opt-in", - "origin": "same-host-http", - "source_scheme": "https", - "context_nesting": "top-level", - "redirection": "swap-scheme-redirect", - "subresource": "iframe-tag", - "expectation": "blocked" - }, - document.querySelector("meta[name=assert]").content, - new SanityChecker() - ).start(); - </script> - <div id="log"></div> - </body> -</html> diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html index 012bd3540a1..012bd3540a1 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index 54fbe3a8477..54fbe3a8477 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html index f9555455807..f9555455807 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/fetch-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/iframe-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html index c03b96f01fa..c03b96f01fa 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index a7ce2a53055..a7ce2a53055 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html index 1eec54d3b2c..1eec54d3b2c 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/fetch-request/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html index 260fb14b042..260fb14b042 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/fetch-request/top-level/keep-scheme-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/fetch-request/top-level/keep-scheme-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/fetch-request/top-level/keep-scheme-redirect/allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/fetch-request/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html index 9b18ebb78b2..9b18ebb78b2 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/fetch-request/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/fetch-request/top-level/no-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/fetch-request/top-level/no-redirect/allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/cross-origin-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/fetch-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index a1b37ef1ee7..a1b37ef1ee7 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/cross-origin-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/same-host-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/fetch-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index 0fb506de19f..0fb506de19f 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/same-host-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/fetch-request/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/fetch-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html index 825fb2441b4..825fb2441b4 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/fetch-request/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/fetch-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html index f35fd03dae8..f35fd03dae8 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/fetch-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/fetch-request/top-level/no-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html index 3b2d158d631..3b2d158d631 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/fetch-request/top-level/no-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/fetch-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html index 24a1e8671d8..24a1e8671d8 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/fetch-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/fetch-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/fetch-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html index d7aa3899bfa..d7aa3899bfa 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/fetch-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/fetch-request/top-level/no-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/fetch-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html index 55c768525d1..55c768525d1 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/fetch-request/top-level/no-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/fetch-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/fetch-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html index 13de80df73c..13de80df73c 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/fetch-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/fetch-request/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/fetch-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html index 9045019de11..9045019de11 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/fetch-request/top-level/keep-scheme-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/fetch-request/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/fetch-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html index d4b8292af32..d4b8292af32 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/fetch-request/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/fetch-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/generic/common.js b/tests/wpt/web-platform-tests/mixed-content/generic/common.js index 36427a4669f..d04aabcfcd2 100644 --- a/tests/wpt/web-platform-tests/mixed-content/generic/common.js +++ b/tests/wpt/web-platform-tests/mixed-content/generic/common.js @@ -50,9 +50,9 @@ function xhrRequest(url, responseType) { xhr.addEventListener("load", function() { if (xhr.status != 200) - return reject(Error(xhr.statusText)); - - resolve(xhr.response); + reject(Error(xhr.statusText)); + else + resolve(xhr.response); }); xhr.send(); @@ -99,7 +99,7 @@ function bindEvents(element, resolveEventName, rejectEventName) { * {@code eventPromise} property. Default value evaluates to false. * @return {DOMElement} The newly created DOM element. */ -function createElement(tagName, attrs, parent, doBindEvents) { +function createElement(tagName, attrs, parentNode, doBindEvents) { var element = document.createElement(tagName); if (doBindEvents) @@ -117,8 +117,8 @@ function createElement(tagName, attrs, parent, doBindEvents) { if (!isImg) setAttributes(element, attrs); - if (parent) - parent.appendChild(element); + if (parentNode) + parentNode.appendChild(element); if (isImg) setAttributes(element, attrs); @@ -126,8 +126,8 @@ function createElement(tagName, attrs, parent, doBindEvents) { return element; } -function createRequestViaElement(tagName, attrs, parent) { - return createElement(tagName, attrs, parent, true).eventPromise; +function createRequestViaElement(tagName, attrs, parentNode) { + return createElement(tagName, attrs, parentNode, true).eventPromise; } /** @@ -189,7 +189,12 @@ function requestViaFetch(url) { * @return {Promise} The promise for success/error events. */ function requestViaWorker(url) { - var worker = new Worker(url); + var worker; + try { + worker = new Worker(url); + } catch (e) { + return Promise.reject(e); + } bindEvents(worker, "message", "error"); worker.postMessage(''); @@ -304,16 +309,20 @@ function requestViaLinkPrefetch(url) { */ function createMediaElement(type, media_attrs, source_attrs) { var mediaElement = createElement(type, {}); - var sourceElement = createElement("source", {}, mediaElement); + + var sourceElement = createElement("source", {}); mediaElement.eventPromise = new Promise(function(resolve, reject) { mediaElement.addEventListener("loadeddata", resolve); + // Notice that the source element will raise the error. sourceElement.addEventListener("error", reject); }); setAttributes(mediaElement, media_attrs); setAttributes(sourceElement, source_attrs); + + mediaElement.appendChild(sourceElement); document.body.appendChild(mediaElement); return mediaElement; @@ -328,7 +337,7 @@ function createMediaElement(type, media_attrs, source_attrs) { function requestViaVideo(url) { return createMediaElement("video", {}, - {type: "video/mp4", src: url}).eventPromise; + {type: "video/ogg", src: url}).eventPromise; } /** @@ -340,7 +349,7 @@ function requestViaVideo(url) { function requestViaAudio(url) { return createMediaElement("audio", {}, - {type: "audio/mpeg", src: url}).eventPromise; + {type: "audio/wav", src: url}).eventPromise; } /** diff --git a/tests/wpt/web-platform-tests/mixed-content/generic/expect.py b/tests/wpt/web-platform-tests/mixed-content/generic/expect.py index a3ea61b2139..672a54c3a6e 100644 --- a/tests/wpt/web-platform-tests/mixed-content/generic/expect.py +++ b/tests/wpt/web-platform-tests/mixed-content/generic/expect.py @@ -71,14 +71,13 @@ def main(request, response): response_data = open(os.path.join(request.doc_root, "images", "smiley.png"), "rb").read() - elif content_type == "audio/mpeg": + elif content_type == "audio/wav": response_data = open(os.path.join(request.doc_root, - "media", - "sound_5.oga"), "rb").read() - elif content_type == "video/mp4": + "webaudio", "resources", "sin_440Hz_-6dBFS_1s.wav"), "rb").read() + elif content_type == "video/ogg": response_data = open(os.path.join(request.doc_root, "media", - "movie_5.mp4"), "rb").read() + "movie_5.ogv"), "rb").read() elif content_type == "application/javascript": response_data = open(os.path.join(request.doc_root, "mixed-content", diff --git a/tests/wpt/web-platform-tests/mixed-content/generic/mixed-content-test-case.js b/tests/wpt/web-platform-tests/mixed-content/generic/mixed-content-test-case.js index 7f3a7bfa967..1dcf27eb4e5 100644 --- a/tests/wpt/web-platform-tests/mixed-content/generic/mixed-content-test-case.js +++ b/tests/wpt/web-platform-tests/mixed-content/generic/mixed-content-test-case.js @@ -88,8 +88,8 @@ function MixedContentTestCase(scenario, description, sanityChecker) { "script-tag": "text/javascript", "worker-request": "application/javascript", "xhr-request": "application/json", - "audio-tag": "audio/mpeg", - "video-tag": "video/mp4", + "audio-tag": "audio/wav", + "video-tag": "video/ogg", "picture-tag": "image/png", "object-tag": "text/html", "link-css-tag": "text/css", @@ -119,12 +119,12 @@ function MixedContentTestCase(scenario, description, sanityChecker) { contentType[scenario.subresource]; xhrRequest(announceResourceRequestUrl) - .then(function(response) { + .then(mixed_content_test.step_func(_ => { // Send out the real resource request. // This should tear down the key if it's not blocked. return resourceMap[scenario.subresource](resourceRequestUrl); - }) - .then(function() { + })) + .then(mixed_content_test.step_func(_ => { mixed_content_test.step(function() { assert_equals("allowed", scenario.expectation, "The triggered event should match '" + @@ -133,7 +133,8 @@ function MixedContentTestCase(scenario, description, sanityChecker) { // Send request to check if the key has been torn down. return xhrRequest(assertResourceRequestUrl); - }, function(error) { + })) + .catch(mixed_content_test.step_func(e => { mixed_content_test.step(function() { assert_equals("blocked", scenario.expectation, "The triggered event should match '" + @@ -145,19 +146,15 @@ function MixedContentTestCase(scenario, description, sanityChecker) { // When requestResource fails, we also check the key state. return xhrRequest(assertResourceRequestUrl); - }) - .then(function(response) { + })) + .then(mixed_content_test.step_func_done(response => { // Now check if the value has been torn down. If it's still there, // we have blocked the request to mixed-content. - mixed_content_test.step(function() { - assert_equals(response.status, scenario.expectation, - "The resource request should be '" + scenario.expectation + - "'."); - }, "Check if request was sent."); - mixed_content_test.done(); - }); + assert_equals(response.status, scenario.expectation, + "The resource request should be '" + scenario.expectation + "'."); + })); } // runTest - return {start: runTest}; + return {start: mixed_content_test.step_func(runTest) }; } // MixedContentTestCase diff --git a/tests/wpt/web-platform-tests/mixed-content/generic/tools/clean.py b/tests/wpt/web-platform-tests/mixed-content/generic/tools/clean.py index 9416f0b5bd9..15f294b5c8c 100755 --- a/tests/wpt/web-platform-tests/mixed-content/generic/tools/clean.py +++ b/tests/wpt/web-platform-tests/mixed-content/generic/tools/clean.py @@ -8,7 +8,6 @@ def rmtree(top): top = os.path.abspath(top) assert top != os.path.expanduser("~") assert len(top) > len(os.path.expanduser("~")) - assert "web-platform-tests" in top assert "mixed-content" in top for root, dirs, files in os.walk(top, topdown=False): diff --git a/tests/wpt/web-platform-tests/mixed-content/generic/tools/common_paths.py b/tests/wpt/web-platform-tests/mixed-content/generic/tools/common_paths.py index 5c2807d2834..0bf41f2d1c6 100644 --- a/tests/wpt/web-platform-tests/mixed-content/generic/tools/common_paths.py +++ b/tests/wpt/web-platform-tests/mixed-content/generic/tools/common_paths.py @@ -13,13 +13,14 @@ test_root_directory = os.path.abspath(os.path.join(script_directory, spec_filename = os.path.join(spec_directory, "spec.src.json") generated_spec_json_filename = os.path.join(spec_directory, "spec_json.js") -selection_pattern = '%(opt_in_method)s/' + \ +selection_pattern = '%(subresource)s/' + \ + '%(opt_in_method)s/' + \ '%(origin)s/' + \ - '%(subresource)s/' + \ '%(context_nesting)s/' + \ '%(redirection)s/' -test_file_path_pattern = '%(spec_name)s/' + selection_pattern + \ +test_file_path_pattern = selection_pattern + \ + '%(spec_name)s/' + \ '%(name)s.%(source_scheme)s.html' diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html index 1816b4231bd..1816b4231bd 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html index 509fc34750f..509fc34750f 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html index 61baeee7944..61baeee7944 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html index ad615e9b23f..ad615e9b23f 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html index b6f92431a3a..b6f92431a3a 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html index 580f4b5492f..580f4b5492f 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/img-tag/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html index 77adba6442a..77adba6442a 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/img-tag/top-level/keep-scheme-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/form-tag/top-level/keep-scheme-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/form-tag/top-level/keep-scheme-redirect/allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/img-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html index b08d413e8eb..b08d413e8eb 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/img-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/form-tag/top-level/no-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/form-tag/top-level/no-redirect/allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/meta-csp/cross-origin-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/img-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html index 684d2449a4e..684d2449a4e 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/meta-csp/cross-origin-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/meta-csp/same-host-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/img-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html index b05dff3b33d..b05dff3b33d 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/meta-csp/same-host-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/img-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/img-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html index e4ac20f4f08..e4ac20f4f08 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/img-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/img-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html index 5a7bdc3b538..5a7bdc3b538 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/img-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/img-tag/top-level/no-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html index 6c0a9f5e686..6c0a9f5e686 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/img-tag/top-level/no-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/img-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html index c9ffbfd0c70..c9ffbfd0c70 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/img-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/img-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/img-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html index aab662fc3ab..aab662fc3ab 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/img-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/img-tag/top-level/no-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/img-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html index 6f0a8fdedef..6f0a8fdedef 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/img-tag/top-level/no-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/img-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/img-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html index f55cce43713..f55cce43713 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/img-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/img-tag/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/img-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html index 54bb60accf1..54bb60accf1 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/img-tag/top-level/keep-scheme-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/img-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/img-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html index 26d7d2390ae..26d7d2390ae 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/img-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/img-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html index 7376626e2e1..7376626e2e1 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index fc123d9638d..fc123d9638d 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html index f7fd32cbf9b..f7fd32cbf9b 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/link-css-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html index b93d1778422..b93d1778422 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index b23f9f0eb68..b23f9f0eb68 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html index 122ee404dc7..122ee404dc7 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/link-css-tag/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html index 606887e3dd5..606887e3dd5 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/link-css-tag/top-level/keep-scheme-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/iframe-tag/top-level/keep-scheme-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/iframe-tag/top-level/keep-scheme-redirect/allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/link-css-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html index 2f4f750de9f..2f4f750de9f 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/link-css-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/iframe-tag/top-level/no-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/iframe-tag/top-level/no-redirect/allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/cross-origin-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index 191b4a9ea66..191b4a9ea66 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/cross-origin-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/same-host-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index 5e71b99d4c6..5e71b99d4c6 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/same-host-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/link-css-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html index 869c05abeca..869c05abeca 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/link-css-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/link-css-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html index 13c536f3eb5..13c536f3eb5 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/link-css-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/link-css-tag/top-level/no-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html index e941030043e..e941030043e 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/link-css-tag/top-level/no-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/link-css-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html index c9efe54e44a..c9efe54e44a 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/link-css-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/link-css-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html index 11d8f4877a7..11d8f4877a7 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/link-css-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/link-css-tag/top-level/no-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html index ce383d9aacb..ce383d9aacb 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/link-css-tag/top-level/no-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/link-css-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html index 67b58e0096c..67b58e0096c 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/link-css-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/link-css-tag/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html index 7d620f8da93..7d620f8da93 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/link-css-tag/top-level/keep-scheme-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/link-css-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html index f6d23405dd5..f6d23405dd5 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/link-css-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-css-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html index 743515ed351..743515ed351 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html index 88a54250a12..88a54250a12 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html index 2098a60b628..2098a60b628 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html index fa8bd8a1f49..fa8bd8a1f49 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html index 685f34582a0..685f34582a0 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/no-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html index ab0378461d1..ab0378461d1 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/fetch-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/link-prefetch-tag/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html index a047941dcd4..a047941dcd4 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/link-prefetch-tag/top-level/keep-scheme-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/img-tag/top-level/keep-scheme-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/img-tag/top-level/keep-scheme-redirect/allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/link-prefetch-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html index bd24109afe2..bd24109afe2 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/link-prefetch-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/img-tag/top-level/no-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/img-tag/top-level/no-redirect/allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/meta-csp/cross-origin-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html index 7f5cc295598..7f5cc295598 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/meta-csp/cross-origin-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/meta-csp/same-host-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html index 28003d9a1bd..28003d9a1bd 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/meta-csp/same-host-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/link-prefetch-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html index 71ef6d359d1..71ef6d359d1 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/link-prefetch-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/link-prefetch-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html index 76629861437..76629861437 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/link-prefetch-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/link-prefetch-tag/top-level/no-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html index 5bcce0017db..5bcce0017db 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/link-prefetch-tag/top-level/no-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/link-prefetch-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html index 31230323496..31230323496 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/link-prefetch-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/link-prefetch-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html index 26c76572040..26c76572040 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/link-prefetch-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/link-prefetch-tag/top-level/no-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html index 582f6c63a5d..582f6c63a5d 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/link-prefetch-tag/top-level/no-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/link-prefetch-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html index a7feabccba1..a7feabccba1 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/link-prefetch-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/link-prefetch-tag/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html index c3ea33fdb70..c3ea33fdb70 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/link-prefetch-tag/top-level/keep-scheme-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/link-prefetch-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html index 4c591115391..4c591115391 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/link-prefetch-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/link-prefetch-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html index 8ebd99b0118..8ebd99b0118 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index b7743daa64c..b7743daa64c 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/no-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html index 3fe162a2f7c..3fe162a2f7c 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/object-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/form-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html index 4c43f3aea64..4c43f3aea64 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index 27da8b421be..27da8b421be 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/no-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html index 01df78229ff..01df78229ff 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/iframe-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/object-tag/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html index d1be723f15d..d1be723f15d 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/object-tag/top-level/keep-scheme-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/link-css-tag/top-level/keep-scheme-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/link-css-tag/top-level/keep-scheme-redirect/allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/object-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html index 3f8ec136a1c..3f8ec136a1c 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/object-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/link-css-tag/top-level/no-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/link-css-tag/top-level/no-redirect/allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/cross-origin-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/object-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index ee5cfea7192..ee5cfea7192 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/cross-origin-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/same-host-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/object-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index 28fdc6f0887..28fdc6f0887 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/same-host-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/object-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/object-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html index 662ac192a88..662ac192a88 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/object-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/object-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html index 23e6badf7ea..23e6badf7ea 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/object-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/object-tag/top-level/no-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html index 482024535f9..482024535f9 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/object-tag/top-level/no-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/object-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html index f91df5037e7..f91df5037e7 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/object-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/object-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/object-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html index 190b66b0d62..190b66b0d62 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/object-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/object-tag/top-level/no-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/object-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html index c03d5036a38..c03d5036a38 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/object-tag/top-level/no-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/object-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/object-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html index d9a16660981..d9a16660981 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/object-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/object-tag/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/object-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html index ebfb5195eb1..ebfb5195eb1 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/object-tag/top-level/keep-scheme-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/object-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/object-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html index f5ffcf3a8b2..f5ffcf3a8b2 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/object-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/object-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers deleted file mode 100644 index 46e2255e388..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html.headers deleted file mode 100644 index 46e2255e388..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers deleted file mode 100644 index 46e2255e388..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/audio-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers deleted file mode 100644 index 46e2255e388..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html.headers deleted file mode 100644 index 46e2255e388..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers deleted file mode 100644 index 46e2255e388..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/img-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers deleted file mode 100644 index 46e2255e388..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html.headers deleted file mode 100644 index 46e2255e388..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers deleted file mode 100644 index 46e2255e388..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/link-prefetch-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers deleted file mode 100644 index 46e2255e388..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html.headers deleted file mode 100644 index 46e2255e388..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers deleted file mode 100644 index 46e2255e388..00000000000 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ /dev/null @@ -1 +0,0 @@ -Content-Security-Policy: block-all-mixed-content diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html index 6f71158c216..6f71158c216 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index 48012dfe550..48012dfe550 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/no-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html index b76c48a658a..b76c48a658a 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/picture-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/link-css-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html index 27e971ac49c..27e971ac49c 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index 0fe505a4b05..0fe505a4b05 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/no-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html index d066d7f4af1..d066d7f4af1 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/object-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/picture-tag/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html index 3ae09e2e3f3..3ae09e2e3f3 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/picture-tag/top-level/keep-scheme-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/link-prefetch-tag/top-level/keep-scheme-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/link-prefetch-tag/top-level/keep-scheme-redirect/allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/picture-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html index 883c0bbdf78..883c0bbdf78 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/picture-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/link-prefetch-tag/top-level/no-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/link-prefetch-tag/top-level/no-redirect/allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/cross-origin-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/picture-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index abe50087f63..abe50087f63 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/cross-origin-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/same-host-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/picture-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index 9c484e398a2..9c484e398a2 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/same-host-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/picture-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/picture-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html index 0d846777fab..0d846777fab 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/picture-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/picture-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html index 09fadc8d3fb..09fadc8d3fb 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/picture-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/picture-tag/top-level/no-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html index 63505012881..63505012881 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/picture-tag/top-level/no-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/picture-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html index c3bedd387d7..c3bedd387d7 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/picture-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/picture-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/picture-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html index 0b2a8c8ff5a..0b2a8c8ff5a 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/picture-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/picture-tag/top-level/no-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/picture-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html index 532c97bf066..532c97bf066 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/picture-tag/top-level/no-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/picture-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/picture-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html index 662fc90485a..662fc90485a 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/picture-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/picture-tag/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/picture-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html index 57efd6f5ec4..57efd6f5ec4 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/picture-tag/top-level/keep-scheme-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/picture-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/picture-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html index e3113a84c9f..e3113a84c9f 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/picture-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/picture-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html index 61f10dfbff3..61f10dfbff3 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index 69210c6061d..69210c6061d 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/no-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html index a2201a2132a..a2201a2132a 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/script-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/picture-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html index 011e515da17..011e515da17 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index 5c8d860a695..5c8d860a695 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html index 123e53d2027..123e53d2027 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/script-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/script-tag/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html index cb3528e03c9..cb3528e03c9 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/script-tag/top-level/keep-scheme-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/object-tag/top-level/keep-scheme-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/object-tag/top-level/keep-scheme-redirect/allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/script-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html index 7bffa299c5d..7bffa299c5d 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/script-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/object-tag/top-level/no-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/object-tag/top-level/no-redirect/allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/cross-origin-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/script-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index 7e9a2395a3c..7e9a2395a3c 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/cross-origin-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/same-host-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/script-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index 44b4795c91e..44b4795c91e 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/same-host-http/script-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/script-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/script-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html index 0d0eec01c36..0d0eec01c36 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/script-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/script-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html index 4c375acd157..4c375acd157 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/script-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/script-tag/top-level/no-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html index 21d15255719..21d15255719 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/script-tag/top-level/no-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/script-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html index cd56451c5e4..cd56451c5e4 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/script-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/script-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/script-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html index cc1c051a364..cc1c051a364 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/script-tag/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/script-tag/top-level/no-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/script-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html index 23efca0a54c..23efca0a54c 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/script-tag/top-level/no-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/script-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/script-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html index 69e151519bb..69e151519bb 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/script-tag/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/script-tag/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/script-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html index 9dc0bb122c4..9dc0bb122c4 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/script-tag/top-level/keep-scheme-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/script-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/script-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html index bad7e7f2104..bad7e7f2104 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/script-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/script-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/spec.src.json b/tests/wpt/web-platform-tests/mixed-content/spec.src.json index 3f1540ab408..536646d3cea 100644 --- a/tests/wpt/web-platform-tests/mixed-content/spec.src.json +++ b/tests/wpt/web-platform-tests/mixed-content/spec.src.json @@ -231,10 +231,8 @@ ], "subresource": { "blockable": [ - "iframe-tag", "script-tag", "link-css-tag", - "form-tag", "xhr-request", "worker-request", "fetch-request", diff --git a/tests/wpt/web-platform-tests/mixed-content/spec_json.js b/tests/wpt/web-platform-tests/mixed-content/spec_json.js index 5de1b17e303..44012ee40ab 100644 --- a/tests/wpt/web-platform-tests/mixed-content/spec_json.js +++ b/tests/wpt/web-platform-tests/mixed-content/spec_json.js @@ -1 +1 @@ -var SPEC_JSON = {"test_expansion_schema": {"origin": ["same-host-https", "same-host-http", "cross-origin-https", "cross-origin-http", "same-host-wss", "same-host-ws", "cross-origin-wss", "cross-origin-ws"], "subresource": {"blockable": ["iframe-tag", "script-tag", "link-css-tag", "form-tag", "xhr-request", "worker-request", "fetch-request", "a-tag", "object-tag", "picture-tag", "websocket-request"], "optionally-blockable": ["img-tag", "audio-tag", "video-tag", "link-prefetch-tag"]}, "context_nesting": ["top-level", "sub-level"], "expectation": ["allowed", "blocked"], "expansion": ["default", "override"], "redirection": ["no-redirect", "keep-scheme-redirect", "swap-scheme-redirect"], "opt_in_method": ["no-opt-in", "http-csp", "meta-csp", "img-crossorigin"], "source_scheme": ["http", "https"]}, "specification": [{"test_expansion": [{"origin": ["cross-origin-http", "same-host-http"], "name": "opt-in-blocks", "redirection": "*", "expectation": "blocked", "expansion": "default", "context_nesting": "top-level", "opt_in_method": ["http-csp", "meta-csp"], "source_scheme": "https", "subresource": {"blockable": [], "optionally-blockable": "*"}}, {"origin": ["cross-origin-http", "same-host-http"], "name": "no-opt-in-allows", "redirection": "*", "expectation": "allowed", "expansion": "default", "context_nesting": "top-level", "opt_in_method": "no-opt-in", "source_scheme": "https", "subresource": {"blockable": [], "optionally-blockable": "*"}}], "description": "Test behavior of optionally-blockable content", "specification_url": "http://www.w3.org/TR/mixed-content/#category-optionally-blockable", "name": "optionally-blockable", "title": "Optionally-blockable content"}, {"test_expansion": [{"origin": ["cross-origin-http", "same-host-http"], "name": "opt-in-blocks", "redirection": "*", "expectation": "blocked", "expansion": "default", "context_nesting": "top-level", "opt_in_method": ["http-csp", "meta-csp"], "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": []}}, {"origin": ["cross-origin-http", "same-host-http"], "name": "no-opt-in-blocks", "redirection": "*", "expectation": "blocked", "expansion": "default", "context_nesting": "top-level", "opt_in_method": "no-opt-in", "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": []}}, {"origin": ["cross-origin-ws", "same-host-ws"], "name": "ws-downgrade-blocks", "redirection": "*", "expectation": "blocked", "expansion": "default", "context_nesting": "top-level", "opt_in_method": ["no-opt-in", "http-csp", "meta-csp"], "source_scheme": "https", "subresource": {"blockable": "websocket-request", "optionally-blockable": []}}], "description": "Test behavior of blockable content.", "specification_url": "http://www.w3.org/TR/mixed-content/#category-blockable", "name": "blockable", "title": "Blockable content"}, {"test_expansion": [{"origin": ["same-host-https"], "name": "allowed", "redirection": ["no-redirect", "keep-scheme-redirect"], "expectation": "allowed", "expansion": "default", "context_nesting": "top-level", "opt_in_method": "*", "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": "*"}}, {"origin": ["same-host-wss"], "name": "websocket-allowed", "redirection": ["no-redirect", "keep-scheme-redirect"], "expectation": "allowed", "expansion": "default", "context_nesting": "top-level", "opt_in_method": "*", "source_scheme": "https", "subresource": {"blockable": "websocket-request", "optionally-blockable": []}}], "description": "Test behavior of allowed content.", "specification_url": "http://www.w3.org/TR/mixed-content/", "name": "allowed", "title": "Allowed content"}], "excluded_tests": [{"origin": "*", "name": "Redundant-subresources", "redirection": "*", "expectation": "*", "expansion": "*", "context_nesting": "*", "opt_in_method": "*", "source_scheme": "*", "subresource": {"blockable": ["a-tag"], "optionally-blockable": []}}, {"origin": ["same-host-https", "same-host-http", "cross-origin-https", "cross-origin-http"], "name": "Skip-origins-not-applicable-to-websockets", "redirection": "*", "expectation": "*", "expansion": "*", "context_nesting": "*", "opt_in_method": "*", "source_scheme": "*", "subresource": {"blockable": ["websocket-request"], "optionally-blockable": []}}, {"origin": "*", "name": "TODO-opt-in-method-img-cross-origin", "redirection": "*", "expectation": "*", "expansion": "*", "context_nesting": "*", "opt_in_method": "img-crossorigin", "source_scheme": "*", "subresource": {"blockable": "*", "optionally-blockable": "*"}}, {"origin": "*", "name": "Skip-redundant-for-opt-in-method", "redirection": ["keep-scheme-redirect", "swap-scheme-redirect"], "expectation": "*", "expansion": "*", "context_nesting": "*", "opt_in_method": ["meta-csp", "img-crossorigin"], "source_scheme": "*", "subresource": {"blockable": "*", "optionally-blockable": "*"}}]}; +var SPEC_JSON = {"test_expansion_schema": {"origin": ["same-host-https", "same-host-http", "cross-origin-https", "cross-origin-http", "same-host-wss", "same-host-ws", "cross-origin-wss", "cross-origin-ws"], "subresource": {"blockable": ["script-tag", "link-css-tag", "xhr-request", "worker-request", "fetch-request", "a-tag", "object-tag", "picture-tag", "websocket-request"], "optionally-blockable": ["img-tag", "audio-tag", "video-tag", "link-prefetch-tag"]}, "context_nesting": ["top-level", "sub-level"], "expectation": ["allowed", "blocked"], "expansion": ["default", "override"], "redirection": ["no-redirect", "keep-scheme-redirect", "swap-scheme-redirect"], "opt_in_method": ["no-opt-in", "http-csp", "meta-csp", "img-crossorigin"], "source_scheme": ["http", "https"]}, "specification": [{"test_expansion": [{"origin": ["cross-origin-http", "same-host-http"], "name": "opt-in-blocks", "redirection": "*", "expectation": "blocked", "expansion": "default", "context_nesting": "top-level", "opt_in_method": ["http-csp", "meta-csp"], "source_scheme": "https", "subresource": {"blockable": [], "optionally-blockable": "*"}}, {"origin": ["cross-origin-http", "same-host-http"], "name": "no-opt-in-allows", "redirection": "*", "expectation": "allowed", "expansion": "default", "context_nesting": "top-level", "opt_in_method": "no-opt-in", "source_scheme": "https", "subresource": {"blockable": [], "optionally-blockable": "*"}}], "description": "Test behavior of optionally-blockable content", "specification_url": "http://www.w3.org/TR/mixed-content/#category-optionally-blockable", "name": "optionally-blockable", "title": "Optionally-blockable content"}, {"test_expansion": [{"origin": ["cross-origin-http", "same-host-http"], "name": "opt-in-blocks", "redirection": "*", "expectation": "blocked", "expansion": "default", "context_nesting": "top-level", "opt_in_method": ["http-csp", "meta-csp"], "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": []}}, {"origin": ["cross-origin-http", "same-host-http"], "name": "no-opt-in-blocks", "redirection": "*", "expectation": "blocked", "expansion": "default", "context_nesting": "top-level", "opt_in_method": "no-opt-in", "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": []}}, {"origin": ["cross-origin-ws", "same-host-ws"], "name": "ws-downgrade-blocks", "redirection": "*", "expectation": "blocked", "expansion": "default", "context_nesting": "top-level", "opt_in_method": ["no-opt-in", "http-csp", "meta-csp"], "source_scheme": "https", "subresource": {"blockable": "websocket-request", "optionally-blockable": []}}], "description": "Test behavior of blockable content.", "specification_url": "http://www.w3.org/TR/mixed-content/#category-blockable", "name": "blockable", "title": "Blockable content"}, {"test_expansion": [{"origin": ["same-host-https"], "name": "allowed", "redirection": ["no-redirect", "keep-scheme-redirect"], "expectation": "allowed", "expansion": "default", "context_nesting": "top-level", "opt_in_method": "*", "source_scheme": "https", "subresource": {"blockable": "*", "optionally-blockable": "*"}}, {"origin": ["same-host-wss"], "name": "websocket-allowed", "redirection": ["no-redirect", "keep-scheme-redirect"], "expectation": "allowed", "expansion": "default", "context_nesting": "top-level", "opt_in_method": "*", "source_scheme": "https", "subresource": {"blockable": "websocket-request", "optionally-blockable": []}}], "description": "Test behavior of allowed content.", "specification_url": "http://www.w3.org/TR/mixed-content/", "name": "allowed", "title": "Allowed content"}], "excluded_tests": [{"origin": "*", "name": "Redundant-subresources", "redirection": "*", "expectation": "*", "expansion": "*", "context_nesting": "*", "opt_in_method": "*", "source_scheme": "*", "subresource": {"blockable": ["a-tag"], "optionally-blockable": []}}, {"origin": ["same-host-https", "same-host-http", "cross-origin-https", "cross-origin-http"], "name": "Skip-origins-not-applicable-to-websockets", "redirection": "*", "expectation": "*", "expansion": "*", "context_nesting": "*", "opt_in_method": "*", "source_scheme": "*", "subresource": {"blockable": ["websocket-request"], "optionally-blockable": []}}, {"origin": "*", "name": "TODO-opt-in-method-img-cross-origin", "redirection": "*", "expectation": "*", "expansion": "*", "context_nesting": "*", "opt_in_method": "img-crossorigin", "source_scheme": "*", "subresource": {"blockable": "*", "optionally-blockable": "*"}}, {"origin": "*", "name": "Skip-redundant-for-opt-in-method", "redirection": ["keep-scheme-redirect", "swap-scheme-redirect"], "expectation": "*", "expansion": "*", "context_nesting": "*", "opt_in_method": ["meta-csp", "img-crossorigin"], "source_scheme": "*", "subresource": {"blockable": "*", "optionally-blockable": "*"}}]}; diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html index 029d34c4f41..029d34c4f41 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html index c72ca267fcb..c72ca267fcb 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html index b50a7b70a01..b50a7b70a01 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html index 8b64104bd2f..8b64104bd2f 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html index abe3385b06a..abe3385b06a 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html index 78d9f8d5d4e..78d9f8d5d4e 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/same-host-http/video-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/video-tag/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html index ce72664408e..ce72664408e 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/video-tag/top-level/keep-scheme-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/picture-tag/top-level/keep-scheme-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/picture-tag/top-level/keep-scheme-redirect/allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/video-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html index b9ddc78ff18..b9ddc78ff18 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/video-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/picture-tag/top-level/no-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/picture-tag/top-level/no-redirect/allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/meta-csp/cross-origin-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/video-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html index a181ecd388a..a181ecd388a 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/meta-csp/cross-origin-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/meta-csp/cross-origin-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/meta-csp/same-host-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/video-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html index 05f1890c98d..05f1890c98d 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/meta-csp/same-host-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/meta-csp/same-host-http/top-level/no-redirect/optionally-blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/video-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/video-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html index cf84396315e..cf84396315e 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/video-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/video-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html index 561a2f7c1b5..561a2f7c1b5 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/video-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/video-tag/top-level/no-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html index e02134b4acf..e02134b4acf 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/video-tag/top-level/no-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/video-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html index f90575c137a..f90575c137a 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/cross-origin-http/video-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/video-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/video-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html index 68bfc2b84a8..68bfc2b84a8 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/video-tag/top-level/keep-scheme-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/no-opt-in/same-host-http/top-level/keep-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/video-tag/top-level/no-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/video-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html index 2e5eff5a74e..2e5eff5a74e 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/video-tag/top-level/no-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/no-opt-in/same-host-http/top-level/no-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/video-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html b/tests/wpt/web-platform-tests/mixed-content/video-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html index 8c5bd7b0806..8c5bd7b0806 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/no-opt-in/same-host-http/video-tag/top-level/swap-scheme-redirect/no-opt-in-allows.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/no-opt-in/same-host-http/top-level/swap-scheme-redirect/optionally-blockable/no-opt-in-allows.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/video-tag/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/video-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html index f044783e62b..f044783e62b 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/video-tag/top-level/keep-scheme-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/video-tag/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/video-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html index fd0a1f923a7..fd0a1f923a7 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/video-tag/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/video-tag/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html index 5f4facece9f..5f4facece9f 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html index 0d700202fcf..0d700202fcf 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html index 22e930e20b4..22e930e20b4 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html index 972d7f3d349..972d7f3d349 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html index 66b20800ffa..66b20800ffa 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html index 664acc6fa8e..664acc6fa8e 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-wss/websocket-request/top-level/keep-scheme-redirect/websocket-allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html index ff33c35d169..ff33c35d169 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-wss/websocket-request/top-level/keep-scheme-redirect/websocket-allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-wss/websocket-request/top-level/keep-scheme-redirect/websocket-allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-wss/websocket-request/top-level/keep-scheme-redirect/websocket-allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-wss/websocket-request/top-level/no-redirect/websocket-allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html index dabaab28cd6..dabaab28cd6 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-wss/websocket-request/top-level/no-redirect/websocket-allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-wss/websocket-request/top-level/no-redirect/websocket-allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-wss/websocket-request/top-level/no-redirect/websocket-allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/http-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/cross-origin-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/websocket-request/meta-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html index 1bc4b11d9a7..1bc4b11d9a7 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/cross-origin-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/meta-csp/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/same-host-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/websocket-request/meta-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html index a3cb304e034..a3cb304e034 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/same-host-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/meta-csp/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-wss/websocket-request/top-level/no-redirect/websocket-allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/websocket-request/meta-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html index f1cfed1984c..f1cfed1984c 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-wss/websocket-request/top-level/no-redirect/websocket-allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/meta-csp/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html index ef959099b11..ef959099b11 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html index 9a344137bb9..9a344137bb9 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html index fad857a6ee1..fad857a6ee1 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/no-opt-in/cross-origin-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html index cc63690459a..cc63690459a 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-ws/websocket-request/top-level/keep-scheme-redirect/ws-downgrade-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/keep-scheme-redirect/blockable/ws-downgrade-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html index 4b7ae62fd4b..4b7ae62fd4b 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-ws/websocket-request/top-level/no-redirect/ws-downgrade-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/no-redirect/blockable/ws-downgrade-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html index 278819b938f..278819b938f 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-ws/websocket-request/top-level/swap-scheme-redirect/ws-downgrade-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/no-opt-in/same-host-ws/top-level/swap-scheme-redirect/blockable/ws-downgrade-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-wss/websocket-request/top-level/keep-scheme-redirect/websocket-allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/websocket-request/no-opt-in/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html index 52684b1a501..52684b1a501 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-wss/websocket-request/top-level/keep-scheme-redirect/websocket-allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/no-opt-in/same-host-wss/top-level/keep-scheme-redirect/allowed/websocket-allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-wss/websocket-request/top-level/no-redirect/websocket-allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/websocket-request/no-opt-in/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html index a32429b8866..a32429b8866 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-wss/websocket-request/top-level/no-redirect/websocket-allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/websocket-request/no-opt-in/same-host-wss/top-level/no-redirect/allowed/websocket-allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html index 8fc3283a0ac..8fc3283a0ac 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index 21f63bd7307..21f63bd7307 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/no-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html index d4c437147aa..d4c437147aa 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/worker-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/audio-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html index 735c267a88a..735c267a88a 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index d70b8576897..d70b8576897 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/no-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html index bf77ac6d77e..bf77ac6d77e 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/worker-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/img-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/worker-request/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html index 1a9053e4c3e..1a9053e4c3e 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/worker-request/top-level/keep-scheme-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/script-tag/top-level/keep-scheme-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/script-tag/top-level/keep-scheme-redirect/allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/worker-request/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html index 0488b133755..0488b133755 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/worker-request/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/script-tag/top-level/no-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/script-tag/top-level/no-redirect/allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/cross-origin-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/worker-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index 63ba9045403..63ba9045403 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/cross-origin-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/same-host-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/worker-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index 22e7c6eac28..22e7c6eac28 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/same-host-http/worker-request/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/worker-request/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/worker-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html index e5bf5ce95a8..e5bf5ce95a8 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/worker-request/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/worker-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html index 4feea4b7dc0..4feea4b7dc0 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/worker-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/worker-request/top-level/no-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html index 2d4f15b13e2..2d4f15b13e2 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/worker-request/top-level/no-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/worker-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html index a6782c7e5b8..a6782c7e5b8 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/worker-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/worker-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/worker-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html index 065ff5ba526..065ff5ba526 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/worker-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/worker-request/top-level/no-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/worker-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html index 3cd8a67482c..3cd8a67482c 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/worker-request/top-level/no-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/worker-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/worker-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html index 3b3e17c2777..3b3e17c2777 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/worker-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/worker-request/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/worker-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html index d720fc4fa99..d720fc4fa99 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/worker-request/top-level/keep-scheme-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/worker-request/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/worker-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html index bd69a14a9de..bd69a14a9de 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/worker-request/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/worker-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html index 314f0978905..314f0978905 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index d44e65bcd19..d44e65bcd19 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/no-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html index 973db8006fc..973db8006fc 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/cross-origin-http/xhr-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/link-prefetch-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/cross-origin-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html index f8509416232..f8509416232 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/keep-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/keep-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/same-host-http/top-level/keep-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index 0dd9e88e885..0dd9e88e885 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/no-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html index eb7f7ea2c73..eb7f7ea2c73 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/http-csp/same-host-http/xhr-request/top-level/swap-scheme-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/optionally-blockable/http-csp/cross-origin-http/video-tag/top-level/swap-scheme-redirect/opt-in-blocks.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/same-host-http/top-level/swap-scheme-redirect/blockable/opt-in-blocks.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/xhr-request/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html index 23f0a1fc89d..23f0a1fc89d 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/xhr-request/top-level/keep-scheme-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/video-tag/top-level/keep-scheme-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/video-tag/top-level/keep-scheme-redirect/allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/xhr-request/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html index 7baa3e54a98..7baa3e54a98 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/xhr-request/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/video-tag/top-level/no-redirect/allowed.https.html.headers b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers index 46e2255e388..46e2255e388 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/http-csp/same-host-https/video-tag/top-level/no-redirect/allowed.https.html.headers +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/http-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html.headers diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/cross-origin-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/xhr-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index cf95677c7f6..cf95677c7f6 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/cross-origin-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/meta-csp/cross-origin-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/same-host-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/xhr-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html index 80a633ab22f..80a633ab22f 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/meta-csp/same-host-http/xhr-request/top-level/no-redirect/opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/meta-csp/same-host-http/top-level/no-redirect/blockable/opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/xhr-request/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/xhr-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html index ebbc9ec0c67..ebbc9ec0c67 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/meta-csp/same-host-https/xhr-request/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/meta-csp/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/xhr-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html index b2ee591a74a..b2ee591a74a 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/xhr-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/xhr-request/top-level/no-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html index e49db79f3d3..e49db79f3d3 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/xhr-request/top-level/no-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/xhr-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html index ffd8aeb9c0b..ffd8aeb9c0b 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/cross-origin-http/xhr-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/no-opt-in/cross-origin-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/xhr-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/xhr-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html index 897354a798a..897354a798a 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/xhr-request/top-level/keep-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/no-opt-in/same-host-http/top-level/keep-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/xhr-request/top-level/no-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/xhr-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html index ee787d05aa3..ee787d05aa3 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/xhr-request/top-level/no-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/no-opt-in/same-host-http/top-level/no-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/xhr-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html b/tests/wpt/web-platform-tests/mixed-content/xhr-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html index 9a9085b86eb..9a9085b86eb 100644 --- a/tests/wpt/web-platform-tests/mixed-content/blockable/no-opt-in/same-host-http/xhr-request/top-level/swap-scheme-redirect/no-opt-in-blocks.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/no-opt-in/same-host-http/top-level/swap-scheme-redirect/blockable/no-opt-in-blocks.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/xhr-request/top-level/keep-scheme-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/xhr-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html index 9da0d9f98ec..9da0d9f98ec 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/xhr-request/top-level/keep-scheme-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/no-opt-in/same-host-https/top-level/keep-scheme-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/xhr-request/top-level/no-redirect/allowed.https.html b/tests/wpt/web-platform-tests/mixed-content/xhr-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html index b0fff36eb94..b0fff36eb94 100644 --- a/tests/wpt/web-platform-tests/mixed-content/allowed/no-opt-in/same-host-https/xhr-request/top-level/no-redirect/allowed.https.html +++ b/tests/wpt/web-platform-tests/mixed-content/xhr-request/no-opt-in/same-host-https/top-level/no-redirect/allowed/allowed.https.html diff --git a/tests/wpt/web-platform-tests/orientation-sensor/OrientationSensor_insecure_context.html b/tests/wpt/web-platform-tests/orientation-sensor/OrientationSensor_insecure_context.html index 41efb8f023a..18d41cec9ee 100644 --- a/tests/wpt/web-platform-tests/orientation-sensor/OrientationSensor_insecure_context.html +++ b/tests/wpt/web-platform-tests/orientation-sensor/OrientationSensor_insecure_context.html @@ -15,7 +15,7 @@ </ol> <script> -runGenericSensorInsecureContext(AbsoluteOrientationSensor); -runGenericSensorInsecureContext(RelativeOrientationSensor); +runGenericSensorInsecureContext("AbsoluteOrientationSensor"); +runGenericSensorInsecureContext("RelativeOrientationSensor"); </script> diff --git a/tests/wpt/web-platform-tests/orientation-sensor/idlharness.https.html b/tests/wpt/web-platform-tests/orientation-sensor/idlharness.https.html index 82ab9b3851b..44c16081cc1 100644 --- a/tests/wpt/web-platform-tests/orientation-sensor/idlharness.https.html +++ b/tests/wpt/web-platform-tests/orientation-sensor/idlharness.https.html @@ -24,6 +24,7 @@ interface EventHandler { [SecureContext, Exposed=Window] interface Sensor : EventTarget { readonly attribute boolean activated; + readonly attribute boolean hasReading; readonly attribute DOMHighResTimeStamp? timestamp; void start(); void stop(); diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_support.js b/tests/wpt/web-platform-tests/pointerevents/pointerevent_support.js index 33f26675462..0ed40101f37 100644 --- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_support.js +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_support.js @@ -155,14 +155,14 @@ function updateDescriptionComplete() { } function updateDescriptionSecondStepTouchActionElement(target, scrollReturnInterval) { - window.setTimeout(function() { + window.step_timeout(function() { objectScroller(target, 'up', 0);} , scrollReturnInterval); document.getElementById('desc').innerHTML = "Test Description: Try to scroll element RIGHT moving your outside of the red border"; } function updateDescriptionThirdStepTouchActionElement(target, scrollReturnInterval) { - window.setTimeout(function() { + window.step_timeout(function() { objectScroller(target, 'left', 0);} , scrollReturnInterval); document.getElementById('desc').innerHTML = "Test Description: Try to scroll element DOWN then RIGHT starting your touch inside of the element. Then tap complete button"; diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/iframe-inheritance.html b/tests/wpt/web-platform-tests/referrer-policy/generic/iframe-inheritance.html new file mode 100644 index 00000000000..478a7ce6fe6 --- /dev/null +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/iframe-inheritance.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<html> + <head> + <title>Referrer Policy: iframes correctly inherit the ancestor's referrer</title> + <link rel="author" title="Jochen Eisinger" href="mailto:jochen@chromium.org"> + <link rel="help" href="https://www.w3.org/TR/referrer-policy/#referrer-policy-delivery-nested"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <!-- Common global functions for referrer-policy tests. --> + <script src="/referrer-policy/generic/common.js"></script> + <meta name="referrer" content="origin"> + </head> + <body onload="runTest()"> + <h1>Referrer Policy: iframes correctly inherit the ancestor's referrer</h1> + <script> + var test = async_test("iframes correctly inherit the ancestor's referrer"); + window.addEventListener("message", test.step_func((msg) => { + assert_equals(msg.data.referrer, document.location.origin + "/"); + test.done(); + })); + + function runTest() { + var iframe = document.createElement("iframe"); + iframe.src = "about:blank"; + document.body.appendChild(iframe); + iframe.contentDocument.write(` + <script src = "/referrer-policy/generic/common.js"></` + `script> + <script> + var urlPath = "/referrer-policy/generic/subresource/xhr.py"; + var url = "${location.protocol}//www1.${location.hostname}:${location.port}" + urlPath; + queryXhr(url, (msg) => { + parent.postMessage({referrer: msg.referrer}, "*")}); + </` + "script>"); + } + </script> + + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/requestidlecallback/callback-timeout-when-busy.html b/tests/wpt/web-platform-tests/requestidlecallback/callback-timeout-when-busy.html new file mode 100644 index 00000000000..adf07408fb7 --- /dev/null +++ b/tests/wpt/web-platform-tests/requestidlecallback/callback-timeout-when-busy.html @@ -0,0 +1,69 @@ +<!DOCTYPE html> +<title>window.requestIdleCallback deals with timeouts correctly</title> +<link rel="author" title="Ross McIlroy" href="mailto:rmcilroy@chromium.org" /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> + +async_test(function() { + // Check whether requestIdleCallback with a timeout works when the event loop + // is busy. + var busy_loop_iterations_remaining = 10; // Should take 20 * 40 = 400ms + var idle_callback_scheduled; + var idle_callback = this.step_func_done(function(deadline) { + assert_false(deadline.didTimeout, "IdleDeadline.didTimeout MUST be false if requestIdleCallback wasn't scheduled due to a timeout"); + assert_equals(busy_loop_iterations_remaining, 0, "Busy event loop should be finished by the time we get scheduled"); + }); + + var busy_loop_iterations_remaining = 10; // Should take 20 * 40 = 400ms + step_timeout(this.step_func(function busyLoop() { + var start_time = performance.now(); + if (!idle_callback_scheduled) { + idle_callback_scheduled = start_time; + requestIdleCallback(idle_callback); + } + + // Use up more than a frames worth of budget. + while (performance.now() - start_time < 40) { + } + if (busy_loop_iterations_remaining > 0) { + busy_loop_iterations_remaining--; + step_timeout(busyLoop); + } + })); +}, 'requestIdleCallback not scheduled when event loop is busy.'); + +async_test(function() { + // Check whether requestIdleCallback with a timeout works when the event loop + // is busy. + var busy_loop_iterations_remaining = 10; // Should take 20 * 40 = 400ms + var timeout = 200; + var idle_callback_scheduled; + var idle_callback = this.step_func_done(function(deadline) { + var time_delta = performance.now() - idle_callback_scheduled; + assert_true(time_delta >= timeout, "Should only have been run after timeout"); + assert_true(deadline.timeRemaining() == 0, "IdleDeadline.timeRemaining MUST be equal to zero if requestIdleCallback was scheduled due to a timeout"); + assert_true(deadline.didTimeout, "IdleDeadline.didTimeout MUST be true if requestIdleCallback was scheduled due to a timeout"); + assert_true(busy_loop_iterations_remaining > 0, "Busy event loop should still be going"); + }); + + step_timeout(this.step_func(function busyLoop() { + var start_time = performance.now(); + if (!idle_callback_scheduled) { + idle_callback_scheduled = start_time; + requestIdleCallback(idle_callback, { timeout: timeout }); + } + + // Use up more than a frames worth of budget. + while (performance.now() - start_time < 40) { + } + if (busy_loop_iterations_remaining > 0) { + busy_loop_iterations_remaining--; + step_timeout(busyLoop); + } + })); +}, 'requestIdleCallback scheduled with timeout when event loop is busy.'); + +</script> +<h1>Test of requestIdleCallback timeout behavior</h1> +<div id="log"></div> diff --git a/tests/wpt/web-platform-tests/requestidlecallback/callback-timeout-with-raf.html b/tests/wpt/web-platform-tests/requestidlecallback/callback-timeout-with-raf.html deleted file mode 100644 index 54339dcc01b..00000000000 --- a/tests/wpt/web-platform-tests/requestidlecallback/callback-timeout-with-raf.html +++ /dev/null @@ -1,69 +0,0 @@ -<!DOCTYPE html> -<title>window.requestIdleCallback deals with timeouts correctly</title> -<link rel="author" title="Ross McIlroy" href="mailto:rmcilroy@chromium.org" /> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script> - -async_test(function() { - // Check whether requestIdleCallback with a timeout works when the event loop - // is busy. - var busy_raf_loop_iterations_remaining = 10; // Should take 20 * 40 = 400ms - var idle_callback_scheduled; - var idle_callback = this.step_func_done(function(deadline) { - assert_false(deadline.didTimeout, "IdleDeadline.didTimeout MUST be false if requestIdleCallback wasn't scheduled due to a timeout"); - assert_equals(busy_raf_loop_iterations_remaining, 0, "Busy rAF loop should be finished by the time we get scheduled"); - }); - - var busy_raf_loop_iterations_remaining = 10; // Should take 20 * 40 = 400ms - requestAnimationFrame(this.step_func(function busyRAFLoop() { - var start_time = performance.now(); - if (!idle_callback_scheduled) { - idle_callback_scheduled = start_time; - requestIdleCallback(idle_callback); - } - - // Use up the whole frame budget. - while (performance.now() - start_time < 40) { - } - if (busy_raf_loop_iterations_remaining > 0) { - busy_raf_loop_iterations_remaining--; - requestAnimationFrame(busyRAFLoop); - } - })); -}, 'requestIdleCallback not scheduled when event loop is busy.'); - -async_test(function() { - // Check whether requestIdleCallback with a timeout works when the event loop - // is busy. - var busy_raf_loop_iterations_remaining = 10; // Should take 20 * 40 = 400ms - var timeout = 200; - var idle_callback_scheduled; - var idle_callback = this.step_func_done(function(deadline) { - var time_delta = performance.now() - idle_callback_scheduled; - assert_true(time_delta >= timeout, "Should only have been run after timeout"); - assert_true(deadline.timeRemaining() == 0, "IdleDeadline.timeRemaining MUST be equal to zero if requestIdleCallback was scheduled due to a timeout"); - assert_true(deadline.didTimeout, "IdleDeadline.didTimeout MUST be true if requestIdleCallback was scheduled due to a timeout"); - assert_true(busy_raf_loop_iterations_remaining > 0, "Busy rAF loop should still be going"); - }); - - requestAnimationFrame(this.step_func(function busyRAFLoop() { - var start_time = performance.now(); - if (!idle_callback_scheduled) { - idle_callback_scheduled = start_time; - requestIdleCallback(idle_callback, { timeout: timeout }); - } - - // Use up the whole frame budget. - while (performance.now() - start_time < 40) { - } - if (busy_raf_loop_iterations_remaining > 0) { - busy_raf_loop_iterations_remaining--; - requestAnimationFrame(busyRAFLoop); - } - })); -}, 'requestIdleCallback scheduled with timeout when event loop is busy.'); - -</script> -<h1>Test of requestIdleCallback timeout behavior</h1> -<div id="log"></div> diff --git a/tests/wpt/web-platform-tests/requestidlecallback/idlharness.html b/tests/wpt/web-platform-tests/requestidlecallback/idlharness.html index 6033535f397..4007d09fec3 100644 --- a/tests/wpt/web-platform-tests/requestidlecallback/idlharness.html +++ b/tests/wpt/web-platform-tests/requestidlecallback/idlharness.html @@ -23,6 +23,11 @@ dictionary IdleRequestOptions { unsigned long timeout; }; +[Exposed=Window] interface IdleDeadline { + DOMHighResTimeStamp timeRemaining(); + readonly attribute boolean didTimeout; +}; + callback IdleRequestCallback = void (IdleDeadline deadline); </pre> <script> @@ -30,5 +35,19 @@ callback IdleRequestCallback = void (IdleDeadline deadline); idl_array.add_untested_idls(document.getElementById("untested_idl").textContent); idl_array.add_idls(document.getElementById("idl").textContent); idl_array.add_objects({Window: ["window"]}); - idl_array.test(); + + async_test(function() { + var rIC = this.step_func(function(deadline) { + idl_array.add_objects({IdleDeadline: [deadline]}); + idl_array.test(); + this.done(); + }); + if (window.requestIdleCallback) { + requestIdleCallback(rIC); + } else { + idl_array.test(); + assert_unreached("IdleDeadline not supported"); + this.done(); + } + }, "IdleDeadline object setup"); </script> diff --git a/tests/wpt/web-platform-tests/resources/check-layout-th.js b/tests/wpt/web-platform-tests/resources/check-layout-th.js new file mode 100644 index 00000000000..9b83df74ef2 --- /dev/null +++ b/tests/wpt/web-platform-tests/resources/check-layout-th.js @@ -0,0 +1,197 @@ +(function() { +// Test is initiated from body.onload, so explicit done() call is required. +setup({ explicit_done: true }); + +function checkSubtreeExpectedValues(t, parent, prefix) +{ + var checkedLayout = checkExpectedValues(t, parent, prefix); + Array.prototype.forEach.call(parent.childNodes, function(node) { + checkedLayout |= checkSubtreeExpectedValues(t, node, prefix); + }); + return checkedLayout; +} + +function checkAttribute(output, node, attribute) +{ + var result = node.getAttribute && node.getAttribute(attribute); + output.checked |= !!result; + return result; +} + +function assert_tolerance(actual, expected, message) +{ + if (isNaN(expected) || Math.abs(actual - expected) >= 1) { + assert_equals(actual, Number(expected), message); + } +} + +function checkExpectedValues(t, node, prefix) +{ + var output = { checked: false }; + + var expectedWidth = checkAttribute(output, node, "data-expected-width"); + if (expectedWidth) { + assert_tolerance(node.offsetWidth, expectedWidth, prefix + "width"); + } + + var expectedHeight = checkAttribute(output, node, "data-expected-height"); + if (expectedHeight) { + assert_tolerance(node.offsetHeight, expectedHeight, prefix + "height"); + } + + var expectedOffset = checkAttribute(output, node, "data-offset-x"); + if (expectedOffset) { + assert_tolerance(node.offsetLeft, expectedOffset, prefix + "offsetLeft"); + } + + var expectedOffset = checkAttribute(output, node, "data-offset-y"); + if (expectedOffset) { + assert_tolerance(node.offsetTop, expectedOffset, prefix + "offsetTop"); + } + + var expectedWidth = checkAttribute(output, node, "data-expected-client-width"); + if (expectedWidth) { + assert_tolerance(node.clientWidth, expectedWidth, prefix + "clientWidth"); + } + + var expectedHeight = checkAttribute(output, node, "data-expected-client-height"); + if (expectedHeight) { + assert_tolerance(node.clientHeight, expectedHeight, prefix + "clientHeight"); + } + + var expectedWidth = checkAttribute(output, node, "data-expected-scroll-width"); + if (expectedWidth) { + assert_tolerance(node.scrollWidth, expectedWidth, prefix + "scrollWidth"); + } + + var expectedHeight = checkAttribute(output, node, "data-expected-scroll-height"); + if (expectedHeight) { + assert_tolerance(node.scrollHeight, expectedHeight, prefix + "scrollHeight"); + } + + var expectedWidth = checkAttribute(output, node, "data-expected-bounding-client-rect-width"); + if (expectedWidth) { + assert_tolerance(node.getBoundingClientRect().width, expectedWidth, prefix + "getBoundingClientRect().width"); + } + + var expectedOffset = checkAttribute(output, node, "data-total-x"); + if (expectedOffset) { + var totalLeft = node.clientLeft + node.offsetLeft; + assert_tolerance(totalLeft, expectedOffset, prefix + + "clientLeft+offsetLeft (" + node.clientLeft + " + " + node.offsetLeft + ")"); + } + + var expectedOffset = checkAttribute(output, node, "data-total-y"); + if (expectedOffset) { + var totalTop = node.clientTop + node.offsetTop; + assert_tolerance(totalTop, expectedOffset, prefix + + "clientTop+offsetTop (" + node.clientTop + " + " + node.offsetTop + ")"); + } + + var expectedDisplay = checkAttribute(output, node, "data-expected-display"); + if (expectedDisplay) { + var actualDisplay = getComputedStyle(node).display; + assert_equals(actualDisplay, expectedDisplay, prefix + "display"); + } + + var expectedPaddingTop = checkAttribute(output, node, "data-expected-padding-top"); + if (expectedPaddingTop) { + var actualPaddingTop = getComputedStyle(node).paddingTop; + // Trim the unit "px" from the output. + actualPaddingTop = actualPaddingTop.slice(0, -2); + assert_equals(actualPaddingTop, expectedPaddingTop, prefix + "padding-top"); + } + + var expectedPaddingBottom = checkAttribute(output, node, "data-expected-padding-bottom"); + if (expectedPaddingBottom) { + var actualPaddingBottom = getComputedStyle(node).paddingBottom; + // Trim the unit "px" from the output. + actualPaddingBottom = actualPaddingBottom.slice(0, -2); + assert_equals(actualPaddingBottom, expectedPaddingBottom, prefix + "padding-bottom"); + } + + var expectedPaddingLeft = checkAttribute(output, node, "data-expected-padding-left"); + if (expectedPaddingLeft) { + var actualPaddingLeft = getComputedStyle(node).paddingLeft; + // Trim the unit "px" from the output. + actualPaddingLeft = actualPaddingLeft.slice(0, -2); + assert_equals(actualPaddingLeft, expectedPaddingLeft, prefix + "padding-left"); + } + + var expectedPaddingRight = checkAttribute(output, node, "data-expected-padding-right"); + if (expectedPaddingRight) { + var actualPaddingRight = getComputedStyle(node).paddingRight; + // Trim the unit "px" from the output. + actualPaddingRight = actualPaddingRight.slice(0, -2); + assert_equals(actualPaddingRight, expectedPaddingRight, prefix + "padding-right"); + } + + var expectedMarginTop = checkAttribute(output, node, "data-expected-margin-top"); + if (expectedMarginTop) { + var actualMarginTop = getComputedStyle(node).marginTop; + // Trim the unit "px" from the output. + actualMarginTop = actualMarginTop.slice(0, -2); + assert_equals(actualMarginTop, expectedMarginTop, prefix + "margin-top"); + } + + var expectedMarginBottom = checkAttribute(output, node, "data-expected-margin-bottom"); + if (expectedMarginBottom) { + var actualMarginBottom = getComputedStyle(node).marginBottom; + // Trim the unit "px" from the output. + actualMarginBottom = actualMarginBottom.slice(0, -2); + assert_equals(actualMarginBottom, expectedMarginBottom, prefix + "margin-bottom"); + } + + var expectedMarginLeft = checkAttribute(output, node, "data-expected-margin-left"); + if (expectedMarginLeft) { + var actualMarginLeft = getComputedStyle(node).marginLeft; + // Trim the unit "px" from the output. + actualMarginLeft = actualMarginLeft.slice(0, -2); + assert_equals(actualMarginLeft, expectedMarginLeft, prefix + "margin-left"); + } + + var expectedMarginRight = checkAttribute(output, node, "data-expected-margin-right"); + if (expectedMarginRight) { + var actualMarginRight = getComputedStyle(node).marginRight; + // Trim the unit "px" from the output. + actualMarginRight = actualMarginRight.slice(0, -2); + assert_equals(actualMarginRight, expectedMarginRight, prefix + "margin-right"); + } + + return output.checked; +} + +var testNumber = 0; + +window.checkLayout = function(selectorList, callDone = true) +{ + if (!selectorList) { + console.error("You must provide a CSS selector of nodes to check."); + return; + } + var nodes = document.querySelectorAll(selectorList); + nodes = Array.prototype.slice.call(nodes); + nodes.reverse(); + var checkedLayout = false; + Array.prototype.forEach.call(nodes, function(node) { + test(function(t) { + var container = node.parentNode.className == 'container' ? node.parentNode : node; + var prefix = "\n" + container.outerHTML + "\n"; + var passed = false; + try { + checkedLayout |= checkExpectedValues(t, node.parentNode, prefix); + checkedLayout |= checkSubtreeExpectedValues(t, node, prefix); + passed = true; + } finally { + checkedLayout |= !passed; + } + }, selectorList + ' ' + String(++testNumber)); + }); + if (!checkedLayout) { + console.error("No valid data-* attributes found in selector list : " + selectorList); + } + if (callDone) + done(); +}; + +})(); diff --git a/tests/wpt/web-platform-tests/resources/idlharness.js b/tests/wpt/web-platform-tests/resources/idlharness.js index eda6a420dd6..587325c3aea 100644 --- a/tests/wpt/web-platform-tests/resources/idlharness.js +++ b/tests/wpt/web-platform-tests/resources/idlharness.js @@ -167,11 +167,11 @@ self.IdlArray = function() }; //@} -IdlArray.prototype.add_idls = function(raw_idls) +IdlArray.prototype.add_idls = function(raw_idls, options) //@{ { /** Entry point. See documentation at beginning of file. */ - this.internal_add_idls(WebIDL2.parse(raw_idls)); + this.internal_add_idls(WebIDL2.parse(raw_idls), options); }; //@} @@ -195,27 +195,60 @@ IdlArray.prototype.add_untested_idls = function(raw_idls) }; //@} -IdlArray.prototype.internal_add_idls = function(parsed_idls) +IdlArray.prototype.internal_add_idls = function(parsed_idls, options) //@{ { /** * Internal helper called by add_idls() and add_untested_idls(). + * * parsed_idls is an array of objects that come from WebIDLParser.js's * "definitions" production. The add_untested_idls() entry point * additionally sets an .untested property on each object (and its * .members) so that they'll be skipped by test() -- they'll only be * used for base interfaces of tested interfaces, return types, etc. + * + * options is a dictionary that can have an only or except member which are + * arrays. If only is given then only members, partials and interface + * targets listed will be added, and if except is given only those that + * aren't listed will be added. Only one of only and except can be used. */ + + if (options && options.only && options.except) + { + throw "The only and except options can't be used together." + } + + function should_skip(name) + { + if (options && options.only && options.only.indexOf(name) == -1) + { + return true; + } + if (options && options.except && options.except.indexOf(name) != -1) + { + return true; + } + return false; + } + parsed_idls.forEach(function(parsed_idl) { if (parsed_idl.type == "interface" && parsed_idl.partial) { + if (should_skip(parsed_idl.name)) + { + return; + } this.partials.push(parsed_idl); return; } if (parsed_idl.type == "implements") { + if (should_skip(parsed_idl.target)) + { + return; + } if (!(parsed_idl.target in this["implements"])) { this["implements"][parsed_idl.target] = []; @@ -229,6 +262,10 @@ IdlArray.prototype.internal_add_idls = function(parsed_idls) { throw "Duplicate identifier " + parsed_idl.name; } + if (should_skip(parsed_idl.name)) + { + return; + } switch(parsed_idl.type) { case "interface": diff --git a/tests/wpt/web-platform-tests/secure-contexts/basic-dedicated-worker.html b/tests/wpt/web-platform-tests/secure-contexts/basic-dedicated-worker.html index 737f31b1dcf..581d761f5e7 100644 --- a/tests/wpt/web-platform-tests/secure-contexts/basic-dedicated-worker.html +++ b/tests/wpt/web-platform-tests/secure-contexts/basic-dedicated-worker.html @@ -25,13 +25,19 @@ assert_unreached("isSecureContext should be supported"); }); - var w2 = new Worker(https_dir + "support/dedicated-worker-script.js"); - w2.onmessage = t2.step_func_done(function(e) { - assert_unreached("cross-origin workers should not be loaded"); - }); - w2.onerror = t2.step_func_done(function(e) { - e.preventDefault(); - }); + try { + var w2 = new Worker(https_dir + "support/dedicated-worker-script.js"); + w2.onmessage = t2.step_func_done(function(e) { + assert_unreached("cross-origin workers should not be loaded"); + }); + w2.onerror = t2.step_func_done(function(e) { + e.preventDefault(); + }); + } catch (e) { + // Some browsers throw for cross-origin URLs. This violates the Worker spec, + // but isn't actually relevant to what we're testing here. + t2.done(); + } var w3 = new Worker(http_dir + "support/parent-dedicated-worker-script.js"); w3.onmessage = t3.step_func_done(function(e) { @@ -41,13 +47,19 @@ assert_unreached("isSecureContext should be supported"); }); - var w4 = new Worker(https_dir + "support/parent-dedicated-worker-script.js"); - w4.onmessage = t4.step_func_done(function(e) { - assert_unreached("cross-origin workers should not be loaded"); - }); - w4.onerror = t4.step_func_done(function(e) { - e.preventDefault(); - }); + try { + var w4 = new Worker(https_dir + "support/parent-dedicated-worker-script.js"); + w4.onmessage = t4.step_func_done(function(e) { + assert_unreached("cross-origin workers should not be loaded"); + }); + w4.onerror = t4.step_func_done(function(e) { + e.preventDefault(); + }); + } catch (e) { + // Some browsers throw for cross-origin URLs. This violates the Worker spec, + // but isn't actually relevant to what we're testing here. + t4.done(); + } onmessage = function(e) { var data = e.data; diff --git a/tests/wpt/web-platform-tests/secure-contexts/basic-dedicated-worker.https.html b/tests/wpt/web-platform-tests/secure-contexts/basic-dedicated-worker.https.html index 012c7b1da16..e794755cdf9 100644 --- a/tests/wpt/web-platform-tests/secure-contexts/basic-dedicated-worker.https.html +++ b/tests/wpt/web-platform-tests/secure-contexts/basic-dedicated-worker.https.html @@ -17,13 +17,19 @@ var t5 = async_test("HTTP worker from HTTPS subframe"); var t6 = async_test("HTTPS worker from HTTPS subframe"); - var w1 = new Worker(http_dir + "support/dedicated-worker-script.js"); - w1.onmessage = t1.step_func_done(function(e) { - assert_unreached("cross-origin workers should not be loaded"); - }); - w1.onerror = t1.step_func_done(function(e) { - e.preventDefault(); - }); + try { + var w1 = new Worker(http_dir + "support/dedicated-worker-script.js"); + w1.onmessage = t1.step_func_done(function(e) { + assert_unreached("cross-origin workers should not be loaded"); + }); + w1.onerror = t1.step_func_done(function(e) { + e.preventDefault(); + }); + } catch (e) { + // Some browsers throw for cross-origin URLs. This violates the Worker spec, + // but isn't actually relevant to what we're testing here. + t1.done(); + } var w2 = new Worker(https_dir + "support/dedicated-worker-script.js"); w2.onmessage = t2.step_func_done(function(e) { @@ -33,13 +39,19 @@ assert_unreached("isSecureContext should be supported"); }); - var w3 = new Worker(http_dir + "support/parent-dedicated-worker-script.js"); - w3.onmessage = t3.step_func_done(function(e) { - assert_unreached("cross-origin workers should not be loaded"); - }); - w3.onerror = t3.step_func_done(function(e) { - e.preventDefault(); - }); + try { + var w3 = new Worker(http_dir + "support/parent-dedicated-worker-script.js"); + w3.onmessage = t3.step_func_done(function(e) { + assert_unreached("cross-origin workers should not be loaded"); + }); + w3.onerror = t3.step_func_done(function(e) { + e.preventDefault(); + }); + } catch (e) { + // Some browsers throw for cross-origin URLs. This violates the Worker spec, + // but isn't actually relevant to what we're testing here. + t3.done(); + } var w4 = new Worker(https_dir + "support/parent-dedicated-worker-script.js"); w4.onmessage = t4.step_func_done(function(e) { diff --git a/tests/wpt/web-platform-tests/secure-contexts/basic-popup-and-iframe-tests.https.js b/tests/wpt/web-platform-tests/secure-contexts/basic-popup-and-iframe-tests.https.js index ebc9f2b1f14..7ca4edef8ab 100644 --- a/tests/wpt/web-platform-tests/secure-contexts/basic-popup-and-iframe-tests.https.js +++ b/tests/wpt/web-platform-tests/secure-contexts/basic-popup-and-iframe-tests.https.js @@ -52,7 +52,8 @@ const eLoadInEverything = eLoadInPopup | eLoadInUnsandboxedIframe | eLoad // Flags indicating if a document type is expected to be a Secure Context: const eSecureNo = 1; -const eSecureIfCreatorSecure = 2; +const eSecureIfNewWindow = 2; +const eSecureIfCreatorSecure = 3; // Flags indicating how the result of a test is obtained: const eResultFromPostMessage = 1; @@ -69,7 +70,7 @@ const loadTypes = [ new LoadType("an https: URI", eLoadInEverything, https_dir + "postMessage-helper.https.html", - eSecureIfCreatorSecure, + eSecureIfNewWindow, eResultFromPostMessage), new LoadType("a blob: URI", eLoadInEverything, @@ -80,7 +81,7 @@ const loadTypes = [ // popup not relevant: eLoadInUnsandboxedIframe | eLoadInSandboxedIframe, "<script>(opener||parent).postMessage(isSecureContext, '*')</script>", - eSecureIfCreatorSecure, + eSecureIfNewWindow, eResultFromPostMessage), new LoadType("a javascript: URI", // can't load in sandbox: @@ -179,31 +180,39 @@ LoadTarget.prototype.load_and_get_result_for = function(loadType) { " loading " + loadType.desc) if (loadType.resultFrom == eResultFromExaminationSync) { let domTarget = this.open(loadType); - let result = domTarget instanceof Window ? + let isFrame = domTarget instanceof HTMLIFrameElement; + let result = !isFrame ? domTarget.isSecureContext : domTarget.contentWindow.isSecureContext; this.close(domTarget); - return Promise.resolve(result); + return Promise.resolve({ result: result, isFrame: isFrame}); } let target = this; if (loadType.resultFrom == eResultFromExaminationOnLoad) { return new Promise(function(resolve, reject) { function handleLoad(event) { - let result = domTarget instanceof Window ? + clearTimeout(timer); + let isFrame = domTarget instanceof HTMLIFrameElement; + let result = !isFrame ? domTarget.isSecureContext : domTarget.contentWindow.isSecureContext; domTarget.removeEventListener("load", handleLoad); target.close(domTarget); - resolve(result); + resolve({ result: result, isFrame: isFrame}); } let domTarget = target.open(loadType); domTarget.addEventListener("load", handleLoad, false); + + // Some browsers don't fire `load` events for `about:blank`. That's weird, but it also + // isn't what we're testing here. + let timer = setTimeout(handleLoad, 500); }); } if (loadType.resultFrom == eResultFromPostMessage) { return new Promise(function(resolve, reject) { function handleMessage(event) { + let isFrame = domTarget instanceof HTMLIFrameElement; window.removeEventListener("message", handleMessage); target.close(domTarget); - resolve(event.data); + resolve({ result: event.data, isFrame: isFrame}); } window.addEventListener("message", handleMessage, false); let domTarget = target.open(loadType); @@ -232,13 +241,21 @@ function run_next_test() { function(value) { run_next_test_soon(); loadTarget.currentTest.step(function() { + // If the new context is always non-secure, the assertion is straightforward. if (loadType.expectedSecureFlag == eSecureNo) { - assert_false(value, loadType.desc + " in " + loadTarget.desc + " should not create a Secure Context"); - } else if (loadType.expectedSecureFlag == eSecureIfCreatorSecure) { + assert_false(value.result, loadType.desc + " in " + loadTarget.desc + " should not create a Secure Context"); + // If the new context is always secure if opened in a new window, and it's + // been opened in a new window, the assertion is likewise straightforward. + } else if (loadType.expectedSecureFlag == eSecureIfNewWindow && !value.isFrame) { + assert_true(value.result, loadType.desc + " in " + loadTarget.desc + " should create a secure context regardless of its creator's state."); + // Otherwise, we're either dealing with a context that's secure if and only + // if its creator context (e.g. this window) is secure. + } else if ((loadType.expectedSecureFlag == eSecureIfNewWindow && value.isFrame) || + (loadType.expectedSecureFlag == eSecureIfCreatorSecure)) { if (!window.isSecureContext) { - assert_false(value, loadType.desc + " in " + loadTarget.desc + " should not create a Secure Context when its creator is not a Secure Context."); + assert_false(value.result, loadType.desc + " in " + loadTarget.desc + " should not create a Secure Context when its creator is not a Secure Context."); } else { - assert_true(value, loadType.desc + " in " + loadTarget.desc + " should create a Secure Context when its creator is a Secure Context"); + assert_true(value.result, loadType.desc + " in " + loadTarget.desc + " should create a Secure Context when its creator is a Secure Context"); } } else { assert_unreached(loadType.desc + " - unknown expected secure flag: " + expectedSecureFlag); diff --git a/tests/wpt/web-platform-tests/secure-contexts/shared-worker-secure-first.https.html b/tests/wpt/web-platform-tests/secure-contexts/shared-worker-secure-first.https.html index 27697d62087..ce97a628a0e 100644 --- a/tests/wpt/web-platform-tests/secure-contexts/shared-worker-secure-first.https.html +++ b/tests/wpt/web-platform-tests/secure-contexts/shared-worker-secure-first.https.html @@ -46,15 +46,15 @@ // one in the popup or in our subframe. if (data.fromPopup) { t3.step(function() { - assert_false(data.exception); - assert_true(data.error); + assert_false(data.exception, "No exception should be present."); + assert_true(data.error, "SharedWorker connection should error out."); }); t3.done(); } else { t1.step(function() { - assert_false(data.exception); - assert_false(data.error); - assert_true(data.isSecureContext); + assert_false(data.exception, "SharedWorker should not throw an exception."); + assert_false(data.error, "SharedWorker connection should not generate an error."); + assert_true(data.isSecureContext, "SharedWorker is a secure context"); }); t1.done(); } @@ -63,15 +63,15 @@ // check whether it's the one in the popup or in our subframe. if (data.fromPopup) { t4.step(function() { - assert_false(data.exception); - assert_true(data.error); + assert_false(data.exception, "No exception should be present."); + assert_true(data.error, "SharedWorker connection should error out."); }); t4.done(); } else { t2.step(function() { - assert_false(data.exception); - assert_false(data.error); - assert_true(data.isSecureContext); + assert_false(data.exception, "SharedWorker should not throw an exception."); + assert_false(data.error, "SharedWorker connection should not generate an error."); + assert_true(data.isSecureContext, "SharedWorker is a secure context"); }); t2.done(); } diff --git a/tests/wpt/web-platform-tests/secure-contexts/support/https-subframe-dedicated.html b/tests/wpt/web-platform-tests/secure-contexts/support/https-subframe-dedicated.html index 85005df2929..bcf27879e84 100644 --- a/tests/wpt/web-platform-tests/secure-contexts/support/https-subframe-dedicated.html +++ b/tests/wpt/web-platform-tests/secure-contexts/support/https-subframe-dedicated.html @@ -1,21 +1,33 @@ <!DOCTYPE html> <script src="../server-locations.sub.js"></script> <script> - var w1 = new Worker(http_dir + "support/dedicated-worker-script.js"); - w1.onmessage = function(e) { - parent.postMessage({ type: "http", error: false, - isSecureContext: e.data }, "*"); - }; - w1.onerror = function(e) { + try { + var w1 = new Worker(http_dir + "support/dedicated-worker-script.js"); + w1.onmessage = function(e) { + parent.postMessage({ type: "http", error: false, + isSecureContext: e.data }, "*"); + }; + w1.onerror = function(e) { + parent.postMessage({ type: "http", error: true }, "*"); + }; + } catch (e) { + // Some browsers throw for cross-origin URLs. This violates the Worker spec, + // but isn't actually relevant to what we're testing here. parent.postMessage({ type: "http", error: true }, "*"); - }; + } - var w2 = new Worker(https_dir + "support/dedicated-worker-script.js"); - w2.onmessage = function(e) { - parent.postMessage({ type: "https", error: false, - isSecureContext: e.data }, "*"); - }; - w2.onerror = function(e) { + try { + var w2 = new Worker(https_dir + "support/dedicated-worker-script.js"); + w2.onmessage = function(e) { + parent.postMessage({ type: "https", error: false, + isSecureContext: e.data }, "*"); + }; + w2.onerror = function(e) { + parent.postMessage({ type: "https", error: true }, "*"); + } + } catch (e) { + // Some browsers throw for cross-origin URLs. This violates the Worker spec, + // but isn't actually relevant to what we're testing here. parent.postMessage({ type: "https", error: true }, "*"); } </script> diff --git a/tests/wpt/web-platform-tests/secure-contexts/support/parent-dedicated-worker-script.js b/tests/wpt/web-platform-tests/secure-contexts/support/parent-dedicated-worker-script.js index a8447552df0..2b674323844 100644 --- a/tests/wpt/web-platform-tests/secure-contexts/support/parent-dedicated-worker-script.js +++ b/tests/wpt/web-platform-tests/secure-contexts/support/parent-dedicated-worker-script.js @@ -1,4 +1,9 @@ -var w = new Worker("dedicated-worker-script.js"); -w.onmessage = function (e) { - postMessage(e.data); +// If nested workers aren't supported, punt: +if (typeof Worker != "undefined") { + var w = new Worker("dedicated-worker-script.js"); + w.onmessage = function (e) { + postMessage(e.data); + } +} else { + postMessage("Nested workers not supported."); } diff --git a/tests/wpt/web-platform-tests/secure-contexts/support/parent-shared-worker-script.js b/tests/wpt/web-platform-tests/secure-contexts/support/parent-shared-worker-script.js index 7f999f93847..083564a0541 100644 --- a/tests/wpt/web-platform-tests/secure-contexts/support/parent-shared-worker-script.js +++ b/tests/wpt/web-platform-tests/secure-contexts/support/parent-shared-worker-script.js @@ -1,8 +1,13 @@ addEventListener("connect", function (e) { var port = e.ports[0]; port.start(); - var w = new Worker("dedicated-worker-script.js"); - w.onmessage = function (e) { - port.postMessage(e.data); + // If nested workers aren't supported, punt: + if (typeof Worker != "undefined") { + var w = new Worker("dedicated-worker-script.js"); + w.onmessage = function (e) { + port.postMessage(e.data); + } + } else { + port.postMessage("Nested workers not supported."); } }); diff --git a/tests/wpt/web-platform-tests/security/support/window-name-navigation.sub.html b/tests/wpt/web-platform-tests/security/support/window-name-navigation.sub.html deleted file mode 100644 index 3200c35bed1..00000000000 --- a/tests/wpt/web-platform-tests/security/support/window-name-navigation.sub.html +++ /dev/null @@ -1,11 +0,0 @@ -<!DOCTYPE html> -<html> - <script> - var url = new URL(window.location.href); - url.hostname = "{{GET[hostname]}}"; - url.pathname = "/security/support/window-name-test.sub.html"; - url.search = "shouldhavename={{GET[shouldhavename]}}&sendmessage={{GET[sendmessage]}}"; - window.name = "test"; - document.location = url.href; - </script> -</html> diff --git a/tests/wpt/web-platform-tests/security/support/window-name-test.sub.html b/tests/wpt/web-platform-tests/security/support/window-name-test.sub.html deleted file mode 100644 index 65662031a04..00000000000 --- a/tests/wpt/web-platform-tests/security/support/window-name-test.sub.html +++ /dev/null @@ -1,23 +0,0 @@ -<script src='/resources/testharness.js'></script> -<script src='/resources/testharnessreport.js'></script> -<script> - function process_test_result(passed, test_name) { - if ({{GET[sendmessage]}}) { - if (window.opener) { - window.opener.postMessage(passed, "*"); - } else { - parent.postMessage(passed, "*"); - } - } else { - test(function(t) { - assert_equals(passed, true); - }, test_name); - } - } - - if ({{GET[shouldhavename]}}) { - process_test_result(window.name == "test", "Test that window name is present"); - } else { - process_test_result(window.name == "", "Test that window name is not present"); - } -</script> diff --git a/tests/wpt/web-platform-tests/security/window-name-after-cross-origin-aux-frame-navigation.sub.html b/tests/wpt/web-platform-tests/security/window-name-after-cross-origin-aux-frame-navigation.sub.html deleted file mode 100644 index 6bc64c63736..00000000000 --- a/tests/wpt/web-platform-tests/security/window-name-after-cross-origin-aux-frame-navigation.sub.html +++ /dev/null @@ -1,17 +0,0 @@ -<!DOCTYPE HTML> -<html> -<head> - <!-- window.name should equal "test" after a cross-origin auxiliary frame navigation. --> - <script src='/resources/testharness.js'></script> - <script src='/resources/testharnessreport.js'></script> -</head> -<body> - <script> - t = async_test("Test that the window name is correct"); - window.addEventListener("message", t.step_func_done(function(e) { - assert_equals(e.data, true); - })); - window.open("support/window-name-navigation.sub.html?hostname={{domains[www1]}}&shouldhavename=true&sendmessage=true"); - </script> -</body> -</html> diff --git a/tests/wpt/web-platform-tests/security/window-name-after-cross-origin-main-frame-navigation.sub.html b/tests/wpt/web-platform-tests/security/window-name-after-cross-origin-main-frame-navigation.sub.html deleted file mode 100644 index 3f26c05fb6e..00000000000 --- a/tests/wpt/web-platform-tests/security/window-name-after-cross-origin-main-frame-navigation.sub.html +++ /dev/null @@ -1,13 +0,0 @@ -<!DOCTYPE HTML> -<html> -<head> - <!-- window.name should equal "" after a cross-origin main frame navigation. --> - <script src='/resources/testharness.js'></script> - <script src='/resources/testharnessreport.js'></script> -</head> -<body> - <script> - document.location = "support/window-name-navigation.sub.html?hostname={{domains[www1]}}&shouldhavename=false&sendmessage=false"; - </script> -</body> -</html> diff --git a/tests/wpt/web-platform-tests/security/window-name-after-cross-origin-sub-frame-navigation.sub.html b/tests/wpt/web-platform-tests/security/window-name-after-cross-origin-sub-frame-navigation.sub.html deleted file mode 100644 index a309be6d801..00000000000 --- a/tests/wpt/web-platform-tests/security/window-name-after-cross-origin-sub-frame-navigation.sub.html +++ /dev/null @@ -1,18 +0,0 @@ -<!DOCTYPE HTML> -<html> -<head> - <!-- window.name should equal "test" after a cross-origin sub frame navigation. --> - <script src='/resources/testharness.js'></script> - <script src='/resources/testharnessreport.js'></script> -</head> -<body> - <script> - t = async_test("Test that the window name is correct"); - window.addEventListener("message", t.step_func_done(function(e) { - assert_equals(e.data, true); - })); - </script> - <iframe src="support/window-name-navigation.sub.html?hostname={{domains[www1]}}&shouldhavename=true&sendmessage=true"; - </iframe> -</body> -</html> diff --git a/tests/wpt/web-platform-tests/security/window-name-after-same-origin-aux-frame-navigation.sub.html b/tests/wpt/web-platform-tests/security/window-name-after-same-origin-aux-frame-navigation.sub.html deleted file mode 100644 index 8e0a95d8c08..00000000000 --- a/tests/wpt/web-platform-tests/security/window-name-after-same-origin-aux-frame-navigation.sub.html +++ /dev/null @@ -1,17 +0,0 @@ -<!DOCTYPE HTML> -<html> -<head> - <!-- window.name should equal "test" after a same-origin auxiliary frame navigation. --> - <script src='/resources/testharness.js'></script> - <script src='/resources/testharnessreport.js'></script> -</head> -<body> - <script> - t = async_test("Test that the window name is correct"); - window.addEventListener("message", t.step_func_done(function(e) { - assert_equals(e.data, true); - })); - window.open("support/window-name-navigation.sub.html?hostname={{host}}&shouldhavename=true&sendmessage=true"); - </script> -</body> -</html> diff --git a/tests/wpt/web-platform-tests/security/window-name-after-same-origin-main-frame-navigation.sub.html b/tests/wpt/web-platform-tests/security/window-name-after-same-origin-main-frame-navigation.sub.html deleted file mode 100644 index 03365b98008..00000000000 --- a/tests/wpt/web-platform-tests/security/window-name-after-same-origin-main-frame-navigation.sub.html +++ /dev/null @@ -1,13 +0,0 @@ -<!DOCTYPE HTML> -<html> -<head> - <!-- window.name should equal "test" after a same-origin main frame navigation. --> - <script src='/resources/testharness.js'></script> - <script src='/resources/testharnessreport.js'></script> -</head> -<body> - <script> - document.location = "support/window-name-navigation.sub.html?hostname={{host}}&shouldhavename=true&sendmessage=false"; - </script> -</body> -</html> diff --git a/tests/wpt/web-platform-tests/security/window-name-after-same-origin-sub-frame-navigation.sub.html b/tests/wpt/web-platform-tests/security/window-name-after-same-origin-sub-frame-navigation.sub.html deleted file mode 100644 index 48a6e247b05..00000000000 --- a/tests/wpt/web-platform-tests/security/window-name-after-same-origin-sub-frame-navigation.sub.html +++ /dev/null @@ -1,18 +0,0 @@ -<!DOCTYPE HTML> -<html> -<head> - <!-- window.name should equal "test" after a same-origin sub frame navigation. --> - <script src='/resources/testharness.js'></script> - <script src='/resources/testharnessreport.js'></script> -</head> -<body> - <script> - t = async_test("Test that the window name is correct"); - window.addEventListener("message", t.step_func_done(function(e) { - assert_equals(e.data, true); - })); - </script> - <iframe src="support/window-name-navigation.sub.html?hostname={{host}}&shouldhavename=true&sendmessage=true"; - </iframe> -</body> -</html> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event.https.html index 51446caebc6..9998a712d37 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event.https.html @@ -428,5 +428,69 @@ async_test(function(t) { .catch(unreached_rejection(t)); }, 'Service Worker responds to fetch event with the correct integrity_metadata'); +// Test that the service worker can read FetchEvent#body when it is a string. +// It responds with request body it read. +promise_test(t => { + // Set scope to "?ignore" so the service worker falls back to network + // for the main resource request, and add a suffix to avoid colliding + // with other tests. + const scope = 'resources/simple.html?ignore-for-request-body-string'; + let frame; + + return service_worker_unregister_and_register(t, worker, scope) + .then(reg => { + add_completion_callback(() => { reg.unregister(); }); + return wait_for_state(t, reg.installing, 'activated'); + }) + .then(() => { + return with_iframe(scope); }) + .then(f => { + frame = f; + return frame.contentWindow.fetch('simple.html?request-body', { + method: 'POST', + body: 'i am the request body' + }); + }) + .then(response => { + return response.text(); + }) + .then(response_text => { + frame.remove(); + assert_equals(response_text, 'i am the request body'); + }); + }, 'FetchEvent#body is a string'); + +// Test that the service worker can read FetchEvent#body when it is a blob. +// It responds with request body it read. +promise_test(t => { + // Set scope to "?ignore" so the service worker falls back to network + // for the main resource request, and add a suffix to avoid colliding + // with other tests. + const scope = 'resources/simple.html?ignore-for-request-body-blob'; + let frame; + + return service_worker_unregister_and_register(t, worker, scope) + .then(reg => { + add_completion_callback(() => { reg.unregister(); }); + return wait_for_state(t, reg.installing, 'activated'); + }) + .then(() => { + return with_iframe(scope); }) + .then(f => { + frame = f; + const blob = new Blob(['it\'s me the blob', ' ', 'and more blob!']); + return frame.contentWindow.fetch('simple.html?request-body', { + method: 'POST', + body: blob + }); + }) + .then(response => { + return response.text(); + }) + .then(response_text => { + frame.remove(); + assert_equals(response_text, 'it\'s me the blob and more blob!'); + }); + }, 'FetchEvent#body is a blob'); </script> </body> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/request-body-blob.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/request-body-blob.https.html deleted file mode 100644 index 7ae2cb0bf93..00000000000 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/request-body-blob.https.html +++ /dev/null @@ -1,31 +0,0 @@ -<!DOCTYPE html> -<meta charset="utf-8"> -<title>request body blob</title> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="resources/test-helpers.sub.js"></script> -<script> -'use strict'; -var resolve_done; -var done; -var done_was_called = new Promise(resolve => done = resolve); - -// This test creates an controlled iframe that does a request with a request -// body blob. The service worker confirms it can read the blob and responds -// with 'Pass'. -promise_test(t => { - var worker = 'resources/request-body-blob-worker.js'; - var scope = 'resources/request-body-blob-iframe.html'; - return service_worker_unregister_and_register(t, worker, scope) - .then(reg => { - add_completion_callback(() => reg.unregister()); - return wait_for_state(t, reg.installing, 'activated'); - }) - .then(() => with_iframe(scope)) - .then(frame => { - t.add_cleanup(() => frame.remove()); - }) - .then(() => done_was_called) - .then(result => assert_equals(result, 'Pass')); - }, 'Service worker can read the request body blob'); -</script> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-event-test-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-event-test-worker.js index 61ae85e9898..0846da15add 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-event-test-worker.js +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-event-test-worker.js @@ -1,3 +1,8 @@ +function handleHeaders(event) { + const headers = Array.from(event.request.headers); + event.respondWith(new Response(JSON.stringify(headers))); +} + function handleString(event) { event.respondWith(new Response('Test string')); } @@ -113,14 +118,17 @@ function handleIntegrity(event) { event.respondWith(new Response(event.request.integrity)); } -function handleHeaders(event) { - const headers = Array.from(event.request.headers); - event.respondWith(new Response(JSON.stringify(headers))); +function handleRequestBody(event) { + event.respondWith(event.request.text() + .then(text => { + return new Response(text); + })); } self.addEventListener('fetch', function(event) { var url = event.request.url; var handlers = [ + { pattern: '?headers', fn: handleHeaders }, { pattern: '?string', fn: handleString }, { pattern: '?blob', fn: handleBlob }, { pattern: '?referrerFull', fn: handleReferrerFull }, @@ -137,7 +145,7 @@ self.addEventListener('fetch', function(event) { { pattern: '?cache', fn: handleCache }, { pattern: '?eventsource', fn: handleEventSource }, { pattern: '?integrity', fn: handleIntegrity }, - { pattern: '?headers', fn: handleHeaders }, + { pattern: '?request-body', fn: handleRequestBody }, ]; var handler = null; diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/request-body-blob-iframe.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/request-body-blob-iframe.html deleted file mode 100644 index 4abf5812c91..00000000000 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/request-body-blob-iframe.html +++ /dev/null @@ -1,20 +0,0 @@ -<!DOCTYPE html> -<meta charset="utf-8"> -<title>request-body-blob-iframe</title> -<body></body> -<script> -var blob = new Blob(['it\'s me the blob', - 'and more blob!']); -fetch('simple.html?post-with-blob-body', - { method: 'POST', body: blob }) - .then(resp => { - if (!resp.ok) - return Promise.reject('bad response: ' + resp.status); - return resp.text() - }) - .then(text => parent.done(text)) - .catch(error => { - var reason = error.message || error.name || error; - parent.done('error: ' + reason); - }); -</script> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/request-body-blob-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/request-body-blob-worker.js deleted file mode 100644 index 1eb9144e7de..00000000000 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/request-body-blob-worker.js +++ /dev/null @@ -1,11 +0,0 @@ -self.addEventListener('fetch', event => { - if (event.request.url.indexOf('?post-with-blob-body') == -1) - return; - event.respondWith(event.request.text().then(body => { - if (body.indexOf('it\'s me the blob') == -1) - return new Response('fail'); - if (body.indexOf('and more blob!') == -1) - return new Response('fail'); - return new Response('Pass'); - })); - }); diff --git a/tests/wpt/web-platform-tests/shadow-dom/event-post-dispatch.html b/tests/wpt/web-platform-tests/shadow-dom/event-post-dispatch.html index d8b07b5895b..239881c7e15 100644 --- a/tests/wpt/web-platform-tests/shadow-dom/event-post-dispatch.html +++ b/tests/wpt/web-platform-tests/shadow-dom/event-post-dispatch.html @@ -206,7 +206,7 @@ document.body.removeChild(n6.test6); let n7 = createTestTree(test7); document.body.appendChild(n7.test7); test(() => { - let log = dispatchEventWithEventLog(n7, n7.target, new MouseEvent('my-event', {bubbles: true, compoesed: true, relatedTarget: n7.relatedTarget})); + let log = dispatchEventWithEventLog(n7, n7.target, new MouseEvent('my-event', {bubbles: true, composed: true, relatedTarget: n7.relatedTarget})); assert_equals(log.event.target, n7.host1); assert_equals(log.event.relatedTarget, n7.host2); assert_equals(log.event.eventPhase, 0); @@ -215,7 +215,7 @@ test(() => { }, 'Event properties post dispatch with relatedTarget in the different shadow trees. (composed: true)'); test(() => { - let log = dispatchEventWithEventLog(n7, n7.target, new MouseEvent('my-event', {bubbles: true, compoesed: false, relatedTarget: n7.relatedTarget})); + let log = dispatchEventWithEventLog(n7, n7.target, new MouseEvent('my-event', {bubbles: true, composed: false, relatedTarget: n7.relatedTarget})); assert_equals(log.event.target, null); assert_equals(log.event.relatedTarget, null); assert_equals(log.event.eventPhase, 0); diff --git a/tests/wpt/web-platform-tests/speech-api/OWNERS b/tests/wpt/web-platform-tests/speech-api/OWNERS index 4fe844cf4b1..9acecca9d1c 100644 --- a/tests/wpt/web-platform-tests/speech-api/OWNERS +++ b/tests/wpt/web-platform-tests/speech-api/OWNERS @@ -1,3 +1,4 @@ @andrenatal @fleizach @gshires +@jdsmith3000 diff --git a/tests/wpt/web-platform-tests/tools/ci/before_install.sh b/tests/wpt/web-platform-tests/tools/ci/before_install.sh index ff2609ead5c..bf7d48c0042 100755 --- a/tests/wpt/web-platform-tests/tools/ci/before_install.sh +++ b/tests/wpt/web-platform-tests/tools/ci/before_install.sh @@ -6,6 +6,8 @@ if [[ $(./wpt test-jobs --includes $JOB; echo $?) -eq 0 ]]; then git submodule update --init --recursive 1>&2 export DISPLAY=:99.0 sh -e /etc/init.d/xvfb start 1>&2 + # For uploading the manifest + export WPT_MANIFEST_FILE=$HOME/meta/MANIFEST-$(git rev-parse HEAD).json else export RUN_JOB=0 fi diff --git a/tests/wpt/web-platform-tests/tools/ci/check_stability.py b/tests/wpt/web-platform-tests/tools/ci/check_stability.py index cf3e10d6d0e..169962a55e6 100644 --- a/tests/wpt/web-platform-tests/tools/ci/check_stability.py +++ b/tests/wpt/web-platform-tests/tools/ci/check_stability.py @@ -9,7 +9,8 @@ from ConfigParser import SafeConfigParser import requests -wpt_root = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir)) +here = os.path.dirname(__file__) +wpt_root = os.path.abspath(os.path.join(here, os.pardir, os.pardir)) sys.path.insert(0, wpt_root) from tools.wpt import testfiles @@ -26,6 +27,8 @@ wptrunner = None def setup_logging(): """Set up basic debug logger.""" + global logger + logger = logging.getLogger(here) handler = logging.StreamHandler(sys.stdout) formatter = logging.Formatter(logging.BASIC_FORMAT, None) handler.setFormatter(formatter) @@ -241,6 +244,25 @@ def post_results(results, pr_number, iterations, product, url, status): requests.post(url, json=payload) +def get_changed_files(manifest_path, rev, ignore_changes, skip_tests): + if not rev: + branch_point = testfiles.branch_point() + revish = "%s..HEAD" % branch_point + else: + revish = rev + + files_changed, files_ignored = testfiles.files_changed(revish, ignore_changes) + + if files_ignored: + logger.info("Ignoring %s changed files:\n%s" % + (len(files_ignored), "".join(" * %s\n" % item for item in files_ignored))) + + tests_changed, files_affected = testfiles.affected_testfiles(files_changed, skip_tests, + manifest_path=manifest_path) + + return tests_changed, files_affected + + def main(): """Perform check_stability functionality and return exit code.""" @@ -280,8 +302,6 @@ def run(venv, wpt_args, **kwargs): except OSError: pass - logger = logging.getLogger(os.path.splitext(__file__)[0]) - setup_logging() browser_name = wpt_args.product.split(":")[0] @@ -304,29 +324,25 @@ def run(venv, wpt_args, **kwargs): head_sha1 = get_sha1() logger.info("Testing web-platform-tests at revision %s" % head_sha1) - if not kwargs["rev"]: - branch_point = testfiles.branch_point() - revish = "%s..HEAD" % branch_point - else: - revish = kwargs["rev"] + wpt_kwargs = Kwargs(vars(wpt_args)) - files_changed, files_ignored = testfiles.files_changed(revish, ignore_changes) + if not wpt_kwargs["test_list"]: + manifest_path = os.path.join(wpt_kwargs["metadata_root"], "MANIFEST.json") + tests_changed, files_affected = get_changed_files(manifest_path, kwargs["rev"], + ignore_changes, skip_tests) - if files_ignored: - logger.info("Ignoring %s changed files:\n%s" % (len(files_ignored), - "".join(" * %s\n" % item for item in files_ignored))) + if not (tests_changed or files_affected): + logger.info("No tests changed") + return 0 - tests_changed, files_affected = testfiles.affected_testfiles(files_changed, skip_tests, - manifest_path=os.path.join( - wpt_args.metadata_root, - "MANIFEST.json")) + if tests_changed: + logger.debug("Tests changed:\n%s" % "".join(" * %s\n" % item for item in tests_changed)) - if not (tests_changed or files_affected): - logger.info("No tests changed") - return 0 + if files_affected: + logger.debug("Affected tests:\n%s" % "".join(" * %s\n" % item for item in files_affected)) + + wpt_kwargs["test_list"] = list(tests_changed | files_affected) - wpt_kwargs = Kwargs(vars(wpt_args)) - wpt_kwargs["test_list"] = list(tests_changed | files_affected) set_default_args(wpt_kwargs) do_delayed_imports() @@ -340,12 +356,6 @@ def run(venv, wpt_args, **kwargs): logger.info("Using binary %s" % wpt_kwargs["binary"]) - if tests_changed: - logger.debug("Tests changed:\n%s" % "".join(" * %s\n" % item for item in tests_changed)) - - if files_affected: - logger.debug("Affected tests:\n%s" % "".join(" * %s\n" % item for item in files_affected)) - with TravisFold("running_tests"): logger.info("Starting tests") @@ -377,7 +387,7 @@ def run(venv, wpt_args, **kwargs): if __name__ == "__main__": try: retcode = main() - except: + except Exception: import traceback traceback.print_exc() sys.exit(1) diff --git a/tests/wpt/web-platform-tests/tools/ci/ci_manifest.sh b/tests/wpt/web-platform-tests/tools/ci/ci_manifest.sh new file mode 100644 index 00000000000..90dea16651c --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/ci/ci_manifest.sh @@ -0,0 +1,12 @@ +set -ex + +SCRIPT_DIR=$(dirname $(readlink -f "$0")) +WPT_ROOT=$(readlink -f $SCRIPT_DIR/../..) +cd $WPT_ROOT + +mkdir -p ~/meta + +./wpt manifest -p ~/meta/MANIFEST.json +cp ~/meta/MANIFEST.json $WPT_MANIFEST_FILE +# Force overwrite of any existing file +gzip -f $WPT_MANIFEST_FILE diff --git a/tests/wpt/web-platform-tests/tools/ci/jobs.py b/tests/wpt/web-platform-tests/tools/ci/jobs.py index 2d2ef2ae6cb..9ec29a897cc 100644 --- a/tests/wpt/web-platform-tests/tools/ci/jobs.py +++ b/tests/wpt/web-platform-tests/tools/ci/jobs.py @@ -21,6 +21,7 @@ job_path_map = { "!.*/README", "!css/[^/]*$"], "lint": [".*"], + "manifest_upload": [".*"], "resources_unittest": ["resources/"], "tools_unittest": ["tools/"], "wptrunner_unittest": ["tools/wptrunner/*"], @@ -99,6 +100,12 @@ def get_jobs(paths, **kwargs): if not rules: break + # Default jobs shuld run even if there were no changes + if not paths: + for job, path_re in iteritems(job_path_map): + if ".*" in path_re: + jobs.add(job) + return jobs @@ -116,4 +123,4 @@ def run(**kwargs): for item in sorted(jobs): print(item) else: - return 0 if set(kwargs["includes"]) == jobs else 1 + return 0 if set(kwargs["includes"]).issubset(jobs) else 1 diff --git a/tests/wpt/web-platform-tests/tools/ci/tests/test_jobs.py b/tests/wpt/web-platform-tests/tools/ci/tests/test_jobs.py index 3192a471b85..1b1ed362064 100644 --- a/tests/wpt/web-platform-tests/tools/ci/tests/test_jobs.py +++ b/tests/wpt/web-platform-tests/tools/ci/tests/test_jobs.py @@ -1,12 +1,16 @@ from tools.ci import jobs +default_jobs = set(["lint", "manifest_upload"]) + + def test_testharness(): - assert jobs.get_jobs(["resources/testharness.js"]) == set(["lint", "resources_unittest"]) + assert jobs.get_jobs(["resources/testharness.js"]) == default_jobs | set(["resources_unittest"]) assert jobs.get_jobs(["resources/testharness.js"], includes=["resources_unittest"]) == set(["resources_unittest"]) assert jobs.get_jobs(["foo/resources/testharness.js"], includes=["resources_unittest"]) == set() + def test_stability(): assert jobs.get_jobs(["dom/historical.html"], includes=["stability"]) == set(["stability"]) @@ -32,8 +36,10 @@ def test_stability(): "css/CSS21/test-001.html"], includes=["stability"]) == set(["stability"]) -def test_lint(): - assert jobs.get_jobs(["README.md"]) == set(["lint"]) + +def test_default(): + assert jobs.get_jobs(["README.md"]) == default_jobs + def test_tools_unittest(): assert jobs.get_jobs(["tools/ci/test/test_jobs.py"], @@ -43,12 +49,14 @@ def test_tools_unittest(): assert jobs.get_jobs(["dom/historical.html"], includes=["tools_unittest"]) == set() + def test_wptrunner_unittest(): assert jobs.get_jobs(["tools/wptrunner/wptrunner/wptrunner.py"], includes=["wptrunner_unittest"]) == set(["wptrunner_unittest"]) assert jobs.get_jobs(["tools/example.py"], includes=["wptrunner_unittest"]) == set() + def test_build_css(): assert jobs.get_jobs(["css/css-build-testsuites.sh"], includes=["build_css"]) == set(["build_css"]) diff --git a/tests/wpt/web-platform-tests/tools/gitignore/gitignore.py b/tests/wpt/web-platform-tests/tools/gitignore/gitignore.py index 60fa330c25a..629ed6b412e 100644 --- a/tests/wpt/web-platform-tests/tools/gitignore/gitignore.py +++ b/tests/wpt/web-platform-tests/tools/gitignore/gitignore.py @@ -66,7 +66,7 @@ def fnmatch_translate(pat, path_name=False): parts.append("$") try: return re.compile("".join(parts)) - except: + except Exception: raise diff --git a/tests/wpt/web-platform-tests/tools/lint/lint.py b/tests/wpt/web-platform-tests/tools/lint/lint.py index e4ad323cc8d..1a5ee1c1b17 100644 --- a/tests/wpt/web-platform-tests/tools/lint/lint.py +++ b/tests/wpt/web-platform-tests/tools/lint/lint.py @@ -361,6 +361,13 @@ class LayoutTestsRegexp(Regexp): file_extensions = [".html", ".htm", ".js", ".xht", ".xhtml", ".svg"] description = "eventSender/testRunner/window.internals used; these are LayoutTests-specific APIs (WebKit/Blink)" +class SpecialPowersRegexp(Regexp): + pattern = b"SpecialPowers" + error = "SPECIALPOWERS API" + file_extensions = [".html", ".htm", ".js", ".xht", ".xhtml", ".svg"] + description = "SpecialPowers used; this is gecko-specific and not supported in wpt" + + regexps = [item() for item in [TrailingWhitespaceRegexp, TabsRegexp, @@ -371,7 +378,8 @@ regexps = [item() for item in ConsoleRegexp, GenerateTestsRegexp, PrintRegexp, - LayoutTestsRegexp]] + LayoutTestsRegexp, + SpecialPowersRegexp]] def check_regexp_line(repo_root, path, f, css_mode): errors = [] diff --git a/tests/wpt/web-platform-tests/tools/manifest/commands.json b/tests/wpt/web-platform-tests/tools/manifest/commands.json index 322cc59811b..d6ccd98809e 100644 --- a/tests/wpt/web-platform-tests/tools/manifest/commands.json +++ b/tests/wpt/web-platform-tests/tools/manifest/commands.json @@ -1,3 +1,6 @@ {"manifest": {"path": "update.py", "script": "run", "parser": "create_parser", "help": "Update the MANIFEST.json file", + "virtualenv": false}, + "manifest-download": + {"path": "download.py", "script": "run", "parser": "create_parser", "help": "Download recent pregenerated MANIFEST.json file", "virtualenv": false}} diff --git a/tests/wpt/web-platform-tests/tools/manifest/download.py b/tests/wpt/web-platform-tests/tools/manifest/download.py new file mode 100644 index 00000000000..42998a2a2db --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/manifest/download.py @@ -0,0 +1,130 @@ +import argparse +import gzip +import json +import io +import log +import os +from datetime import datetime, timedelta + +import urllib2 + +from vcs import Git + +here = os.path.dirname(__file__) + +wpt_root = os.path.abspath(os.path.join(here, os.pardir, os.pardir)) +logger = log.get_logger() + + +def abs_path(path): + return os.path.abspath(os.path.expanduser(path)) + + +def should_download(manifest_path, rebuild_time=timedelta(days=5)): + if not os.path.exists(manifest_path): + return True + mtime = datetime.fromtimestamp(os.path.getmtime(manifest_path)) + if mtime < datetime.now() - rebuild_time: + return True + logger.info("Skipping manifest download because existing file is recent") + return False + + +def git_commits(repo_root): + git = Git.get_func(repo_root) + return [item for item in git("log", "--format=%H", "-n50").split("\n") if item] + + +def github_url(commits): + try: + resp = urllib2.urlopen("https://api.github.com/repos/w3c/web-platform-tests/releases") + except Exception: + return None + + if resp.code != 200: + return None + + try: + releases = json.load(resp.fp) + except ValueError: + logger.warning("Response was not valid JSON") + return None + + fallback = None + for release in releases: + for commit in commits: + for item in release["assets"]: + if item["name"] == "MANIFEST-%s.json.gz" % commit: + return item["browser_download_url"] + elif item["name"] == "MANIFEST.json.gz" and not fallback: + fallback = item["browser_download_url"] + if fallback: + logger.info("Can't find a commit-specific manifest so just using the most recent one") + return fallback + + +def download_manifest(manifest_path, commits_func, url_func, force=False): + if not force and not should_download(manifest_path): + return False + + commits = commits_func() + + url = url_func(commits) + if not url: + logger.warning("No generated manifest found") + return False + + logger.info("Downloading manifest from %s" % url) + try: + resp = urllib2.urlopen(url) + except Exception: + logger.warning("Downloading pregenerated manifest failed") + return False + + if resp.code != 200: + logger.warning("Downloading pregenerated manifest failed; got HTTP status %d" % + resp.code) + return False + + gzf = gzip.GzipFile(fileobj=io.BytesIO(resp.read())) + + try: + decompressed = gzf.read() + except IOError: + logger.warning("Failed to decompress downloaded file") + return False + + try: + with open(manifest_path, "w") as f: + f.write(decompressed) + except Exception: + logger.warning("Failed to write manifest") + return False + logger.info("Manifest downloaded") + return True + + +def create_parser(): + parser = argparse.ArgumentParser() + parser.add_argument( + "-p", "--path", type=abs_path, help="Path to manifest file.") + parser.add_argument( + "--tests-root", type=abs_path, default=wpt_root, help="Path to root of tests.") + parser.add_argument( + "--force", action="store_true", + help="Always download, even if the existing manifest is recent") + return parser + + +def download_from_github(path, tests_root, force=False): + return download_manifest(path, lambda: git_commits(tests_root), github_url, + force=force) + + +def run(**kwargs): + if kwargs["path"] is None: + path = os.path.join(kwargs["tests_root"], "MANIFEST.json") + else: + path = kwargs["path"] + success = download_from_github(path, kwargs["tests_root"], kwargs["force"]) + return 0 if success else 1 diff --git a/tests/wpt/web-platform-tests/tools/manifest/update.py b/tests/wpt/web-platform-tests/tools/manifest/update.py index 0bbbefb9111..29c80105735 100644 --- a/tests/wpt/web-platform-tests/tools/manifest/update.py +++ b/tests/wpt/web-platform-tests/tools/manifest/update.py @@ -7,13 +7,16 @@ import sys import manifest from . import vcs from .log import get_logger +from .download import download_from_github here = os.path.dirname(__file__) wpt_root = os.path.abspath(os.path.join(here, os.pardir, os.pardir)) +logger = get_logger() def update(tests_root, manifest, working_copy=False): + logger.info("Updating manifest") tree = None if not working_copy: tree = vcs.Git.for_path(tests_root, manifest.url_base) @@ -29,7 +32,9 @@ def update_from_cli(**kwargs): assert tests_root is not None m = None - logger = get_logger() + + if kwargs["download"]: + download_from_github(path, tests_root) if not kwargs.get("rebuild", False): try: @@ -37,8 +42,6 @@ def update_from_cli(**kwargs): except manifest.ManifestVersionMismatch: logger.info("Manifest version changed, rebuilding") m = None - else: - logger.info("Updating manifest") if m is None: m = manifest.Manifest(kwargs["url_base"]) @@ -69,6 +72,9 @@ def create_parser(): parser.add_argument( "--url-base", action="store", default="/", help="Base url to use as the mount point for tests in this manifest.") + parser.add_argument( + "--no-download", dest="download", action="store_false", default=True, + help="Never attempt to download the manifest.") return parser diff --git a/tests/wpt/web-platform-tests/tools/runner/index.html b/tests/wpt/web-platform-tests/tools/runner/index.html index c46c963c0e7..5dfc1dcf36e 100644 --- a/tests/wpt/web-platform-tests/tools/runner/index.html +++ b/tests/wpt/web-platform-tests/tools/runner/index.html @@ -4,8 +4,9 @@ <title>Web tests</title> <link rel='stylesheet' href='css/bootstrap.min.css'> <link rel='stylesheet' href='css/bootstrap-theme.min.css'> -<link rel=stylesheet href=runner.css> -<script src=runner.js></script> +<link rel='stylesheet' href='runner.css'> +<script src='/common/get-host-info.sub.js'></script> +<script src='runner.js'></script> <header class="navbar navbar-inverse navbar-fixed-top"> diff --git a/tests/wpt/web-platform-tests/tools/runner/runner.js b/tests/wpt/web-platform-tests/tools/runner/runner.js index 8969105641c..c17c01f53dd 100644 --- a/tests/wpt/web-platform-tests/tools/runner/runner.js +++ b/tests/wpt/web-platform-tests/tools/runner/runner.js @@ -654,7 +654,8 @@ Results.prototype = { }; function Runner(manifest_path) { - this.server = location.protocol + "//" + location.host; + this.server = get_host_info().HTTP_ORIGIN; + this.https_server = get_host_info().HTTPS_ORIGIN; this.manifest = new Manifest(manifest_path); this.path = null; this.test_types = null; @@ -832,7 +833,10 @@ Runner.prototype = { load: function(path) { this.ensure_test_window(); - this.test_window.location.href = this.server + path; + if (path.match(".https.")) + this.test_window.location.href = this.https_server + path; + else + this.test_window.location.href = this.server + path; }, progress: function() { @@ -844,8 +848,26 @@ Runner.prototype = { this.num_tests = this.manifest_iterator.count(); } return this.num_tests; - } + }, + + on_complete: function(tests, status) { + var harness_status_map = {0:"OK", 1:"ERROR", 2:"TIMEOUT", 3:"NOTRUN"}; + var subtest_status_map = {0:"PASS", 1:"FAIL", 2:"TIMEOUT", 3:"NOTRUN"}; + // this ugly hack is because IE really insists on holding on to the objects it creates in + // other windows, and on losing track of them when the window gets closed + var subtest_results = JSON.parse(JSON.stringify( + tests.map(function (test) { + return {name: test.name, + status: subtest_status_map[test.status], + message: test.message}; + }) + )); + + runner.on_result(harness_status_map[status.status], + status.message, + subtest_results); + } }; @@ -883,26 +905,12 @@ function setup() { test_control.get_use_regex()); return; } -} - -window.completion_callback = function(tests, status) { - var harness_status_map = {0:"OK", 1:"ERROR", 2:"TIMEOUT", 3:"NOTRUN"}; - var subtest_status_map = {0:"PASS", 1:"FAIL", 2:"TIMEOUT", 3:"NOTRUN"}; - - // this ugly hack is because IE really insists on holding on to the objects it creates in - // other windows, and on losing track of them when the window gets closed - var subtest_results = JSON.parse(JSON.stringify( - tests.map(function (test) { - return {name: test.name, - status: subtest_status_map[test.status], - message: test.message}; - }) - )); - runner.on_result(harness_status_map[status.status], - status.message, - subtest_results); -}; + window.addEventListener("message", function(e) { + if (e.data.type === "complete") + runner.on_complete(e.data.tests, e.data.status); + }); +} window.addEventListener("DOMContentLoaded", setup, false); })(); diff --git a/tests/wpt/web-platform-tests/tools/serve/serve.py b/tests/wpt/web-platform-tests/tools/serve/serve.py index 96417c326fa..f1cd008642d 100644 --- a/tests/wpt/web-platform-tests/tools/serve/serve.py +++ b/tests/wpt/web-platform-tests/tools/serve/serve.py @@ -279,7 +279,7 @@ def setup_logger(level): import logging global logger logger = logging.getLogger("web-platform-tests") - logging.basicConfig(level=getattr(logging, level.upper())) + logger.setLevel(getattr(logging, level.upper())) set_logger(logger) @@ -397,7 +397,7 @@ class ServerProc(object): except socket.error: print("Socket error on port %s" % port, file=sys.stderr) raise - except: + except Exception: print(traceback.format_exc(), file=sys.stderr) raise @@ -408,7 +408,7 @@ class ServerProc(object): self.stop.wait() except KeyboardInterrupt: pass - except: + except Exception: print(traceback.format_exc(), file=sys.stderr) raise diff --git a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/transport.py b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/transport.py index cc07b9191f1..8ee4c55c526 100644 --- a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/transport.py +++ b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/transport.py @@ -33,7 +33,7 @@ class Response(object): if body: try: body = json.loads(body) - except: + except Exception: raise error.UnknownErrorException("Failed to decode body as json:\n%s" % body) return cls(status, body) diff --git a/tests/wpt/web-platform-tests/tools/wpt/commands.json b/tests/wpt/web-platform-tests/tools/wpt/commands.json index 1ab767fea6a..2e4b96fe724 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/commands.json +++ b/tests/wpt/web-platform-tests/tools/wpt/commands.json @@ -5,5 +5,6 @@ "help": "Get a list of files that have changed", "virtualenv": false}, "tests-affected": {"path": "testfiles.py", "script": "run_tests_affected", "parser": "get_parser_affected", "help": "Get a list of tests affected by changes", "virtualenv": false}, - "install": {"path": "install.py", "script": "run", "parser": "get_parser", "help": "Install browser components"} + "install": {"path": "install.py", "script": "run", "parser": "get_parser", "help": "Install browser components"}, + "branch-point": {"path": "testfiles.py", "script": "display_branch_point", "parser": null, "help": "Print branch point from master", "virtualenv": false} } diff --git a/tests/wpt/web-platform-tests/tools/wpt/run.py b/tests/wpt/web-platform-tests/tools/wpt/run.py index 1567a72721b..500402f596a 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/run.py +++ b/tests/wpt/web-platform-tests/tools/wpt/run.py @@ -64,6 +64,7 @@ def args_general(kwargs): kwargs.set_if_none("tests_root", wpt_root) kwargs.set_if_none("metadata_root", wpt_root) kwargs.set_if_none("manifest_update", True) + kwargs.set_if_none("manifest_download", True) if kwargs["ssl_type"] in (None, "pregenerated"): cert_root = os.path.join(wpt_root, "tools", "certs") @@ -109,8 +110,8 @@ def check_environ(product): for line in f: line = line.split("#", 1)[0].strip() parts = line.split() - if len(parts) == 2: - host = parts[1] + hosts = parts[1:] + for host in hosts: missing_hosts.discard(host) if missing_hosts: raise WptrunError("""Missing hosts file configuration. Expected entries like: @@ -415,5 +416,5 @@ if __name__ == "__main__": from tools import localpaths try: main() - except: + except Exception: pdb.post_mortem() diff --git a/tests/wpt/web-platform-tests/tools/wpt/testfiles.py b/tests/wpt/web-platform-tests/tools/wpt/testfiles.py index 89e6e2764ae..519a958d511 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/testfiles.py +++ b/tests/wpt/web-platform-tests/tools/wpt/testfiles.py @@ -27,9 +27,17 @@ def get_git_cmd(repo_path): return git +def display_branch_point(): + print(branch_point()) + + def branch_point(): git = get_git_cmd(wpt_root) - if os.environ.get("TRAVIS_PULL_REQUEST", "false") != "false": + if (os.environ.get("TRAVIS_PULL_REQUEST", "false") == "false" and + os.environ.get("TRAVIS_BRANCH") == "master"): + # For builds on the master branch just return the HEAD commit + return git("rev-parse", "HEAD") + elif os.environ.get("TRAVIS_PULL_REQUEST", "false") != "false": # This is a PR, so the base branch is in TRAVIS_BRANCH travis_branch = os.environ.get("TRAVIS_BRANCH") assert travis_branch, "TRAVIS_BRANCH environment variable is defined" diff --git a/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py b/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py index e3b8d1f5fdb..b2a0783a097 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py +++ b/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py @@ -101,7 +101,6 @@ def test_tests_affected(capsys): assert excinfo.value.code == 0 out, err = capsys.readouterr() assert "html/browsers/offline/appcache/workers/appcache-worker.html" in out - assert err == "" def test_serve(): diff --git a/tests/wpt/web-platform-tests/tools/wpt/utils.py b/tests/wpt/web-platform-tests/tools/wpt/utils.py index 32e780f4e17..e1f4cd4bb5c 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/utils.py +++ b/tests/wpt/web-platform-tests/tools/wpt/utils.py @@ -10,11 +10,17 @@ logger = logging.getLogger(__name__) class Kwargs(dict): - def set_if_none(self, name, value, err_fn=None, desc=None, extra_cond=None): + def set_if_none(self, + name, # type: str + value, # type: Any + err_fn=None, # type: (Kwargs, str) -> Any + desc=None, # type: str + extra_cond=None # type: (Kwargs) -> bool + ): if desc is None: desc = name - if self[name] is None: + if name not in self or self[name] is None: if extra_cond is not None and not extra_cond(self): return if callable(value): diff --git a/tests/wpt/web-platform-tests/tools/wpt/wpt.py b/tests/wpt/web-platform-tests/tools/wpt/wpt.py index cf94ce038d6..49f463d2a9e 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/wpt.py +++ b/tests/wpt/web-platform-tests/tools/wpt/wpt.py @@ -1,6 +1,7 @@ import argparse -import os import json +import logging +import os import sys from tools import localpaths @@ -89,6 +90,8 @@ def setup_virtualenv(path, props): def main(prog=None, argv=None): + logging.basicConfig(level=logging.INFO) + if prog is None: prog = sys.argv[0] if argv is None: diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py index 10f3586f143..71c55232580 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py @@ -14,12 +14,17 @@ from mozlog import structured manifest = None manifest_update = None +download_from_github = None +manifest_log = None def do_delayed_imports(): # This relies on an already loaded module having set the sys.path correctly :( - global manifest, manifest_update + global manifest, manifest_update, download_from_github, manifest_log from manifest import manifest from manifest import update as manifest_update + from manifest.download import download_from_github + from manifest import log as manifest_log + class TestChunker(object): def __init__(self, total_chunks, chunk_number): @@ -372,10 +377,11 @@ class TagFilter(object): yield test class ManifestLoader(object): - def __init__(self, test_paths, force_manifest_update=False): + def __init__(self, test_paths, force_manifest_update=False, manifest_download=False): do_delayed_imports() self.test_paths = test_paths self.force_manifest_update = force_manifest_update + self.manifest_download = manifest_download self.logger = structured.get_default_logger() if self.logger is None: self.logger = structured.structuredlog.StructuredLogger("ManifestLoader") @@ -391,13 +397,19 @@ class ManifestLoader(object): return rv def create_manifest(self, manifest_path, tests_path, url_base="/"): - self.update_manifest(manifest_path, tests_path, url_base, recreate=True) + self.update_manifest(manifest_path, tests_path, url_base, recreate=True, + download=self.manifest_download) def update_manifest(self, manifest_path, tests_path, url_base="/", - recreate=False): + recreate=False, download=False): self.logger.info("Updating test manifest %s" % manifest_path) + manifest_log.setup() json_data = None + if download: + # TODO: make this not github-specific + download_from_github(manifest_path, tests_path) + if not recreate: try: with open(manifest_path) as f: @@ -422,7 +434,7 @@ class ManifestLoader(object): manifest_path = os.path.join(metadata_path, "MANIFEST.json") if (not os.path.exists(manifest_path) or self.force_manifest_update): - self.update_manifest(manifest_path, tests_path, url_base) + self.update_manifest(manifest_path, tests_path, url_base, download=self.manifest_download) manifest_file = manifest.load(tests_path, manifest_path) if manifest_file.url_base != url_base: self.logger.info("Updating url_base in manifest from %s to %s" % (manifest_file.url_base, diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py index c4655b7fae3..882ac201c4a 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py @@ -157,6 +157,7 @@ class BrowserManager(object): self.started = False self.init_timer = None + self.command_queue = command_queue def update_settings(self, test): browser_settings = self.browser.settings(test) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/update/state.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/update/state.py index 9454414e640..dc459da7e2e 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/update/state.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/update/state.py @@ -44,6 +44,8 @@ class State(object): def load(cls, logger): """Load saved state from a file""" try: + if not os.path.isfile(cls.filename): + return None with open(cls.filename) as f: try: rv = pickle.load(f) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py index a9a626429b1..b7d72c091a5 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py @@ -51,6 +51,8 @@ scheme host and port.""") help="Regenerate the test manifest.") parser.add_argument("--no-manifest-update", action="store_false", dest="manifest_update", help="Prevent regeneration of the test manifest.") + parser.add_argument("--manifest-download", action="store_true", default=None, + help="Attempt to download a preexisting manifest when updating.") parser.add_argument("--timeout-multiplier", action="store", type=float, default=None, help="Multiplier relative to standard test timeout to use") diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py index 9855ecc672c..0c0042fffe3 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py @@ -45,7 +45,8 @@ def get_loader(test_paths, product, ssl_env, debug=None, run_info_extras=None, * run_info = wpttest.get_run_info(kwargs["run_info"], product, debug=debug, extras=run_info_extras) - test_manifests = testloader.ManifestLoader(test_paths, force_manifest_update=kwargs["manifest_update"]).load() + test_manifests = testloader.ManifestLoader(test_paths, force_manifest_update=kwargs["manifest_update"], + manifest_download=kwargs["manifest_download"]).load() manifest_filters = [] meta_filters = [] diff --git a/tests/wpt/web-platform-tests/visual-viewport/OWNERS b/tests/wpt/web-platform-tests/visual-viewport/OWNERS new file mode 100644 index 00000000000..d1e99186566 --- /dev/null +++ b/tests/wpt/web-platform-tests/visual-viewport/OWNERS @@ -0,0 +1 @@ +@bokand diff --git a/tests/wpt/web-platform-tests/viewport/viewport-attribute-event-handlers-manual.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-attribute-event-handlers-manual.html index 896f6cd98b3..896f6cd98b3 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport-attribute-event-handlers-manual.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-attribute-event-handlers-manual.html diff --git a/tests/wpt/web-platform-tests/viewport/viewport-dimensions-custom-scrollbars-manual.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-dimensions-custom-scrollbars-manual.html index c0d4b17b13b..c0d4b17b13b 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport-dimensions-custom-scrollbars-manual.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-dimensions-custom-scrollbars-manual.html diff --git a/tests/wpt/web-platform-tests/viewport/viewport-dimensions-scrollbars-manual.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-dimensions-scrollbars-manual.html index 17454a3698e..17454a3698e 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport-dimensions-scrollbars-manual.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-dimensions-scrollbars-manual.html diff --git a/tests/wpt/web-platform-tests/viewport/viewport-no-resize-event-on-overflow-recalc.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-no-resize-event-on-overflow-recalc.html index 5e73db8e46e..5e73db8e46e 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport-no-resize-event-on-overflow-recalc.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-no-resize-event-on-overflow-recalc.html diff --git a/tests/wpt/web-platform-tests/viewport/viewport-offset-manual.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-offset-manual.html index c216e405a3e..c216e405a3e 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport-offset-manual.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-offset-manual.html diff --git a/tests/wpt/web-platform-tests/viewport/viewport-page-manual.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-page-manual.html index 9fb75ca0a2d..9fb75ca0a2d 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport-page-manual.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-page-manual.html diff --git a/tests/wpt/web-platform-tests/viewport/viewport-read-size-causes-layout.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-read-size-causes-layout.html index 0520a7cf805..0520a7cf805 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport-read-size-causes-layout.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-read-size-causes-layout.html diff --git a/tests/wpt/web-platform-tests/viewport/viewport-read-size-in-iframe-causes-layout.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-read-size-in-iframe-causes-layout.html index a08f7e876fc..a08f7e876fc 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport-read-size-in-iframe-causes-layout.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-read-size-in-iframe-causes-layout.html diff --git a/tests/wpt/web-platform-tests/viewport/viewport-resize-event-manual.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-resize-event-manual.html index 9088d1589b3..9088d1589b3 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport-resize-event-manual.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-resize-event-manual.html diff --git a/tests/wpt/web-platform-tests/viewport/viewport-resize-event-on-load-overflowing-page.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-resize-event-on-load-overflowing-page.html index b0603c8752d..b0603c8752d 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport-resize-event-on-load-overflowing-page.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-resize-event-on-load-overflowing-page.html diff --git a/tests/wpt/web-platform-tests/viewport/viewport-scale-iframe-manual.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-scale-iframe-manual.html index 1c27ab71e16..1c27ab71e16 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport-scale-iframe-manual.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-scale-iframe-manual.html diff --git a/tests/wpt/web-platform-tests/viewport/viewport-scale-manual.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-scale-manual.html index 82bf418e1c3..82bf418e1c3 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport-scale-manual.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-scale-manual.html diff --git a/tests/wpt/web-platform-tests/viewport/viewport-scroll-event-manual.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-scroll-event-manual.html index 3fcce101447..3fcce101447 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport-scroll-event-manual.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-scroll-event-manual.html diff --git a/tests/wpt/web-platform-tests/viewport/viewport-scrollbars-cause-resize.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-scrollbars-cause-resize.html index d0158c6f625..d0158c6f625 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport-scrollbars-cause-resize.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-scrollbars-cause-resize.html diff --git a/tests/wpt/web-platform-tests/viewport/viewport-type.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-type.html index 7a9ca425c08..7a9ca425c08 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport-type.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-type.html diff --git a/tests/wpt/web-platform-tests/viewport/viewport-unscaled-scale-iframe.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-unscaled-scale-iframe.html index 30d9bfbe896..30d9bfbe896 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport-unscaled-scale-iframe.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-unscaled-scale-iframe.html diff --git a/tests/wpt/web-platform-tests/viewport/viewport-unscaled-scale.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-unscaled-scale.html index b83015d8d16..b83015d8d16 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport-unscaled-scale.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-unscaled-scale.html diff --git a/tests/wpt/web-platform-tests/viewport/viewport-unscaled-scroll-iframe.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-unscaled-scroll-iframe.html index f9e3023ab79..f9e3023ab79 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport-unscaled-scroll-iframe.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-unscaled-scroll-iframe.html diff --git a/tests/wpt/web-platform-tests/viewport/viewport-unscaled-scroll.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-unscaled-scroll.html index 93623d19625..93623d19625 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport-unscaled-scroll.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-unscaled-scroll.html diff --git a/tests/wpt/web-platform-tests/viewport/viewport-unscaled-size-iframe.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-unscaled-size-iframe.html index 9a3c131a145..9a3c131a145 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport-unscaled-size-iframe.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-unscaled-size-iframe.html diff --git a/tests/wpt/web-platform-tests/viewport/viewport-unscaled-size.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-unscaled-size.html index 8ad9fb2cfeb..8ad9fb2cfeb 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport-unscaled-size.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-unscaled-size.html diff --git a/tests/wpt/web-platform-tests/viewport/viewport-url-bar-changes-height-manual.html b/tests/wpt/web-platform-tests/visual-viewport/viewport-url-bar-changes-height-manual.html index 563134236bf..563134236bf 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport-url-bar-changes-height-manual.html +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport-url-bar-changes-height-manual.html diff --git a/tests/wpt/web-platform-tests/viewport/viewport_support.js b/tests/wpt/web-platform-tests/visual-viewport/viewport_support.js index 5cea91a0155..5cea91a0155 100644 --- a/tests/wpt/web-platform-tests/viewport/viewport_support.js +++ b/tests/wpt/web-platform-tests/visual-viewport/viewport_support.js diff --git a/tests/wpt/web-platform-tests/wai-aria/alertdialog_modal_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/alertdialog_modal_true-manual.html index 3eba98b4ee3..5ff5660f051 100644 --- a/tests/wpt/web-platform-tests/wai-aria/alertdialog_modal_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/alertdialog_modal_true-manual.html @@ -31,26 +31,6 @@ "STATE_MODAL" ] ], - "AXAPI" : [ - [ - "property", - "AXRole", - "is", - "AXGroup" - ], - [ - "property", - "AXSubrole", - "is", - "AXApplicationAlertDialog" - ], - [ - "property", - "AXRoleDescription", - "is", - "web alert dialog" - ] - ], "IAccessible2" : [ [ "property", diff --git a/tests/wpt/web-platform-tests/wai-aria/dialog_modal_true-manual.html b/tests/wpt/web-platform-tests/wai-aria/dialog_modal_true-manual.html index 4b5dfd689dc..2ce3fe6cd14 100644 --- a/tests/wpt/web-platform-tests/wai-aria/dialog_modal_true-manual.html +++ b/tests/wpt/web-platform-tests/wai-aria/dialog_modal_true-manual.html @@ -31,26 +31,6 @@ "STATE_MODAL" ] ], - "AXAPI" : [ - [ - "property", - "AXRole", - "is", - "AXGroup" - ], - [ - "property", - "AXSubrole", - "is", - "AXApplicationDialog" - ], - [ - "property", - "AXRoleDescription", - "is", - "web dialog" - ] - ], "IAccessible2" : [ [ "property", diff --git a/tests/wpt/web-platform-tests/wake-lock/OWNERS b/tests/wpt/web-platform-tests/wake-lock/OWNERS new file mode 100644 index 00000000000..fc40cda0c69 --- /dev/null +++ b/tests/wpt/web-platform-tests/wake-lock/OWNERS @@ -0,0 +1,3 @@ +@andrey-logvinov +@marcoscaceres +@Honry diff --git a/tests/wpt/web-platform-tests/wake-lock/interfaces.https.html b/tests/wpt/web-platform-tests/wake-lock/interfaces.https.html new file mode 100644 index 00000000000..12eb543f82e --- /dev/null +++ b/tests/wpt/web-platform-tests/wake-lock/interfaces.https.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Wake Lock API IDL tests</title> +<link rel="author" title="Intel" href="http://www.intel.com"> +<link rel="help" href="https://w3c.github.io/wake-lock/"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/WebIDLParser.js"></script> +<script src="/resources/idlharness.js"></script> +<script> +"use strict"; + +promise_test(async () => { + const idl_array = new IdlArray(); + const dom_idl = await fetch("/interfaces/dom.idl").then(r => r.text()); + const wakelock_idl = await fetch("/interfaces/wake-lock.idl").then(r => r.text()); + const wakelock = await navigator.getWakeLock("screen"); + + idl_array.add_untested_idls(dom_idl); + idl_array.add_untested_idls('interface EventHandler {};'); + idl_array.add_untested_idls('interface Navigator {};'); + idl_array.add_idls(wakelock_idl); + + window.wakelock = wakelock; + window.request = wakelock.createRequest(); + + idl_array.add_objects({ + Navigator: ['navigator'], + WakeLock: ['wakelock'], + WakeLockRequest: ['request'] + }); + idl_array.test(); +}, "Test IDL implementation of WakeLock API"); +</script> diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterationStart.html b/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterationStart.html index df3f992d4c2..ed2d0e097ac 100644 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterationStart.html +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterationStart.html @@ -25,7 +25,7 @@ test(function(t) { duration: 100, delay: 1 }); anim.effect.timing.iterationStart = 2.5; - assert_equals(anim.effect.getComputedTiming().progress, 0.5); + assert_times_equal(anim.effect.getComputedTiming().progress, 0.5); assert_equals(anim.effect.getComputedTiming().currentIteration, 2); }, 'Test that changing the iterationStart affects computed timing ' + 'when backwards-filling'); @@ -39,7 +39,7 @@ test(function(t) { duration: 100, delay: 0 }); anim.effect.timing.iterationStart = 2.5; - assert_equals(anim.effect.getComputedTiming().progress, 0.5); + assert_times_equal(anim.effect.getComputedTiming().progress, 0.5); assert_equals(anim.effect.getComputedTiming().currentIteration, 2); }, 'Test that changing the iterationStart affects computed timing ' + 'during the active phase'); @@ -54,7 +54,7 @@ test(function(t) { delay: 0 }); anim.finish(); anim.effect.timing.iterationStart = 2.5; - assert_equals(anim.effect.getComputedTiming().progress, 0.5); + assert_times_equal(anim.effect.getComputedTiming().progress, 0.5); assert_equals(anim.effect.getComputedTiming().currentIteration, 3); }, 'Test that changing the iterationStart affects computed timing ' + 'when forwards-filling'); diff --git a/tests/wpt/web-platform-tests/web-animations/resources/effect-tests.js b/tests/wpt/web-platform-tests/web-animations/resources/effect-tests.js index 5d0f61838b1..4a0c66e1f28 100644 --- a/tests/wpt/web-platform-tests/web-animations/resources/effect-tests.js +++ b/tests/wpt/web-platform-tests/web-animations/resources/effect-tests.js @@ -17,6 +17,11 @@ // } // function assert_computed_timing_for_each_phase(animation, property, values) { + // Some computed timing properties (e.g. 'progress') require floating-point + // comparison, whilst exact equality suffices for others. + const assert_property_equals = + (property === 'progress') ? assert_times_equal : assert_equals; + const effect = animation.effect; const timing = effect.getComputedTiming(); @@ -33,8 +38,8 @@ function assert_computed_timing_for_each_phase(animation, property, values) { } else { animation.currentTime = beforeActive; } - assert_equals(effect.getComputedTiming()[property], values.before, - `Value of ${property} in the before phase`); + assert_property_equals(effect.getComputedTiming()[property], values.before, + `Value of ${property} in the before phase`); // Active phase if (effect.getComputedTiming().activeDuration > 0) { @@ -43,8 +48,8 @@ function assert_computed_timing_for_each_phase(animation, property, values) { } else { animation.currentTime = activeAfter; } - assert_equals(effect.getComputedTiming()[property], values.activeBoundary, - `Value of ${property} at the boundary of the active phase`); + assert_property_equals(effect.getComputedTiming()[property], values.activeBoundary, + `Value of ${property} at the boundary of the active phase`); } else { assert_equals(values.activeBoundary, undefined, 'Test specifies a value to check during the active phase but' @@ -58,8 +63,8 @@ function assert_computed_timing_for_each_phase(animation, property, values) { } else { animation.currentTime = activeAfter + 1; } - assert_equals(effect.getComputedTiming()[property], values.after, - `Value of ${property} in the after phase`); + assert_property_equals(effect.getComputedTiming()[property], values.after, + `Value of ${property} in the after phase`); } else { assert_equals(values.after, undefined, 'Test specifies a value to check during the after phase but' diff --git a/tests/wpt/web-platform-tests/webaudio/chrome/resources/audioparam-testing.js b/tests/wpt/web-platform-tests/webaudio/chrome/resources/audioparam-testing.js new file mode 100644 index 00000000000..bc90ddbef82 --- /dev/null +++ b/tests/wpt/web-platform-tests/webaudio/chrome/resources/audioparam-testing.js @@ -0,0 +1,554 @@ +(function(global) { + + // Information about the starting/ending times and starting/ending values for + // each time interval. + let timeValueInfo; + + // The difference between starting values between each time interval. + let startingValueDelta; + + // For any automation function that has an end or target value, the end value + // is based the starting value of the time interval. The starting value will + // be increased or decreased by |startEndValueChange|. We choose half of + // |startingValueDelta| so that the ending value will be distinct from the + // starting value for next time interval. This allows us to detect where the + // ramp begins and ends. + let startEndValueChange; + + // Default threshold to use for detecting discontinuities that should appear + // at each time interval. + let discontinuityThreshold; + + // Time interval between value changes. It is best if 1 / numberOfTests is + // not close to timeInterval. + let timeIntervalInternal = .03; + + let context; + + // Make sure we render long enough to capture all of our test data. + function renderLength(numberOfTests) { + return timeToSampleFrame((numberOfTests + 1) * timeInterval, sampleRate); + } + + // Create a constant reference signal with the given |value|. Basically the + // same as |createConstantBuffer|, but with the parameters to match the other + // create functions. The |endValue| is ignored. + function createConstantArray( + startTime, endTime, value, endValue, sampleRate) { + let startFrame = timeToSampleFrame(startTime, sampleRate); + let endFrame = timeToSampleFrame(endTime, sampleRate); + let length = endFrame - startFrame; + + let buffer = createConstantBuffer(context, length, value); + + return buffer.getChannelData(0); + } + + function getStartEndFrames(startTime, endTime, sampleRate) { + // Start frame is the ceiling of the start time because the ramp starts at + // or after the sample frame. End frame is the ceiling because it's the + // exclusive ending frame of the automation. + let startFrame = Math.ceil(startTime * sampleRate); + let endFrame = Math.ceil(endTime * sampleRate); + + return {startFrame: startFrame, endFrame: endFrame}; + } + + // Create a linear ramp starting at |startValue| and ending at |endValue|. The + // ramp starts at time |startTime| and ends at |endTime|. (The start and end + // times are only used to compute how many samples to return.) + function createLinearRampArray( + startTime, endTime, startValue, endValue, sampleRate) { + let frameInfo = getStartEndFrames(startTime, endTime, sampleRate); + let startFrame = frameInfo.startFrame; + let endFrame = frameInfo.endFrame; + let length = endFrame - startFrame; + let array = new Array(length); + + let step = Math.fround( + (endValue - startValue) / (endTime - startTime) / sampleRate); + let start = Math.fround( + startValue + + (endValue - startValue) * (startFrame / sampleRate - startTime) / + (endTime - startTime)); + + let slope = (endValue - startValue) / (endTime - startTime); + + // v(t) = v0 + (v1 - v0)*(t-t0)/(t1-t0) + for (k = 0; k < length; ++k) { + // array[k] = Math.fround(start + k * step); + let t = (startFrame + k) / sampleRate; + array[k] = startValue + slope * (t - startTime); + } + + return array; + } + + // Create an exponential ramp starting at |startValue| and ending at + // |endValue|. The ramp starts at time |startTime| and ends at |endTime|. + // (The start and end times are only used to compute how many samples to + // return.) + function createExponentialRampArray( + startTime, endTime, startValue, endValue, sampleRate) { + let deltaTime = endTime - startTime; + + let frameInfo = getStartEndFrames(startTime, endTime, sampleRate); + let startFrame = frameInfo.startFrame; + let endFrame = frameInfo.endFrame; + let length = endFrame - startFrame; + let array = new Array(length); + + let ratio = endValue / startValue; + + // v(t) = v0*(v1/v0)^((t-t0)/(t1-t0)) + for (let k = 0; k < length; ++k) { + let t = Math.fround((startFrame + k) / sampleRate); + array[k] = Math.fround( + startValue * Math.pow(ratio, (t - startTime) / deltaTime)); + } + + return array; + } + + function discreteTimeConstantForSampleRate(timeConstant, sampleRate) { + return 1 - Math.exp(-1 / (sampleRate * timeConstant)); + } + + // Create a signal that starts at |startValue| and exponentially approaches + // the target value of |targetValue|, using a time constant of |timeConstant|. + // The ramp starts at time |startTime| and ends at |endTime|. (The start and + // end times are only used to compute how many samples to return.) + function createExponentialApproachArray( + startTime, endTime, startValue, targetValue, sampleRate, timeConstant) { + let startFrameFloat = startTime * sampleRate; + let frameInfo = getStartEndFrames(startTime, endTime, sampleRate); + let startFrame = frameInfo.startFrame; + let endFrame = frameInfo.endFrame; + let length = Math.floor(endFrame - startFrame); + let array = new Array(length); + let c = discreteTimeConstantForSampleRate(timeConstant, sampleRate); + + let delta = startValue - targetValue; + + // v(t) = v1 + (v0 - v1) * exp(-(t-t0)/tau) + for (let k = 0; k < length; ++k) { + let t = (startFrame + k) / sampleRate; + let value = + targetValue + delta * Math.exp(-(t - startTime) / timeConstant); + array[k] = value; + } + + return array; + } + + // Create a sine wave of the specified duration. + function createReferenceSineArray( + startTime, endTime, startValue, endValue, sampleRate) { + // Ignore |startValue| and |endValue| for the sine wave. + let curve = createSineWaveArray( + endTime - startTime, freqHz, sineAmplitude, sampleRate); + // Sample the curve appropriately. + let frameInfo = getStartEndFrames(startTime, endTime, sampleRate); + let startFrame = frameInfo.startFrame; + let endFrame = frameInfo.endFrame; + let length = Math.floor(endFrame - startFrame); + let array = new Array(length); + + // v(t) = linearly interpolate between V[k] and V[k + 1] where k = + // floor((N-1)/duration*(t - t0)) + let f = (length - 1) / (endTime - startTime); + + for (let k = 0; k < length; ++k) { + let t = (startFrame + k) / sampleRate; + let indexFloat = f * (t - startTime); + let index = Math.floor(indexFloat); + if (index + 1 < length) { + let v0 = curve[index]; + let v1 = curve[index + 1]; + array[k] = v0 + (v1 - v0) * (indexFloat - index); + } else { + array[k] = curve[length - 1]; + } + } + + return array; + } + + // Create a sine wave of the given frequency and amplitude. The sine wave is + // offset by half the amplitude so that result is always positive. + function createSineWaveArray(durationSeconds, freqHz, amplitude, sampleRate) { + let length = timeToSampleFrame(durationSeconds, sampleRate); + let signal = new Float32Array(length); + let omega = 2 * Math.PI * freqHz / sampleRate; + let halfAmplitude = amplitude / 2; + + for (let k = 0; k < length; ++k) { + signal[k] = halfAmplitude + halfAmplitude * Math.sin(omega * k); + } + + return signal; + } + + // Return the difference between the starting value and the ending value for + // time interval |timeIntervalIndex|. We alternate between an end value that + // is above or below the starting value. + function endValueDelta(timeIntervalIndex) { + if (timeIntervalIndex & 1) { + return -startEndValueChange; + } else { + return startEndValueChange; + } + } + + // Relative error metric + function relativeErrorMetric(actual, expected) { + return (actual - expected) / Math.abs(expected); + } + + // Difference metric + function differenceErrorMetric(actual, expected) { + return actual - expected; + } + + // Return the difference between the starting value at |timeIntervalIndex| and + // the starting value at the next time interval. Since we started at a large + // initial value, we decrease the value at each time interval. + function valueUpdate(timeIntervalIndex) { + return -startingValueDelta; + } + + // Compare a section of the rendered data against our expected signal. + function comparePartialSignals( + should, rendered, expectedFunction, startTime, endTime, valueInfo, + sampleRate, errorMetric) { + let startSample = timeToSampleFrame(startTime, sampleRate); + let expected = expectedFunction( + startTime, endTime, valueInfo.startValue, valueInfo.endValue, + sampleRate, timeConstant); + + let n = expected.length; + let maxError = -1; + let maxErrorIndex = -1; + + for (let k = 0; k < n; ++k) { + // Make sure we don't pass these tests because a NaN has been generated in + // either the + // rendered data or the reference data. + if (!isValidNumber(rendered[startSample + k])) { + maxError = Infinity; + maxErrorIndex = startSample + k; + should( + isValidNumber(rendered[startSample + k]), + 'NaN or infinity for rendered data at ' + maxErrorIndex) + .beTrue(); + break; + } + if (!isValidNumber(expected[k])) { + maxError = Infinity; + maxErrorIndex = startSample + k; + should( + isValidNumber(expected[k]), + 'NaN or infinity for rendered data at ' + maxErrorIndex) + .beTrue(); + break; + } + let error = Math.abs(errorMetric(rendered[startSample + k], expected[k])); + if (error > maxError) { + maxError = error; + maxErrorIndex = k; + } + } + + return {maxError: maxError, index: maxErrorIndex, expected: expected}; + } + + // Find the discontinuities in the data and compare the locations of the + // discontinuities with the times that define the time intervals. There is a + // discontinuity if the difference between successive samples exceeds the + // threshold. + function verifyDiscontinuities(should, values, times, threshold) { + let n = values.length; + let success = true; + let badLocations = 0; + let breaks = []; + + // Find discontinuities. + for (let k = 1; k < n; ++k) { + if (Math.abs(values[k] - values[k - 1]) > threshold) { + breaks.push(k); + } + } + + let testCount; + + // If there are numberOfTests intervals, there are only numberOfTests - 1 + // internal interval boundaries. Hence the maximum number of discontinuties + // we expect to find is numberOfTests - 1. If we find more than that, we + // have no reference to compare against. We also assume that the actual + // discontinuities are close to the expected ones. + // + // This is just a sanity check when something goes really wrong. For + // example, if the threshold is too low, every sample frame looks like a + // discontinuity. + if (breaks.length >= numberOfTests) { + testCount = numberOfTests - 1; + should(breaks.length, 'Number of discontinuities') + .beLessThan(numberOfTests); + success = false; + } else { + testCount = breaks.length; + } + + // Compare the location of each discontinuity with the end time of each + // interval. (There is no discontinuity at the start of the signal.) + for (let k = 0; k < testCount; ++k) { + let expectedSampleFrame = timeToSampleFrame(times[k + 1], sampleRate); + if (breaks[k] != expectedSampleFrame) { + success = false; + ++badLocations; + should(breaks[k], 'Discontinuity at index') + .beEqualTo(expectedSampleFrame); + } + } + + if (badLocations) { + should(badLocations, 'Number of discontinuites at incorrect locations') + .beEqualTo(0); + success = false; + } else { + should( + breaks.length + 1, + 'Number of tests started and ended at the correct time') + .beEqualTo(numberOfTests); + } + + return success; + } + + // Compare the rendered data with the expected data. + // + // testName - string describing the test + // + // maxError - maximum allowed difference between the rendered data and the + // expected data + // + // rendererdData - array containing the rendered (actual) data + // + // expectedFunction - function to compute the expected data + // + // timeValueInfo - array containing information about the start and end times + // and the start and end values of each interval. + // + // breakThreshold - threshold to use for determining discontinuities. + function compareSignals( + should, testName, maxError, renderedData, expectedFunction, timeValueInfo, + breakThreshold, errorMetric) { + let success = true; + let failedTestCount = 0; + let times = timeValueInfo.times; + let values = timeValueInfo.values; + let n = values.length; + let expectedSignal = []; + + success = + verifyDiscontinuities(should, renderedData, times, breakThreshold); + + for (let k = 0; k < n; ++k) { + let result = comparePartialSignals( + should, renderedData, expectedFunction, times[k], times[k + 1], + values[k], sampleRate, errorMetric); + + expectedSignal = + expectedSignal.concat(Array.prototype.slice.call(result.expected)); + + should( + result.maxError, + 'Max error for test ' + k + ' at offset ' + + (result.index + timeToSampleFrame(times[k], sampleRate))) + .beLessThanOrEqualTo(maxError); + } + + should( + failedTestCount, + 'Number of failed tests with an acceptable relative tolerance of ' + + maxError) + .beEqualTo(0); + } + + // Create a function to test the rendered data with the reference data. + // + // testName - string describing the test + // + // error - max allowed error between rendered data and the reference data. + // + // referenceFunction - function that generates the reference data to be + // compared with the rendered data. + // + // jumpThreshold - optional parameter that specifies the threshold to use for + // detecting discontinuities. If not specified, defaults to + // discontinuityThreshold. + // + function checkResultFunction( + task, should, testName, error, referenceFunction, jumpThreshold, + errorMetric) { + return function(event) { + let buffer = event.renderedBuffer; + renderedData = buffer.getChannelData(0); + + let threshold; + + if (!jumpThreshold) { + threshold = discontinuityThreshold; + } else { + threshold = jumpThreshold; + } + + compareSignals( + should, testName, error, renderedData, referenceFunction, + timeValueInfo, threshold, errorMetric); + task.done(); + } + } + + // Run all the automation tests. + // + // numberOfTests - number of tests (time intervals) to run. + // + // initialValue - The initial value of the first time interval. + // + // setValueFunction - function that sets the specified value at the start of a + // time interval. + // + // automationFunction - function that sets the end value for the time + // interval. It specifies how the value approaches the end value. + // + // An object is returned containing an array of start times for each time + // interval, and an array giving the start and end values for the interval. + function doAutomation( + numberOfTests, initialValue, setValueFunction, automationFunction) { + let timeInfo = [0]; + let valueInfo = []; + let value = initialValue; + + for (let k = 0; k < numberOfTests; ++k) { + let startTime = k * timeInterval; + let endTime = (k + 1) * timeInterval; + let endValue = value + endValueDelta(k); + + // Set the value at the start of the time interval. + setValueFunction(value, startTime); + + // Specify the end or target value, and how we should approach it. + automationFunction(endValue, startTime, endTime); + + // Keep track of the start times, and the start and end values for each + // time interval. + timeInfo.push(endTime); + valueInfo.push({startValue: value, endValue: endValue}); + + value += valueUpdate(k); + } + + return {times: timeInfo, values: valueInfo}; + } + + // Create the audio graph for the test and then run the test. + // + // numberOfTests - number of time intervals (tests) to run. + // + // initialValue - the initial value of the gain at time 0. + // + // setValueFunction - function to set the value at the beginning of each time + // interval. + // + // automationFunction - the AudioParamTimeline automation function + // + // testName - string indicating the test that is being run. + // + // maxError - maximum allowed error between the rendered data and the + // reference data + // + // referenceFunction - function that generates the reference data to be + // compared against the rendered data. + // + // jumpThreshold - optional parameter that specifies the threshold to use for + // detecting discontinuities. If not specified, defaults to + // discontinuityThreshold. + // + function createAudioGraphAndTest( + task, should, numberOfTests, initialValue, setValueFunction, + automationFunction, testName, maxError, referenceFunction, jumpThreshold, + errorMetric) { + // Create offline audio context. + context = + new OfflineAudioContext(2, renderLength(numberOfTests), sampleRate); + let constantBuffer = + createConstantBuffer(context, renderLength(numberOfTests), 1); + + // We use an AudioGainNode here simply as a convenient way to test the + // AudioParam automation, since it's easy to pass a constant value through + // the node, automate the .gain attribute and observe the resulting values. + + gainNode = context.createGain(); + + let bufferSource = context.createBufferSource(); + bufferSource.buffer = constantBuffer; + bufferSource.connect(gainNode); + gainNode.connect(context.destination); + + // Set up default values for the parameters that control how the automation + // test values progress for each time interval. + startingValueDelta = initialValue / numberOfTests; + startEndValueChange = startingValueDelta / 2; + discontinuityThreshold = startEndValueChange / 2; + + // Run the automation tests. + timeValueInfo = doAutomation( + numberOfTests, initialValue, setValueFunction, automationFunction); + bufferSource.start(0); + + context.oncomplete = checkResultFunction( + task, should, testName, maxError, referenceFunction, jumpThreshold, + errorMetric || relativeErrorMetric); + context.startRendering(); + } + + // Export local references to global scope. All the new objects in this file + // must be exported through this if it is to be used in the actual test HTML + // page. + let exports = { + 'sampleRate': 44100, + 'gainNode': null, + 'timeInterval': timeIntervalInternal, + + // Some suitable time constant so that we can see a significant change over + // a timeInterval. This is only needed by setTargetAtTime() which needs a + // time constant. + 'timeConstant': timeIntervalInternal / 3, + + 'renderLength': renderLength, + 'createConstantArray': createConstantArray, + 'getStartEndFrames': getStartEndFrames, + 'createLinearRampArray': createLinearRampArray, + 'createExponentialRampArray': createExponentialRampArray, + 'discreteTimeConstantForSampleRate': discreteTimeConstantForSampleRate, + 'createExponentialApproachArray': createExponentialApproachArray, + 'createReferenceSineArray': createReferenceSineArray, + 'createSineWaveArray': createSineWaveArray, + 'endValueDelta': endValueDelta, + 'relativeErrorMetric': relativeErrorMetric, + 'differenceErrorMetric': differenceErrorMetric, + 'valueUpdate': valueUpdate, + 'comparePartialSignals': comparePartialSignals, + 'verifyDiscontinuities': verifyDiscontinuities, + 'compareSignals': compareSignals, + 'checkResultFunction': checkResultFunction, + 'doAutomation': doAutomation, + 'createAudioGraphAndTest': createAudioGraphAndTest + }; + + for (let reference in exports) { + global[reference] = exports[reference]; + } + +})(window); diff --git a/tests/wpt/web-platform-tests/webaudio/chrome/resources/audit-util.js b/tests/wpt/web-platform-tests/webaudio/chrome/resources/audit-util.js new file mode 100644 index 00000000000..4213fda509b --- /dev/null +++ b/tests/wpt/web-platform-tests/webaudio/chrome/resources/audit-util.js @@ -0,0 +1,195 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + + +/** + * @fileOverview This file includes legacy utility functions for the layout + * test. + */ + +// How many frames in a WebAudio render quantum. +let RENDER_QUANTUM_FRAMES = 128; + +// Compare two arrays (commonly extracted from buffer.getChannelData()) with +// constraints: +// options.thresholdSNR: Minimum allowed SNR between the actual and expected +// signal. The default value is 10000. +// options.thresholdDiffULP: Maximum allowed difference between the actual +// and expected signal in ULP(Unit in the last place). The default is 0. +// options.thresholdDiffCount: Maximum allowed number of sample differences +// which exceeds the threshold. The default is 0. +// options.bitDepth: The expected result is assumed to come from an audio +// file with this number of bits of precision. The default is 16. +function compareBuffersWithConstraints(should, actual, expected, options) { + if (!options) + options = {}; + + // Only print out the message if the lengths are different; the + // expectation is that they are the same, so don't clutter up the + // output. + if (actual.length !== expected.length) { + should( + actual.length === expected.length, + 'Length of actual and expected buffers should match') + .beTrue(); + } + + let maxError = -1; + let diffCount = 0; + let errorPosition = -1; + let thresholdSNR = (options.thresholdSNR || 10000); + + let thresholdDiffULP = (options.thresholdDiffULP || 0); + let thresholdDiffCount = (options.thresholdDiffCount || 0); + + // By default, the bit depth is 16. + let bitDepth = (options.bitDepth || 16); + let scaleFactor = Math.pow(2, bitDepth - 1); + + let noisePower = 0, signalPower = 0; + + for (let i = 0; i < actual.length; i++) { + let diff = actual[i] - expected[i]; + noisePower += diff * diff; + signalPower += expected[i] * expected[i]; + + if (Math.abs(diff) > maxError) { + maxError = Math.abs(diff); + errorPosition = i; + } + + // The reference file is a 16-bit WAV file, so we will almost never get + // an exact match between it and the actual floating-point result. + if (Math.abs(diff) > scaleFactor) + diffCount++; + } + + let snr = 10 * Math.log10(signalPower / noisePower); + let maxErrorULP = maxError * scaleFactor; + + should(snr, 'SNR').beGreaterThanOrEqualTo(thresholdSNR); + + should( + maxErrorULP, + options.prefix + ': Maximum difference (in ulp units (' + bitDepth + + '-bits))') + .beLessThanOrEqualTo(thresholdDiffULP); + + should(diffCount, options.prefix + ': Number of differences between results') + .beLessThanOrEqualTo(thresholdDiffCount); +} + +// Create an impulse in a buffer of length sampleFrameLength +function createImpulseBuffer(context, sampleFrameLength) { + let audioBuffer = + context.createBuffer(1, sampleFrameLength, context.sampleRate); + let n = audioBuffer.length; + let dataL = audioBuffer.getChannelData(0); + + for (let k = 0; k < n; ++k) { + dataL[k] = 0; + } + dataL[0] = 1; + + return audioBuffer; +} + +// Create a buffer of the given length with a linear ramp having values 0 <= x < +// 1. +function createLinearRampBuffer(context, sampleFrameLength) { + let audioBuffer = + context.createBuffer(1, sampleFrameLength, context.sampleRate); + let n = audioBuffer.length; + let dataL = audioBuffer.getChannelData(0); + + for (let i = 0; i < n; ++i) + dataL[i] = i / n; + + return audioBuffer; +} + +// Create an AudioBuffer of length |sampleFrameLength| having a constant value +// |constantValue|. If |constantValue| is a number, the buffer has one channel +// filled with that value. If |constantValue| is an array, the buffer is created +// wit a number of channels equal to the length of the array, and channel k is +// filled with the k'th element of the |constantValue| array. +function createConstantBuffer(context, sampleFrameLength, constantValue) { + let channels; + let values; + + if (typeof constantValue === 'number') { + channels = 1; + values = [constantValue]; + } else { + channels = constantValue.length; + values = constantValue; + } + + let audioBuffer = + context.createBuffer(channels, sampleFrameLength, context.sampleRate); + let n = audioBuffer.length; + + for (let c = 0; c < channels; ++c) { + let data = audioBuffer.getChannelData(c); + for (let i = 0; i < n; ++i) + data[i] = values[c]; + } + + return audioBuffer; +} + +// Create a stereo impulse in a buffer of length sampleFrameLength +function createStereoImpulseBuffer(context, sampleFrameLength) { + let audioBuffer = + context.createBuffer(2, sampleFrameLength, context.sampleRate); + let n = audioBuffer.length; + let dataL = audioBuffer.getChannelData(0); + let dataR = audioBuffer.getChannelData(1); + + for (let k = 0; k < n; ++k) { + dataL[k] = 0; + dataR[k] = 0; + } + dataL[0] = 1; + dataR[0] = 1; + + return audioBuffer; +} + +// Convert time (in seconds) to sample frames. +function timeToSampleFrame(time, sampleRate) { + return Math.floor(0.5 + time * sampleRate); +} + +// Compute the number of sample frames consumed by noteGrainOn with +// the specified |grainOffset|, |duration|, and |sampleRate|. +function grainLengthInSampleFrames(grainOffset, duration, sampleRate) { + let startFrame = timeToSampleFrame(grainOffset, sampleRate); + let endFrame = timeToSampleFrame(grainOffset + duration, sampleRate); + + return endFrame - startFrame; +} + +// True if the number is not an infinity or NaN +function isValidNumber(x) { + return !isNaN(x) && (x != Infinity) && (x != -Infinity); +} + +// Compute the (linear) signal-to-noise ratio between |actual| and +// |expected|. The result is NOT in dB! If the |actual| and +// |expected| have different lengths, the shorter length is used. +function computeSNR(actual, expected) { + let signalPower = 0; + let noisePower = 0; + + let length = Math.min(actual.length, expected.length); + + for (let k = 0; k < length; ++k) { + let diff = actual[k] - expected[k]; + signalPower += expected[k] * expected[k]; + noisePower += diff * diff; + } + + return signalPower / noisePower; +} diff --git a/tests/wpt/web-platform-tests/webaudio/chrome/resources/audit.js b/tests/wpt/web-platform-tests/webaudio/chrome/resources/audit.js new file mode 100644 index 00000000000..fe0e0ce6025 --- /dev/null +++ b/tests/wpt/web-platform-tests/webaudio/chrome/resources/audit.js @@ -0,0 +1,1317 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + + +/** + * @fileOverview WebAudio layout test utility library. Built around W3C's + * testharness.js. Includes asynchronous test task manager, + * assertion utilities. + * @dependency testharness.js + */ + + +(function() { + + 'use strict'; + + // Selected methods from testharness.js. + let testharnessProperties = [ + 'test', 'async_test', 'promise_test', 'promise_rejects', 'generate_tests', + 'setup', 'done', 'assert_true', 'assert_false' + ]; + + // Check if testharness.js is properly loaded. Throw otherwise. + for (let name in testharnessProperties) { + if (!self.hasOwnProperty(testharnessProperties[name])) + throw new Error('Cannot proceed. testharness.js is not loaded.'); + } +})(); + + +window.Audit = (function() { + + 'use strict'; + + function _logPassed(message) { + test(function(arg) { + assert_true(true); + }, message); + } + + function _logFailed(message, detail) { + test(function() { + assert_true(false, detail); + }, message); + } + + function _throwException(message) { + throw new Error(message); + } + + // TODO(hongchan): remove this hack after confirming all the tests are + // finished correctly. (crbug.com/708817) + const _testharnessDone = window.done; + window.done = () => { + _throwException('Do NOT call done() method from the test code.'); + }; + + // Generate a descriptive string from a target value in various types. + function _generateDescription(target, options) { + let targetString; + + switch (typeof target) { + case 'object': + // Handle Arrays. + if (target instanceof Array || target instanceof Float32Array || + target instanceof Float64Array || target instanceof Uint8Array) { + let arrayElements = target.length < options.numberOfArrayElements ? + String(target) : + String(target.slice(0, options.numberOfArrayElements)) + '...'; + targetString = '[' + arrayElements + ']'; + } else { + targetString = '' + String(targetString).split(/[\s\]]/)[1]; + } + break; + default: + targetString = String(target); + break; + } + + return targetString; + } + + // Return a string suitable for printing one failed element in + // |beCloseToArray|. + function _formatFailureEntry(index, actual, expected, abserr, threshold) { + return '\t[' + index + ']\t' + actual.toExponential(16) + '\t' + + expected.toExponential(16) + '\t' + abserr.toExponential(16) + '\t' + + (abserr / Math.abs(expected)).toExponential(16) + '\t' + + threshold.toExponential(16); + } + + // Compute the error threshold criterion for |beCloseToArray| + function _closeToThreshold(abserr, relerr, expected) { + return Math.max(abserr, relerr * Math.abs(expected)); + } + + /** + * @class Should + * @description Assertion subtask for the Audit task. + * @param {Task} parentTask Associated Task object. + * @param {Any} actual Target value to be tested. + * @param {String} actualDescription String description of the test target. + */ + class Should { + constructor(parentTask, actual, actualDescription) { + this._task = parentTask; + + this._actual = actual; + this._actualDescription = (actualDescription || null); + this._expected = null; + this._expectedDescription = null; + + this._detail = ''; + this._printActualForFailure = true; + + this._result = null; + + /** + * @param {Number} numberOfErrors Number of errors to be printed. + * @param {Number} numberOfArrayElements Number of array elements to be + * printed in the test log. + * @param {Boolean} verbose Verbose output from the assertion. + */ + this._options = { + numberOfErrors: 4, + numberOfArrayElements: 16, + verbose: false + }; + } + + _processArguments(args) { + if (args.length === 0) + return; + + if (args.length > 0) + this._expected = args[0]; + + if (typeof args[1] === 'string') { + // case 1: (expected, description, options) + this._expectedDescription = args[1]; + Object.assign(this._options, args[2]); + } else if (typeof args[1] === 'object') { + // case 2: (expected, options) + Object.assign(this._options, args[1]); + } + } + + _buildResultText() { + if (this._result === null) + _throwException('Illegal invocation: the assertion is not finished.'); + + let actualString = _generateDescription(this._actual, this._options); + + // Use generated text when the description is not provided. + if (!this._actualDescription) + this._actualDescription = actualString; + + if (!this._expectedDescription) { + this._expectedDescription = + _generateDescription(this._expected, this._options); + } + + // For the assertion with a single operand. + this._detail = + this._detail.replace(/\$\{actual\}/g, this._actualDescription); + + // If there is a second operand (i.e. expected value), we have to build + // the string for it as well. + if (this._expected !== null) { + this._detail = + this._detail.replace(/\$\{expected\}/g, this._expectedDescription); + } + + // If there is any property in |_options|, replace the property name + // with the value. + for (let name in this._options) { + if (name === 'numberOfErrors' || name === 'numberOfArrayElements' || + name === 'verbose') { + continue; + } + + // The RegExp key string contains special character. Take care of it. + let re = '\$\{' + name + '\}'; + re = re.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1'); + this._detail = this._detail.replace( + new RegExp(re, 'g'), _generateDescription(this._options[name])); + } + + // If the test failed, add the actual value at the end. + if (this._result === false && this._printActualForFailure === true) { + this._detail += ' Got ' + actualString + '.'; + } + } + + _finalize() { + if (this._result) { + _logPassed(' ' + this._detail); + } else { + _logFailed('X ' + this._detail); + } + + // This assertion is finished, so update the parent task accordingly. + this._task.update(this); + + // TODO(hongchan): configurable 'detail' message. + } + + _assert(condition, passDetail, failDetail) { + this._result = Boolean(condition); + this._detail = this._result ? passDetail : failDetail; + this._buildResultText(); + this._finalize(); + + return this._result; + } + + get result() { + return this._result; + } + + get detail() { + return this._detail; + } + + /** + * should() assertions. + * + * @example All the assertions can have 1, 2 or 3 arguments: + * should().doAssert(expected); + * should().doAssert(expected, options); + * should().doAssert(expected, expectedDescription, options); + * + * @param {Any} expected Expected value of the assertion. + * @param {String} expectedDescription Description of expected value. + * @param {Object} options Options for assertion. + * @param {Number} options.numberOfErrors Number of errors to be printed. + * (if applicable) + * @param {Number} options.numberOfArrayElements Number of array elements + * to be printed. (if + * applicable) + * @notes Some assertions can have additional options for their specific + * testing. + */ + + /** + * Check if |actual| exists. + * + * @example + * should({}, 'An empty object').exist(); + * @result + * "PASS An empty object does exist." + */ + exist() { + return this._assert( + this._actual !== null && this._actual !== undefined, + '${actual} does exist.', '${actual} does not exist.'); + } + + /** + * Check if |actual| operation wrapped in a function throws an exception + * with a expected error type correctly. |expected| is optional. + * + * @example + * should(() => { let a = b; }, 'A bad code').throw(); + * should(() => { let c = d; }, 'Assigning d to c.') + * .throw('ReferenceError'); + * should(() => { let e = f; }, 'Assigning e to f.') + * .throw('ReferenceError', { omitErrorMessage: true }); + * + * @result + * "PASS A bad code threw an exception of ReferenceError: b is not + * defined." + * "PASS Assigning d to c threw ReferenceError: d is not defined." + * "PASS Assigning e to f threw ReferenceError: [error message + * omitted]." + */ + throw() { + this._processArguments(arguments); + this._printActualForFailure = false; + + let didThrowCorrectly = false; + let passDetail, failDetail; + + try { + // This should throw. + this._actual(); + // Catch did not happen, so the test is failed. + failDetail = '${actual} did not throw an exception.'; + } catch (error) { + let errorMessage = this._options.omitErrorMessage ? + ': [error message omitted]' : + ': "' + error.message + '"'; + if (this._expected === null || this._expected === undefined) { + // The expected error type was not given. + didThrowCorrectly = true; + passDetail = '${actual} threw ' + error.name + errorMessage + '.'; + } else if (error.name === this._expected) { + // The expected error type match the actual one. + didThrowCorrectly = true; + passDetail = '${actual} threw ${expected}' + errorMessage + '.'; + } else { + didThrowCorrectly = false; + failDetail = + '${actual} threw "' + error.name + '" instead of ${expected}.'; + } + } + + return this._assert(didThrowCorrectly, passDetail, failDetail); + } + + /** + * Check if |actual| operation wrapped in a function does not throws an + * exception correctly. + * + * @example + * should(() => { let foo = 'bar'; }, 'let foo = "bar"').notThrow(); + * + * @result + * "PASS let foo = "bar" did not throw an exception." + */ + notThrow() { + this._printActualForFailure = false; + + let didThrowCorrectly = false; + let passDetail, failDetail; + + try { + this._actual(); + passDetail = '${actual} did not throw an exception.'; + } catch (error) { + didThrowCorrectly = true; + failDetail = '${actual} incorrectly threw ' + error.name + ': "' + + error.message + '".'; + } + + return this._assert(!didThrowCorrectly, passDetail, failDetail); + } + + /** + * Check if |actual| promise is resolved correctly. Note that the returned + * result from promise object will be passed to the following then() + * function. + * + * @example + * should('My promise', promise).beResolve().then((result) => { + * // log(result); + * }); + * + * @result + * "PASS My promise resolved correctly." + * "FAIL X My promise rejected *INCORRECTLY* with _ERROR_." + */ + beResolved() { + return this._actual.then( + function(result) { + this._assert(true, '${actual} resolved correctly.', null); + return result; + }.bind(this), + function(error) { + this._assert( + false, null, + '${actual} rejected incorrectly with ' + error + '.'); + }.bind(this)); + } + + /** + * Check if |actual| promise is rejected correctly. + * + * @example + * should('My promise', promise).beRejected().then(nextStuff); + * + * @result + * "PASS My promise rejected correctly (with _ERROR_)." + * "FAIL X My promise resolved *INCORRECTLY*." + */ + beRejected() { + return this._actual.then( + function() { + this._assert(false, null, '${actual} resolved incorrectly.'); + }.bind(this), + function(error) { + this._assert( + true, '${actual} rejected correctly with ' + error + '.', null); + }.bind(this)); + } + + /** + * Check if |actual| promise is rejected correctly. + * + * @example + * should(promise, 'My promise').beRejectedWith('_ERROR_').then(); + * + * @result + * "PASS My promise rejected correctly with _ERROR_." + * "FAIL X My promise rejected correctly but got _ACTUAL_ERROR instead of + * _EXPECTED_ERROR_." + * "FAIL X My promise resolved incorrectly." + */ + beRejectedWith() { + this._processArguments(arguments); + + return this._actual.then( + function() { + this._assert(false, null, '${actual} resolved incorrectly.'); + }.bind(this), + function(error) { + if (this._expected !== error.name) { + this._assert( + false, null, + '${actual} rejected correctly but got ' + error.name + + ' instead of ' + this._expected + '.'); + } else { + this._assert( + true, + '${actual} rejected correctly with ' + this._expected + '.', + null); + } + }.bind(this)); + } + + /** + * Check if |actual| is a boolean true. + * + * @example + * should(3 < 5, '3 < 5').beTrue(); + * + * @result + * "PASS 3 < 5 is true." + */ + beTrue() { + return this._assert( + this._actual === true, '${actual} is true.', + '${actual} is not true.'); + } + + /** + * Check if |actual| is a boolean false. + * + * @example + * should(3 > 5, '3 > 5').beFalse(); + * + * @result + * "PASS 3 > 5 is false." + */ + beFalse() { + return this._assert( + this._actual === false, '${actual} is false.', + '${actual} is not false.'); + } + + /** + * Check if |actual| is strictly equal to |expected|. (no type coercion) + * + * @example + * should(1).beEqualTo(1); + * + * @result + * "PASS 1 is equal to 1." + */ + beEqualTo() { + this._processArguments(arguments); + return this._assert( + this._actual === this._expected, '${actual} is equal to ${expected}.', + '${actual} is not equal to ${expected}.'); + } + + /** + * Check if |actual| is not equal to |expected|. + * + * @example + * should(1).notBeEqualTo(2); + * + * @result + * "PASS 1 is not equal to 2." + */ + notBeEqualTo() { + this._processArguments(arguments); + return this._assert( + this._actual !== this._expected, + '${actual} is not equal to ${expected}.', + '${actual} should not be equal to ${expected}.'); + } + + /** + * check if |actual| is NaN + * + * @example + * should(NaN).beNaN(); + * + * @result + * "PASS NaN is NaN" + * + */ + beNaN() { + this._processArguments(arguments); + return this._assert( + isNaN(this._actual), + '${actual} is NaN.', + '${actual} is not NaN but should be.'); + } + + /** + * check if |actual| is NOT NaN + * + * @example + * should(42).notBeNaN(); + * + * @result + * "PASS 42 is not NaN" + * + */ + notBeNaN() { + this._processArguments(arguments); + return this._assert( + !isNaN(this._actual), + '${actual} is not NaN.', + '${actual} is NaN but should not be.'); + } + + /** + * Check if |actual| is greater than |expected|. + * + * @example + * should(2).beGreaterThanOrEqualTo(2); + * + * @result + * "PASS 2 is greater than or equal to 2." + */ + beGreaterThan() { + this._processArguments(arguments); + return this._assert( + this._actual > this._expected, + '${actual} is greater than ${expected}.', + '${actual} is not greater than ${expected}.'); + } + + /** + * Check if |actual| is greater than or equal to |expected|. + * + * @example + * should(2).beGreaterThan(1); + * + * @result + * "PASS 2 is greater than 1." + */ + beGreaterThanOrEqualTo() { + this._processArguments(arguments); + return this._assert( + this._actual >= this._expected, + '${actual} is greater than or equal to ${expected}.', + '${actual} is not greater than or equal to ${expected}.'); + } + + /** + * Check if |actual| is less than |expected|. + * + * @example + * should(1).beLessThan(2); + * + * @result + * "PASS 1 is less than 2." + */ + beLessThan() { + this._processArguments(arguments); + return this._assert( + this._actual < this._expected, '${actual} is less than ${expected}.', + '${actual} is not less than ${expected}.'); + } + + /** + * Check if |actual| is less than or equal to |expected|. + * + * @example + * should(1).beLessThanOrEqualTo(1); + * + * @result + * "PASS 1 is less than or equal to 1." + */ + beLessThanOrEqualTo() { + this._processArguments(arguments); + return this._assert( + this._actual <= this._expected, + '${actual} is less than or equal to ${expected}.', + '${actual} is not less than or equal to ${expected}.'); + } + + /** + * Check if |actual| array is filled with a constant |expected| value. + * + * @example + * should([1, 1, 1]).beConstantValueOf(1); + * + * @result + * "PASS [1,1,1] contains only the constant 1." + */ + beConstantValueOf() { + this._processArguments(arguments); + this._printActualForFailure = false; + + let passed = true; + let passDetail, failDetail; + let errors = {}; + + let actual = this._actual; + let expected = this._expected; + for (let index = 0; index < actual.length; ++index) { + if (actual[index] !== expected) + errors[index] = actual[index]; + } + + let numberOfErrors = Object.keys(errors).length; + passed = numberOfErrors === 0; + + if (passed) { + passDetail = '${actual} contains only the constant ${expected}.'; + } else { + let counter = 0; + failDetail = 'Expected ${expected} for all values but found ' + + numberOfErrors + ' unexpected values: '; + failDetail += '\n\tIndex\tActual'; + for (let errorIndex in errors) { + failDetail += '\n\t[' + errorIndex + ']' + + '\t' + errors[errorIndex]; + if (++counter >= this._options.numberOfErrors) { + failDetail += + '\n\t...and ' + (numberOfErrors - counter) + ' more errors.'; + break; + } + } + } + + return this._assert(passed, passDetail, failDetail); + } + + /** + * Check if |actual| array is not filled with a constant |expected| value. + * + * @example + * should([1, 0, 1]).notBeConstantValueOf(1); + * should([0, 0, 0]).notBeConstantValueOf(0); + * + * @result + * "PASS [1,0,1] is not constantly 1 (contains 1 different value)." + * "FAIL X [0,0,0] should have contain at least one value different + * from 0." + */ + notBeConstantValueOf() { + this._processArguments(arguments); + this._printActualForFailure = false; + + let passed = true; + let passDetail; + let failDetail; + let differences = {}; + + let actual = this._actual; + let expected = this._expected; + for (let index = 0; index < actual.length; ++index) { + if (actual[index] !== expected) + differences[index] = actual[index]; + } + + let numberOfDifferences = Object.keys(differences).length; + passed = numberOfDifferences > 0; + + if (passed) { + let valueString = numberOfDifferences > 1 ? 'values' : 'value'; + passDetail = '${actual} is not constantly ${expected} (contains ' + + numberOfDifferences + ' different ' + valueString + ').'; + } else { + failDetail = '${actual} should have contain at least one value ' + + 'different from ${expected}.'; + } + + return this._assert(passed, passDetail, failDetail); + } + + /** + * Check if |actual| array is identical to |expected| array element-wise. + * + * @example + * should([1, 2, 3]).beEqualToArray([1, 2, 3]); + * + * @result + * "[1,2,3] is identical to the array [1,2,3]." + */ + beEqualToArray() { + this._processArguments(arguments); + this._printActualForFailure = false; + + let passed = true; + let passDetail, failDetail; + let errorIndices = []; + + if (this._actual.length !== this._expected.length) { + passed = false; + failDetail = 'The array length does not match.'; + return this._assert(passed, passDetail, failDetail); + } + + let actual = this._actual; + let expected = this._expected; + for (let index = 0; index < actual.length; ++index) { + if (actual[index] !== expected[index]) + errorIndices.push(index); + } + + passed = errorIndices.length === 0; + + if (passed) { + passDetail = '${actual} is identical to the array ${expected}.'; + } else { + let counter = 0; + failDetail = + '${actual} expected to be equal to the array ${expected} ' + + 'but differs in ' + errorIndices.length + ' places:' + + '\n\tIndex\tActual\t\t\tExpected'; + for (let index of errorIndices) { + failDetail += '\n\t[' + index + ']' + + '\t' + this._actual[index].toExponential(16) + '\t' + + this._expected[index].toExponential(16); + if (++counter >= this._options.numberOfErrors) { + failDetail += '\n\t...and ' + (errorIndices.length - counter) + + ' more errors.'; + break; + } + } + } + + return this._assert(passed, passDetail, failDetail); + } + + /** + * Check if |actual| array contains only the values in |expected| in the + * order of values in |expected|. + * + * @example + * Should([1, 1, 3, 3, 2], 'My random array').containValues([1, 3, 2]); + * + * @result + * "PASS [1,1,3,3,2] contains all the expected values in the correct + * order: [1,3,2]. + */ + containValues() { + this._processArguments(arguments); + this._printActualForFailure = false; + + let passed = true; + let indexedActual = []; + let firstErrorIndex = null; + + // Collect the unique value sequence from the actual. + for (let i = 0, prev = null; i < this._actual.length; i++) { + if (this._actual[i] !== prev) { + indexedActual.push({index: i, value: this._actual[i]}); + prev = this._actual[i]; + } + } + + // Compare against the expected sequence. + for (let j = 0; j < this._expected.length; j++) { + if (this._expected[j] !== indexedActual[j].value) { + firstErrorIndex = indexedActual[j].index; + passed = false; + break; + } + } + + return this._assert( + passed, + '${actual} contains all the expected values in the correct order: ' + + '${expected}.', + '${actual} expected to have the value sequence of ${expected} but ' + + 'got ' + this._actual[firstErrorIndex] + ' at index ' + + firstErrorIndex + '.'); + } + + /** + * Check if |actual| array does not have any glitches. Note that |threshold| + * is not optional and is to define the desired threshold value. + * + * @example + * should([0.5, 0.5, 0.55, 0.5, 0.45, 0.5]).notGlitch(0.06); + * + * @result + * "PASS [0.5,0.5,0.55,0.5,0.45,0.5] has no glitch above the threshold + * of 0.06." + * + */ + notGlitch() { + this._processArguments(arguments); + this._printActualForFailure = false; + + let passed = true; + let passDetail, failDetail; + + let actual = this._actual; + let expected = this._expected; + for (let index = 0; index < actual.length; ++index) { + let diff = Math.abs(actual[index - 1] - actual[index]); + if (diff >= expected) { + passed = false; + failDetail = '${actual} has a glitch at index ' + index + + ' of size ' + diff + '.'; + } + } + + passDetail = + '${actual} has no glitch above the threshold of ${expected}.'; + + return this._assert(passed, passDetail, failDetail); + } + + /** + * Check if |actual| is close to |expected| using the given relative error + * |threshold|. + * + * @example + * should(2.3).beCloseTo(2, { threshold: 0.3 }); + * + * @result + * "PASS 2.3 is 2 within an error of 0.3." + * @param {Object} options Options for assertion. + * @param {Number} options.threshold Threshold value for the comparison. + */ + beCloseTo() { + this._processArguments(arguments); + + // The threshold is relative except when |expected| is zero, in which case + // it is absolute. + let absExpected = this._expected ? Math.abs(this._expected) : 1; + let error = Math.abs(this._actual - this._expected) / absExpected; + + // debugger; + + return this._assert( + error <= this._options.threshold, + '${actual} is ${expected} within an error of ${threshold}.', + '${actual} is not close to ${expected} within a relative error of ' + + '${threshold} (RelErr=' + error + ').'); + } + + /** + * Check if |target| array is close to |expected| array element-wise within + * a certain error bound given by the |options|. + * + * The error criterion is: + * abs(actual[k] - expected[k]) < max(absErr, relErr * abs(expected)) + * + * If nothing is given for |options|, then absErr = relErr = 0. If + * absErr = 0, then the error criterion is a relative error. A non-zero + * absErr value produces a mix intended to handle the case where the + * expected value is 0, allowing the target value to differ by absErr from + * the expected. + * + * @param {Number} options.absoluteThreshold Absolute threshold. + * @param {Number} options.relativeThreshold Relative threshold. + */ + beCloseToArray() { + this._processArguments(arguments); + this._printActualForFailure = false; + + let passed = true; + let passDetail, failDetail; + + // Parsing options. + let absErrorThreshold = (this._options.absoluteThreshold || 0); + let relErrorThreshold = (this._options.relativeThreshold || 0); + + // A collection of all of the values that satisfy the error criterion. + // This holds the absolute difference between the target element and the + // expected element. + let errors = {}; + + // Keep track of the max absolute error found. + let maxAbsError = -Infinity, maxAbsErrorIndex = -1; + + // Keep track of the max relative error found, ignoring cases where the + // relative error is Infinity because the expected value is 0. + let maxRelError = -Infinity, maxRelErrorIndex = -1; + + let actual = this._actual; + let expected = this._expected; + + for (let index = 0; index < expected.length; ++index) { + let diff = Math.abs(actual[index] - expected[index]); + let absExpected = Math.abs(expected[index]); + let relError = diff / absExpected; + + if (diff > + Math.max(absErrorThreshold, relErrorThreshold * absExpected)) { + if (diff > maxAbsError) { + maxAbsErrorIndex = index; + maxAbsError = diff; + } + + if (!isNaN(relError) && relError > maxRelError) { + maxRelErrorIndex = index; + maxRelError = relError; + } + + errors[index] = diff; + } + } + + let numberOfErrors = Object.keys(errors).length; + let maxAllowedErrorDetail = JSON.stringify({ + absoluteThreshold: absErrorThreshold, + relativeThreshold: relErrorThreshold + }); + + if (numberOfErrors === 0) { + // The assertion was successful. + passDetail = '${actual} equals ${expected} with an element-wise ' + + 'tolerance of ' + maxAllowedErrorDetail + '.'; + } else { + // Failed. Prepare the detailed failure log. + passed = false; + failDetail = '${actual} does not equal ${expected} with an ' + + 'element-wise tolerance of ' + maxAllowedErrorDetail + '.\n'; + + // Print out actual, expected, absolute error, and relative error. + let counter = 0; + failDetail += '\tIndex\tActual\t\t\tExpected\t\tAbsError' + + '\t\tRelError\t\tTest threshold'; + let printedIndices = []; + for (let index in errors) { + failDetail += + '\n' + + _formatFailureEntry( + index, actual[index], expected[index], errors[index], + _closeToThreshold( + absErrorThreshold, relErrorThreshold, expected[index])); + + printedIndices.push(index); + if (++counter > this._options.numberOfErrors) { + failDetail += + '\n\t...and ' + (numberOfErrors - counter) + ' more errors.'; + break; + } + } + + // Finalize the error log: print out the location of both the maxAbs + // error and the maxRel error so we can adjust thresholds appropriately + // in the test. + failDetail += '\n' + + '\tMax AbsError of ' + maxAbsError.toExponential(16) + + ' at index of ' + maxAbsErrorIndex + '.\n'; + if (printedIndices.find(element => { + return element == maxAbsErrorIndex; + }) === undefined) { + // Print an entry for this index if we haven't already. + failDetail += + _formatFailureEntry( + maxAbsErrorIndex, actual[maxAbsErrorIndex], + expected[maxAbsErrorIndex], errors[maxAbsErrorIndex], + _closeToThreshold( + absErrorThreshold, relErrorThreshold, + expected[maxAbsErrorIndex])) + + '\n'; + } + failDetail += '\tMax RelError of ' + maxRelError.toExponential(16) + + ' at index of ' + maxRelErrorIndex + '.\n'; + if (printedIndices.find(element => { + return element == maxRelErrorIndex; + }) === undefined) { + // Print an entry for this index if we haven't already. + failDetail += + _formatFailureEntry( + maxRelErrorIndex, actual[maxRelErrorIndex], + expected[maxRelErrorIndex], errors[maxRelErrorIndex], + _closeToThreshold( + absErrorThreshold, relErrorThreshold, + expected[maxRelErrorIndex])) + + '\n'; + } + } + + return this._assert(passed, passDetail, failDetail); + } + + /** + * A temporary escape hat for printing an in-task message. The description + * for the |actual| is required to get the message printed properly. + * + * TODO(hongchan): remove this method when the transition from the old Audit + * to the new Audit is completed. + * @example + * should(true, 'The message is').message('truthful!', 'false!'); + * + * @result + * "PASS The message is truthful!" + */ + message(passDetail, failDetail) { + return this._assert( + this._actual, '${actual} ' + passDetail, '${actual} ' + failDetail); + } + + /** + * Check if |expected| property is truly owned by |actual| object. + * + * @example + * should(BaseAudioContext.prototype, + * 'BaseAudioContext.prototype').haveOwnProperty('createGain'); + * + * @result + * "PASS BaseAudioContext.prototype has an own property of + * 'createGain'." + */ + haveOwnProperty() { + this._processArguments(arguments); + + return this._assert( + this._actual.hasOwnProperty(this._expected), + '${actual} has an own property of "${expected}".', + '${actual} does not own the property of "${expected}".'); + } + + + /** + * Check if |expected| property is not owned by |actual| object. + * + * @example + * should(BaseAudioContext.prototype, + * 'BaseAudioContext.prototype') + * .notHaveOwnProperty('startRendering'); + * + * @result + * "PASS BaseAudioContext.prototype does not have an own property of + * 'startRendering'." + */ + notHaveOwnProperty() { + this._processArguments(arguments); + + return this._assert( + !this._actual.hasOwnProperty(this._expected), + '${actual} does not have an own property of "${expected}".', + '${actual} has an own the property of "${expected}".') + } + + + /** + * Check if an object is inherited from a class. This looks up the entire + * prototype chain of a given object and tries to find a match. + * + * @example + * should(sourceNode, 'A buffer source node') + * .inheritFrom('AudioScheduledSourceNode'); + * + * @result + * "PASS A buffer source node inherits from 'AudioScheduledSourceNode'." + */ + inheritFrom() { + this._processArguments(arguments); + + let prototypes = []; + let currentPrototype = Object.getPrototypeOf(this._actual); + while (currentPrototype) { + prototypes.push(currentPrototype.constructor.name); + currentPrototype = Object.getPrototypeOf(currentPrototype); + } + + return this._assert( + prototypes.includes(this._expected), + '${actual} inherits from "${expected}".', + '${actual} does not inherit from "${expected}".'); + } + } + + + // Task Class state enum. + const TaskState = {PENDING: 0, STARTED: 1, FINISHED: 2}; + + + /** + * @class Task + * @description WebAudio testing task. Managed by TaskRunner. + */ + class Task { + /** + * Task constructor. + * @param {Object} taskRunner Reference of associated task runner. + * @param {String||Object} taskLabel Task label if a string is given. This + * parameter can be a dictionary with the + * following fields. + * @param {String} taskLabel.label Task label. + * @param {String} taskLabel.description Description of task. + * @param {Function} taskFunction Task function to be performed. + * @return {Object} Task object. + */ + constructor(taskRunner, taskLabel, taskFunction) { + this._taskRunner = taskRunner; + this._taskFunction = taskFunction; + + if (typeof taskLabel === 'string') { + this._label = taskLabel; + this._description = null; + } else if (typeof taskLabel === 'object') { + if (typeof taskLabel.label !== 'string') { + _throwException('Task.constructor:: task label must be string.'); + } + this._label = taskLabel.label; + this._description = (typeof taskLabel.description === 'string') ? + taskLabel.description : + null; + } else { + _throwException( + 'Task.constructor:: task label must be a string or ' + + 'a dictionary.'); + } + + this._state = TaskState.PENDING; + this._result = true; + + this._totalAssertions = 0; + this._failedAssertions = 0; + } + + get label() { + return this._label; + } + + get state() { + return this._state; + } + + get result() { + return this._result; + } + + // Start the assertion chain. + should(actual, actualDescription) { + // If no argument is given, we cannot proceed. Halt. + if (arguments.length === 0) + _throwException('Task.should:: requires at least 1 argument.'); + + return new Should(this, actual, actualDescription); + } + + // Run this task. |this| task will be passed into the user-supplied test + // task function. + run() { + this._state = TaskState.STARTED; + + // Print out the task entry with label and description. + _logPassed( + '> [' + this._label + '] ' + + (this._description ? this._description : '')); + + this._taskFunction(this, this.should.bind(this)); + } + + // Update the task success based on the individual assertion/test inside. + update(subTask) { + // After one of tests fails within a task, the result is irreversible. + if (subTask.result === false) { + this._result = false; + this._failedAssertions++; + } + + this._totalAssertions++; + } + + // Finish the current task and start the next one if available. + done() { + this._state = TaskState.FINISHED; + + let message = '< [' + this._label + '] '; + + if (this._result) { + message += 'All assertions passed. (total ' + this._totalAssertions + + ' assertions)'; + _logPassed(message); + } else { + message += this._failedAssertions + ' out of ' + this._totalAssertions + + ' assertions were failed.' + _logFailed(message); + } + + this._taskRunner._runNextTask(); + } + + isPassed() { + return this._state === TaskState.FINISHED && this._result; + } + + toString() { + return '"' + this._label + '": ' + this._description; + } + } + + + /** + * @class TaskRunner + * @description WebAudio testing task runner. Manages tasks. + */ + class TaskRunner { + constructor() { + this._tasks = {}; + this._taskSequence = []; + this._currentTaskIndex = -1; + + // Configure testharness.js for the async operation. + setup(new Function(), {explicit_done: true}); + } + + _runNextTask() { + if (this._currentTaskIndex < this._taskSequence.length) { + this._tasks[this._taskSequence[this._currentTaskIndex++]].run(); + } else { + this._finish(); + } + } + + _finish() { + let numberOfFailures = 0; + for (let taskIndex in this._taskSequence) { + let task = this._tasks[this._taskSequence[taskIndex]]; + numberOfFailures += task.result ? 0 : 1; + } + + let prefix = '# AUDIT TASK RUNNER FINISHED: '; + if (numberOfFailures > 0) { + _logFailed( + prefix + numberOfFailures + ' out of ' + this._taskSequence.length + + ' tasks were failed.'); + } else { + _logPassed( + prefix + this._taskSequence.length + ' tasks ran successfully.'); + } + + // From testharness.js, report back to the test infrastructure that + // the task runner completed all the tasks. + _testharnessDone(); + } + + // |taskLabel| can be either a string or a dictionary. See Task constructor + // for the detail. + define(taskLabel, taskFunction) { + let task = new Task(this, taskLabel, taskFunction); + if (this._tasks.hasOwnProperty(task.label)) { + _throwException('Audit.define:: Duplicate task definition.'); + return; + } + this._tasks[task.label] = task; + this._taskSequence.push(task.label); + } + + // Start running all the tasks scheduled. Multiple task names can be passed + // to execute them sequentially. Zero argument will perform all defined + // tasks in the order of definition. + run() { + // Display the beginning of the test suite. + _logPassed('# AUDIT TASK RUNNER STARTED.'); + + // If the argument is specified, override the default task sequence with + // the specified one. + if (arguments.length > 0) { + this._taskSequence = []; + for (let i = 0; i < arguments.length; i++) { + let taskLabel = arguments[i]; + if (!this._tasks.hasOwnProperty(taskLabel)) { + _throwException('Audit.run:: undefined task.'); + } else if (this._taskSequence.includes(taskLabel)) { + _throwException('Audit.run:: duplicate task request.'); + } else { + this._taskSequence.push(taskLabel); + } + } + } + + if (this._taskSequence.length === 0) { + _throwException('Audit.run:: no task to run.'); + return; + } + + // Start the first task. + this._currentTaskIndex = 0; + this._runNextTask(); + } + } + + /** + * @class Audit + * @description A WebAudio layout test task manager. + * @example + * let audit = Audit.createTaskRunner(); + * audit.define('first-task', function (task, should) { + * should(someValue).beEqualTo(someValue); + * task.done(); + * }); + * audit.run(); + */ + return { + + /** + * Creates an instance of Audit task runner. + * @param {Object} options Options for task runner. + * @param {Boolean} options.requireResultFile True if the test suite + * requires explicit text + * comparison with the expected + * result file. + */ + createTaskRunner: function(options) { + if (options && options.requireResultFile == true) { + _logError( + 'this test requires the explicit comparison with the ' + + 'expected result when it runs with run-webkit-tests.'); + } + + return new TaskRunner(); + }, + + }; + +})(); diff --git a/tests/wpt/web-platform-tests/webaudio/chrome/resources/start-stop-exceptions.js b/tests/wpt/web-platform-tests/webaudio/chrome/resources/start-stop-exceptions.js new file mode 100644 index 00000000000..99a93f502d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/webaudio/chrome/resources/start-stop-exceptions.js @@ -0,0 +1,45 @@ +// Test that exceptions are throw for invalid values for start and +// stop. +function testStartStop(should, node, options) { + // Test non-finite values for start. These should all throw a TypeError + const nonFiniteValues = [NaN, Infinity, -Infinity]; + + nonFiniteValues.forEach(time => { + should(() => { + node.start(time); + }, `start(${time})`) + .throw('TypeError'); + }); + + should(() => { + node.stop(); + }, 'Calling stop() before start()').throw('InvalidStateError'); + + should(() => { + node.start(-1); + }, 'start(-1)').throw('RangeError'); + + if (options) { + options.forEach(test => { + should(() => {node.start(...test.args)}, + 'start(' + test.args + ')').throw(test.errorType); + }); + } + + node.start(); + should(() => { + node.start(); + }, 'Calling start() twice').throw('InvalidStateError'); + should(() => { + node.stop(-1); + }, 'stop(-1)').throw('RangeError'); + + // Test non-finite stop times + nonFiniteValues.forEach(time => { + should(() => { + node.stop(time); + }, `stop(${time})`) + .throw('TypeError'); + }); +} + diff --git a/tests/wpt/web-platform-tests/webaudio/chrome/the-constantsourcenode-interface/constant-source-basic.html b/tests/wpt/web-platform-tests/webaudio/chrome/the-constantsourcenode-interface/constant-source-basic.html new file mode 100644 index 00000000000..caab966422b --- /dev/null +++ b/tests/wpt/web-platform-tests/webaudio/chrome/the-constantsourcenode-interface/constant-source-basic.html @@ -0,0 +1,85 @@ +<!DOCTYPE html> +<html> + <head> + <title> + Basic ConstantSourceNode Tests + </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="../resources/audit-util.js"></script> + <script src="../resources/audit.js"></script> + <script src="../resources/start-stop-exceptions.js"></script> + </head> + <body> + <script id="layout-test-code"> + let context = new AudioContext(); + + let audit = Audit.createTaskRunner(); + + audit.define('createConstantSource()', (task, should) => { + let node; + let prefix = 'Factory method: '; + + should(() => { + node = context.createConstantSource(); + }, prefix + 'node = context.createConstantSource()').notThrow(); + should( + node instanceof ConstantSourceNode, + prefix + 'node instance of ConstantSourceNode') + .beEqualTo(true); + + verifyNodeDefaults(should, node, prefix); + + task.done(); + }); + + audit.define('new ConstantSourceNode()', (task, should) => { + let node; + let prefix = 'Constructor: '; + + should(() => { + node = new ConstantSourceNode(context); + }, prefix + 'node = new ConstantSourceNode()').notThrow(); + should( + node instanceof ConstantSourceNode, + prefix + 'node instance of ConstantSourceNode') + .beEqualTo(true); + + + verifyNodeDefaults(should, node, prefix); + + task.done(); + }); + + audit.define('start/stop exceptions', (task, should) => { + let node = new ConstantSourceNode(context); + + testStartStop(should, node); + task.done(); + }); + + function verifyNodeDefaults(should, node, prefix) { + should(node.numberOfInputs, prefix + 'node.numberOfInputs') + .beEqualTo(0); + should(node.numberOfOutputs, prefix + 'node.numberOfOutputs') + .beEqualTo(1); + should(node.channelCount, prefix + 'node.channelCount').beEqualTo(2); + should(node.channelCountMode, prefix + 'node.channelCountMode') + .beEqualTo('max'); + should( + node.channelInterpretation, prefix + 'node.channelInterpretation') + .beEqualTo('speakers'); + + should(node.offset.value, prefix + 'node.offset.value').beEqualTo(1); + should(node.offset.defaultValue, prefix + 'node.offset.defaultValue') + .beEqualTo(1); + should(node.offset.minValue, prefix + 'node.offset.minValue') + .beEqualTo(Math.fround(-3.4028235e38)); + should(node.offset.maxValue, prefix + 'node.offset.maxValue') + .beEqualTo(Math.fround(3.4028235e38)); + } + + audit.run(); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/webaudio/chrome/the-constantsourcenode-interface/constant-source-onended.html b/tests/wpt/web-platform-tests/webaudio/chrome/the-constantsourcenode-interface/constant-source-onended.html new file mode 100644 index 00000000000..64bc54f21b3 --- /dev/null +++ b/tests/wpt/web-platform-tests/webaudio/chrome/the-constantsourcenode-interface/constant-source-onended.html @@ -0,0 +1,38 @@ +<!DOCTYPE html> +<html> + <head> + <title> + Test ConstantSourceNode onended + </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <script id="layout-test-code"> + let sampleRate = 44100.0; + // Number of frames that the source will run; fairly arbitrary + let numberOfFrames = 32; + // Number of frames to render; arbitrary, but should be larger than + // numberOfFrames; + let renderFrames = 16 * numberOfFrames; + + let context = new OfflineAudioContext(1, renderFrames, sampleRate); + let src = new ConstantSourceNode(context); + src.connect(context.destination); + + let tester = async_test('ConstantSourceNode onended event fired'); + + src.onended = function() { + tester.step(function() { + assert_true(true, 'ConstantSourceNode.onended fired'); + }); + tester.done(); + }; + + src.start(); + src.stop(numberOfFrames / context.sampleRate); + + context.startRendering(); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/webaudio/chrome/the-constantsourcenode-interface/constant-source-output.html b/tests/wpt/web-platform-tests/webaudio/chrome/the-constantsourcenode-interface/constant-source-output.html new file mode 100644 index 00000000000..684bab8b459 --- /dev/null +++ b/tests/wpt/web-platform-tests/webaudio/chrome/the-constantsourcenode-interface/constant-source-output.html @@ -0,0 +1,175 @@ +<!DOCTYPE html> +<html> + <head> + <title> + Test ConstantSourceNode Output + </title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="../resources/audit-util.js"></script> + <script src="../resources/audit.js"></script> + <script src="../resources/audioparam-testing.js"></script> + </head> + <body> + <script id="layout-test-code"> + let sampleRate = 48000; + let renderDuration = 0.125; + let renderFrames = sampleRate * renderDuration; + + let audit = Audit.createTaskRunner(); + + audit.define('constant source', (task, should) => { + // Verify a constant source outputs the correct (fixed) constant. + let context = new OfflineAudioContext(1, renderFrames, sampleRate); + let node = new ConstantSourceNode(context, {offset: 0.5}); + node.connect(context.destination); + node.start(); + + context.startRendering() + .then(function(buffer) { + let actual = buffer.getChannelData(0); + let expected = new Float32Array(actual.length); + expected.fill(node.offset.value); + + should(actual, 'Basic: ConstantSourceNode({offset: 0.5})') + .beEqualToArray(expected); + }) + .then(() => task.done()); + }); + + audit.define('start/stop', (task, should) => { + // Verify a constant source starts and stops at the correct time and has + // the correct (fixed) value. + let context = new OfflineAudioContext(1, renderFrames, sampleRate); + let node = new ConstantSourceNode(context, {offset: 1}); + node.connect(context.destination); + + let startFrame = 10; + let stopFrame = 300; + + node.start(startFrame / context.sampleRate); + node.stop(stopFrame / context.sampleRate); + + context.startRendering() + .then(function(buffer) { + let actual = buffer.getChannelData(0); + let expected = new Float32Array(actual.length); + // The expected output is all 1s from start to stop time. + expected.fill(0); + + for (let k = startFrame; k < stopFrame; ++k) { + expected[k] = node.offset.value; + } + + let prefix = 'start/stop: '; + should(actual.slice( + 0, startFrame, + prefix + 'ConstantSourceNode frames [0, ' + + startFrame + ')')) + .beConstantValueOf(0); + + should(actual.slice( + startFrame, stopFrame, + prefix + 'ConstantSourceNode frames [' + startFrame + + ', ' + stopFrame + ')')) + .beConstantValueOf(1); + + should( + actual.slice(stopFrame), + prefix + 'ConstantSourceNode frames [' + stopFrame + ', ' + + renderFrames + ')') + .beConstantValueOf(0); + }) + .then(() => task.done()); + + }); + + audit.define('basic automation', (task, should) => { + // Verify that automation works as expected. + let context = new OfflineAudioContext(1, renderFrames, sampleRate); + let source = context.createConstantSource(); + source.connect(context.destination); + + let rampEndTime = renderDuration / 2; + source.offset.setValueAtTime(0.5, 0); + source.offset.linearRampToValueAtTime(1, rampEndTime); + + source.start(); + + context.startRendering() + .then(function(buffer) { + let actual = buffer.getChannelData(0); + let expected = createLinearRampArray( + 0, rampEndTime, 0.5, 1, context.sampleRate); + + let rampEndFrame = Math.ceil(rampEndTime * context.sampleRate); + let prefix = 'Automation: '; + + should(actual.slice( + 0, rampEndFrame, + prefix + 'ConstantSourceNode.linearRamp(1, 0.5)')) + .beCloseToArray(expected, { + // Experimentally determined threshold.. + relativeThreshold: 7.1610e-7 + }); + + should( + actual.slice(rampEndFrame), + prefix + 'ConstantSourceNode after ramp') + .beConstantValueOf(1); + }) + .then(() => task.done()); + }); + + audit.define('connected audioparam', (task, should) => { + // Verify the constant source output with connected AudioParam produces + // the correct output. + let context = new OfflineAudioContext(2, renderFrames, sampleRate) + context.destination.channelInterpretation = 'discrete'; + let source = new ConstantSourceNode(context, {offset: 1}); + let osc = context.createOscillator(); + let merger = context.createChannelMerger(2); + merger.connect(context.destination); + + source.connect(merger, 0, 0); + osc.connect(merger, 0, 1); + osc.connect(source.offset); + + osc.start(); + let sourceStartFrame = 10; + source.start(sourceStartFrame / context.sampleRate); + + context.startRendering() + .then(function(buffer) { + // Channel 0 and 1 should be identical, except channel 0 (the + // source) is silent at the beginning. + let actual = buffer.getChannelData(0); + let expected = buffer.getChannelData(1); + // The expected output should be oscillator + 1 because offset + // is 1. + expected = expected.map(x => 1 + x); + let prefix = 'Connected param: '; + + // The initial part of the output should be silent because the + // source node hasn't started yet. + should( + actual.slice(0, sourceStartFrame), + prefix + 'ConstantSourceNode frames [0, ' + sourceStartFrame + + ')') + .beConstantValueOf(0); + // The rest of the output should be the same as the oscillator (in + // channel 1) + should( + actual.slice(sourceStartFrame), + prefix + 'ConstantSourceNode frames [' + sourceStartFrame + + ', ' + renderFrames + ')') + .beCloseToArray(expected.slice(sourceStartFrame), 0); + + }) + .then(() => task.done()); + }); + + audit.run(); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/webdriver/tests/conftest.py b/tests/wpt/web-platform-tests/webdriver/tests/conftest.py index e1491a68026..b7b8b83c9a3 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/conftest.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/conftest.py @@ -1,8 +1,9 @@ import pytest from tests.support.fixtures import ( - configuration, create_dialog, create_frame, create_window, http, - new_session, server_config, session, url) + add_browser_capabilites, configuration, create_dialog, create_frame, + create_window, http, new_session, server_config, session, url) +pytest.fixture()(add_browser_capabilites) pytest.fixture(scope="session")(configuration) pytest.fixture()(create_dialog) pytest.fixture()(create_frame) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/contexts/maximize_window.py b/tests/wpt/web-platform-tests/webdriver/tests/contexts/maximize_window.py index 4173b170881..e9257e6fe0a 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/contexts/maximize_window.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/contexts/maximize_window.py @@ -39,7 +39,7 @@ def test_handle_prompt_ignore(): """TODO""" -def test_handle_prompt_accept(new_session): +def test_handle_prompt_accept(new_session, add_browser_capabilites): """ 3. Handle any user prompts and return its value if it is an error. @@ -59,7 +59,7 @@ def test_handle_prompt_accept(new_session): Accept the current user prompt. """ - _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}) + _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept"})}}) session.url = inline("<title>WD doc title</title>") create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/cookies/delete_cookie.py b/tests/wpt/web-platform-tests/webdriver/tests/cookies/delete_cookie.py index adb9674909c..677fd94e8ba 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/cookies/delete_cookie.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/cookies/delete_cookie.py @@ -34,7 +34,7 @@ def test_handle_prompt_ignore(): """TODO""" -def test_handle_prompt_accept(new_session): +def test_handle_prompt_accept(new_session, add_browser_capabilites): """ 2. Handle any user prompts and return its value if it is an error. @@ -54,7 +54,7 @@ def test_handle_prompt_accept(new_session): Accept the current user prompt. """ - _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}) + _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept"})}}) session.url = inline("<title>WD doc title</title>") create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/element_retrieval/get_active_element.py b/tests/wpt/web-platform-tests/webdriver/tests/element_retrieval/get_active_element.py index 8286633e89d..900e3fdfa2c 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/element_retrieval/get_active_element.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/element_retrieval/get_active_element.py @@ -43,8 +43,8 @@ def test_closed_context(session, create_window): # [...] # # 3. Return success. -def test_handle_prompt_dismiss(new_session): - _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "dismiss"}}) +def test_handle_prompt_dismiss(new_session, add_browser_capabilites): + _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "dismiss"})}}) session.url = inline("<body><p>Hello, World!</p></body>") create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1") @@ -87,8 +87,8 @@ def test_handle_prompt_dismiss(new_session): # [...] # # 3. Return success. -def test_handle_prompt_accept(new_session): - _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}) +def test_handle_prompt_accept(new_session, add_browser_capabilites): + _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept"})}}) session.url = inline("<body><p>Hello, World!</p></body>") create_dialog(session)("alert", text="accept #1", result_var="accept1") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/fullscreen_window.py b/tests/wpt/web-platform-tests/webdriver/tests/fullscreen_window.py index 696c579c266..9b42ad34427 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/fullscreen_window.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/fullscreen_window.py @@ -43,7 +43,7 @@ def test_handle_prompt_ignore(): """TODO""" -def test_handle_prompt_accept(new_session): +def test_handle_prompt_accept(new_session, add_browser_capabilites): """ 2. Handle any user prompts and return its value if it is an error. @@ -63,7 +63,7 @@ def test_handle_prompt_accept(new_session): Accept the current user prompt. """ - _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}) + _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept"})}}) session.url = inline("<title>WD doc title</title>") create_dialog(session)("alert", text="accept #1", result_var="accept1") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_window_rect.py b/tests/wpt/web-platform-tests/webdriver/tests/get_window_rect.py index 3ec8ce71d47..b25ca28692f 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_window_rect.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_window_rect.py @@ -37,7 +37,7 @@ def test_handle_prompt_ignore(): """TODO""" -def test_handle_prompt_accept(new_session): +def test_handle_prompt_accept(new_session, add_browser_capabilites): """ 2. Handle any user prompts and return its value if it is an error. @@ -57,7 +57,7 @@ def test_handle_prompt_accept(new_session): Accept the current user prompt. """ - _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}) + _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept"})}}) session.url = inline("<title>WD doc title</title>") create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/interaction/send_keys_content_editable.py b/tests/wpt/web-platform-tests/webdriver/tests/interaction/send_keys_content_editable.py index a4bba8e534f..16ebc2d018f 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/interaction/send_keys_content_editable.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/interaction/send_keys_content_editable.py @@ -11,7 +11,7 @@ def test_sets_insertion_point_to_end(session): assert "Hello, world!" == text.strip() -# 12. Let current text length be the element’s length. +# 12. Let current text length be the element's length. # # 13. Set the text insertion caret using set selection range using current # text length for both the start and end parameters. diff --git a/tests/wpt/web-platform-tests/webdriver/tests/minimize_window.py b/tests/wpt/web-platform-tests/webdriver/tests/minimize_window.py index 497d967d982..5c0ef72bf84 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/minimize_window.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/minimize_window.py @@ -37,7 +37,7 @@ def test_handle_prompt_ignore(): """TODO""" -def test_handle_prompt_accept(new_session): +def test_handle_prompt_accept(new_session, add_browser_capabilites): """ 2. Handle any user prompts and return its value if it is an error. @@ -57,7 +57,7 @@ def test_handle_prompt_accept(new_session): Accept the current user prompt. """ - _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}) + _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept"})}}) session.url = inline("<title>WD doc title</title>") create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/navigation/get_title.py b/tests/wpt/web-platform-tests/webdriver/tests/navigation/get_title.py index e0f39acebad..7416136fadf 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/navigation/get_title.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/navigation/get_title.py @@ -33,8 +33,8 @@ def test_title_from_closed_context(session, create_window): # [...] # # 3. Return success. -def test_title_handle_prompt_dismiss(new_session): - _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "dismiss"}}) +def test_title_handle_prompt_dismiss(new_session, add_browser_capabilites): + _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "dismiss"})}}) session.url = inline("<title>WD doc title</title>") expected_title = read_global(session, "document.title") @@ -80,8 +80,8 @@ def test_title_handle_prompt_dismiss(new_session): # [...] # # 3. Return success. -def test_title_handle_prompt_accept(new_session): - _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}) +def test_title_handle_prompt_accept(new_session, add_browser_capabilites): + _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept"})}}) session.url = inline("<title>WD doc title</title>") create_dialog(session)("alert", text="accept #1", result_var="accept1") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/create_alwaysMatch.py b/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/create_alwaysMatch.py index 4a91c60d360..23350488ddc 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/create_alwaysMatch.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/create_alwaysMatch.py @@ -4,10 +4,10 @@ import pytest from conftest import product, flatten -from .support.create import valid_data +from support.create import valid_data @pytest.mark.parametrize("key,value", flatten(product(*item) for item in valid_data)) -def test_valid(new_session, key, value): - resp = new_session({"capabilities": {"alwaysMatch": {key: value}}}) +def test_valid(new_session, add_browser_capabilites, key, value): + resp = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({key: value})}}) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/create_firstMatch.py b/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/create_firstMatch.py index ab983e769a4..58203e5fc3a 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/create_firstMatch.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/create_firstMatch.py @@ -4,9 +4,9 @@ import pytest from conftest import product, flatten -from .support.create import valid_data +from support.create import valid_data @pytest.mark.parametrize("key,value", flatten(product(*item) for item in valid_data)) -def test_valid(new_session, key, value): - resp = new_session({"capabilities": {"firstMatch": [{key: value}]}}) +def test_valid(new_session, add_browser_capabilites, key, value): + resp = new_session({"capabilities": {"firstMatch": [add_browser_capabilites({key: value})]}}) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/default_values.py b/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/default_values.py index bfe4144f5a3..0dbc798b907 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/default_values.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/default_values.py @@ -7,15 +7,15 @@ import pytest from webdriver import error -def test_basic(new_session): - resp, _ = new_session({"capabilities": {}}) +def test_basic(new_session, add_browser_capabilites): + resp, _ = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({})}}) assert set(resp.keys()) == {"sessionId", "capabilities"} -def test_repeat_new_session(new_session): - resp, _ = new_session({"capabilities": {}}) +def test_repeat_new_session(new_session, add_browser_capabilites): + resp, _ = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({})}}) with pytest.raises(error.SessionNotCreatedException): - new_session({"capabilities": {}}) + new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({})}}) def test_no_capabilites(new_session): @@ -23,26 +23,26 @@ def test_no_capabilites(new_session): new_session({}) -def test_missing_first_match(new_session): - resp, _ = new_session({"capabilities": {"alwaysMatch": {}}}) +def test_missing_first_match(new_session, add_browser_capabilites): + resp, _ = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({})}}) -def test_missing_always_match(new_session): - resp, _ = new_session({"capabilities": {"firstMatch": [{}]}}) +def test_missing_always_match(new_session, add_browser_capabilites): + resp, _ = new_session({"capabilities": {"firstMatch": [add_browser_capabilites({})]}}) -def test_desired(new_session): +def test_desired(new_session, add_browser_capabilites): with pytest.raises(error.InvalidArgumentException): - resp, _ = new_session({"desiredCapbilities": {}}) + resp, _ = new_session({"desiredCapbilities": add_browser_capabilites({})}) -def test_ignore_non_spec_fields_in_capabilities(new_session): - resp, _ = new_session({"capabilities": {"desiredCapbilities": {"pageLoadStrategy": "eager"}}}) +def test_ignore_non_spec_fields_in_capabilities(new_session, add_browser_capabilites): + resp, _ = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({}), "desiredCapbilities": {"pageLoadStrategy": "eager"}}}) assert resp["capabilities"]["pageLoadStrategy"] == "normal" -def test_valid_but_unmatchable_key(new_session): +def test_valid_but_unmatchable_key(new_session, add_browser_capabilites): resp, _ = new_session({"capabilities": { - "firstMatch": [{"pageLoadStrategy": "eager", "foo:unmatchable": True}, + "firstMatch": [add_browser_capabilites({"pageLoadStrategy": "eager", "foo:unmatchable": True}), {"pageLoadStrategy": "none"}]}}) assert resp["capabilities"]["pageLoadStrategy"] == "none" diff --git a/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/invalid_capabilities.py b/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/invalid_capabilities.py index 325c9b281af..88da4f110cf 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/invalid_capabilities.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/invalid_capabilities.py @@ -13,15 +13,15 @@ def test_invalid_capabilites(new_session, value): @pytest.mark.parametrize("value", [None, 1, "{}", []]) -def test_invalid_always_match(new_session, value): +def test_invalid_always_match(new_session, add_browser_capabilites, value): with pytest.raises(error.InvalidArgumentException): - new_session({"capabilities": {"alwaysMatch": value}}) + new_session({"capabilities": {"alwaysMatch": value, "firstMatch": [add_browser_capabilites({})]}}) @pytest.mark.parametrize("value", [None, 1, "[]", {}]) -def test_invalid_first_match(new_session, value): +def test_invalid_first_match(new_session, add_browser_capabilites, value): with pytest.raises(error.InvalidArgumentException): - new_session({"capabilities": {"firstMatch": value}}) + new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({}), "firstMatch": value}}) invalid_data = [ @@ -49,9 +49,14 @@ invalid_data = [ @pytest.mark.parametrize("body", [lambda key, value: {"alwaysMatch": {key: value}}, lambda key, value: {"firstMatch": [{key: value}]}]) @pytest.mark.parametrize("key,value", flatten(product(*item) for item in invalid_data)) -def test_invalid(new_session, body, key, value): +def test_invalid_values(new_session, add_browser_capabilites, body, key, value): + capabilities = body(key, value) + if "alwaysMatch" in capabilities: + capabilities["alwaysMatch"] = add_browser_capabilites(capabilities["alwaysMatch"]) + else: + capabilities["firstMatch"][0] = add_browser_capabilites(capabilities["firstMatch"][0]) with pytest.raises(error.InvalidArgumentException): - resp = new_session({"capabilities": body(key, value)}) + resp = new_session({"capabilities": capabilities}) invalid_extensions = [ @@ -82,7 +87,12 @@ invalid_extensions = [ @pytest.mark.parametrize("body", [lambda key, value: {"alwaysMatch": {key: value}}, lambda key, value: {"firstMatch": [{key: value}]}]) @pytest.mark.parametrize("key", invalid_extensions) -def test_invalid(new_session, body, key): +def test_invalid_extensions(new_session, add_browser_capabilites, body, key): + capabilities = body(key, {}) + if "alwaysMatch" in capabilities: + capabilities["alwaysMatch"] = add_browser_capabilites(capabilities["alwaysMatch"]) + else: + capabilities["firstMatch"][0] = add_browser_capabilites(capabilities["firstMatch"][0]) with pytest.raises(error.InvalidArgumentException): - resp = new_session({"capabilities": body(key, {})}) + resp = new_session({"capabilities": capabilities}) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/merge.py b/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/merge.py index 2e64620455c..480fbcdcbdb 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/merge.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/merge.py @@ -9,8 +9,13 @@ from conftest import platform_name @pytest.mark.skipif(platform_name() is None, reason="Unsupported platform") @pytest.mark.parametrize("body", [lambda key, value: {"alwaysMatch": {key: value}}, lambda key, value: {"firstMatch": [{key: value}]}]) -def test_platform_name(new_session, platform_name, body): - resp, _ = new_session({"capabilities": body("platformName", platform_name)}) +def test_platform_name(new_session, add_browser_capabilites, platform_name, body): + capabilities = body("platformName", platform_name) + if "alwaysMatch" in capabilities: + capabilities["alwaysMatch"] = add_browser_capabilites(capabilities["alwaysMatch"]) + else: + capabilities["firstMatch"][0] = add_browser_capabilites(capabilities["firstMatch"][0]) + resp, _ = new_session({"capabilities": capabilities}) assert resp["capabilities"]["platformName"] == platform_name @@ -24,17 +29,17 @@ invalid_merge = [ @pytest.mark.parametrize("key,value", invalid_merge) -def test_merge_invalid(new_session, key, value): +def test_merge_invalid(new_session, add_browser_capabilites, key, value): with pytest.raises(error.InvalidArgumentException): new_session({"capabilities": - {"alwaysMatch": {key: value[0]}, + {"alwaysMatch": add_browser_capabilites({key: value[0]}), "firstMatch": [{}, {key: value[1]}]}}) @pytest.mark.skipif(platform_name() is None, reason="Unsupported platform") -def test_merge_platformName(new_session, platform_name): +def test_merge_platformName(new_session, add_browser_capabilites, platform_name): resp, _ = new_session({"capabilities": - {"alwaysMatch": {"timeouts": {"script": 10}}}, + {"alwaysMatch": add_browser_capabilites({"timeouts": {"script": 10}}), "firstMatch": [ { "platformName": platform_name.upper(), @@ -44,14 +49,14 @@ def test_merge_platformName(new_session, platform_name): "platformName": platform_name, "pageLoadStrategy": "eager" } - ]}) + ]}}) assert resp["capabilities"]["platformName"] == platform_name assert resp["capabilities"]["pageLoadStrategy"] == "eager" -def test_merge_browserName(new_session): - resp, session = new_session({}) +def test_merge_browserName(new_session, add_browser_capabilites): + resp, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({})}}) browser_settings = { "browserName": resp["capabilities"]["browserName"], "browserVersion": resp["capabilities"]["browserVersion"], @@ -60,7 +65,7 @@ def test_merge_browserName(new_session): session.end() resp, _ = new_session({"capabilities": - {"alwaysMatch": {"timeouts": {"script": 10}}}, + {"alwaysMatch": add_browser_capabilites({"timeouts": {"script": 10}}), "firstMatch": [ { "browserName": browser_settings["browserName"] + "invalid", @@ -70,7 +75,7 @@ def test_merge_browserName(new_session): "browserName": browser_settings["browserName"], "pageLoadStrategy": "eager" } - ]}) + ]}}) assert resp["capabilities"]["browserName"] == browser_settings['browserName'] assert resp["capabilities"]["pageLoadStrategy"] == "eager" diff --git a/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/response.py b/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/response.py index 6669573ba2c..0bec23f9990 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/response.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/response.py @@ -2,14 +2,14 @@ import uuid -def test_resp_sessionid(new_session): - resp, _ = new_session({"capabilities": {}}) +def test_resp_sessionid(new_session, add_browser_capabilites): + resp, _ = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({})}}) assert isinstance(resp["sessionId"], unicode) uuid.UUID(hex=resp["sessionId"]) -def test_resp_capabilites(new_session): - resp, _ = new_session({"capabilities": {}}) +def test_resp_capabilites(new_session, add_browser_capabilites): + resp, _ = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({})}}) assert isinstance(resp["sessionId"], unicode) assert isinstance(resp["capabilities"], dict) assert {"browserName", @@ -23,8 +23,8 @@ def test_resp_capabilites(new_session): set(resp["capabilities"].keys())) -def test_resp_data(new_session, platform_name): - resp, _ = new_session({"capabilities": {}}) +def test_resp_data(new_session, add_browser_capabilites, platform_name): + resp, _ = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({})}}) assert isinstance(resp["capabilities"]["browserName"], unicode) assert isinstance(resp["capabilities"]["browserVersion"], unicode) @@ -41,14 +41,14 @@ def test_resp_data(new_session, platform_name): assert resp["capabilities"]["pageLoadStrategy"] == "normal" -def test_timeouts(new_session, platform_name): - resp, _ = new_session({"capabilities": {"alwaysMatch": {"timeouts": {"implicit": 1000}}}}) +def test_timeouts(new_session, add_browser_capabilites, platform_name): + resp, _ = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"timeouts": {"implicit": 1000}})}}) assert resp["capabilities"]["timeouts"] == { "implicit": 1000, "pageLoad": 300000, "script": 30000 } -def test_pageLoadStrategy(new_session, platform_name): - resp, _ = new_session({"capabilities": {"alwaysMatch": {"pageLoadStrategy": "eager"}}}) +def test_pageLoadStrategy(new_session, add_browser_capabilites, platform_name): + resp, _ = new_session({"capabilities": add_browser_capabilites({"alwaysMatch": {"pageLoadStrategy": "eager"}})}) assert resp["capabilities"]["pageLoadStrategy"] == "eager" diff --git a/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/support/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/support/__init__.py new file mode 100644 index 00000000000..d3f5a12faa9 --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/support/__init__.py @@ -0,0 +1 @@ +
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/set_window_rect.py b/tests/wpt/web-platform-tests/webdriver/tests/set_window_rect.py index b300d09d111..f945f19a26d 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/set_window_rect.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/set_window_rect.py @@ -33,7 +33,7 @@ def test_handle_prompt_dismiss(): """TODO""" -def test_handle_prompt_accept(new_session): +def test_handle_prompt_accept(new_session, add_browser_capabilites): """ 2. Handle any user prompts and return its value if it is an error. @@ -53,8 +53,7 @@ def test_handle_prompt_accept(new_session): Accept the current user prompt. """ - _, session = new_session( - {"alwaysMatch": {"unhandledPromptBehavior": "accept"}}) + _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept"})}}) original = session.window.rect # step 2 diff --git a/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_attribute.py b/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_attribute.py index e662d95a9c7..d08eda1c244 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_attribute.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_attribute.py @@ -24,9 +24,9 @@ def test_no_browsing_context(session, create_window): assert_error(result, "no such window") -def test_handle_prompt_dismiss(new_session): +def test_handle_prompt_dismiss(new_session, add_browser_capabilites): # 13.2 step 2 - _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "dismiss"}}) + _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "dismiss"})}}) session.url = inline("<input id=foo>") create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1") @@ -51,9 +51,9 @@ def test_handle_prompt_dismiss(new_session): assert_dialog_handled(session, "dismiss #3") -def test_handle_prompt_accept(new_session): +def test_handle_prompt_accept(new_session, add_browser_capabilites): # 13.2 step 2 - _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}) + _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept"})}}) session.url = inline("<input id=foo>") create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_property.py b/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_property.py index 00a85af69b5..d84339db6e6 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_property.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_property.py @@ -19,9 +19,9 @@ def test_no_browsing_context(session, create_window): assert_error(result, "no such window") -def test_handle_prompt_dismiss(new_session): +def test_handle_prompt_dismiss(new_session, add_browser_capabilites): # 13.3 step 2 - _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "dismiss"}}) + _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "dismiss"})}}) session.url = inline("<input id=foo>") create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1") @@ -53,9 +53,9 @@ def test_handle_prompt_dismiss(new_session): -def test_handle_prompt_accept(new_session): +def test_handle_prompt_accept(new_session, add_browser_capabilites): # 13.3 step 2 - _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}) + _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept"})}}) session.url = inline("<input id=foo>") create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_tag_name.py b/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_tag_name.py index 4100e9b1e17..df519f4df55 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_tag_name.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_tag_name.py @@ -17,9 +17,9 @@ def test_no_browsing_context(session, create_window): assert_error(result, "no such window") -def test_handle_prompt_dismiss(new_session): +def test_handle_prompt_dismiss(new_session, add_browser_capabilites): # 13.6 step 2 - _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "dismiss"}}) + _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "dismiss"})}}) session.url = inline("<input id=foo>") create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1") @@ -50,9 +50,9 @@ def test_handle_prompt_dismiss(new_session): assert_dialog_handled(session, "dismiss #3") -def test_handle_prompt_accept(new_session): +def test_handle_prompt_accept(new_session, add_browser_capabilites): # 13.6 step 2 - _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}) + _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept"})}}) session.url = inline("<input id=foo>") create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/state/is_element_selected.py b/tests/wpt/web-platform-tests/webdriver/tests/state/is_element_selected.py index c82f26fa912..8027d5e03cb 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/state/is_element_selected.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/state/is_element_selected.py @@ -26,9 +26,9 @@ def test_no_browsing_context(session, create_window): assert_error(result, "no such window") -def test_handle_prompt_dismiss(new_session): +def test_handle_prompt_dismiss(new_session, add_browser_capabilites): # 13.1 step 2 - _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "dismiss"}}) + _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "dismiss"})}}) session.url = inline("<input id=foo>") create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1") @@ -59,9 +59,9 @@ def test_handle_prompt_dismiss(new_session): assert_dialog_handled(session, "dismiss #3") -def test_handle_prompt_accept(new_session): +def test_handle_prompt_accept(new_session, add_browser_capabilites): # 13.1 step 2 - _, session = new_session({"alwaysMatch": {"unhandledPromptBehavior": "accept"}}) + _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept"})}}) session.url = inline("<input id=foo>") create_dialog(session)("alert", text="dismiss #1", result_var="dismiss1") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py index d93f862578a..778acd314c6 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py @@ -188,8 +188,6 @@ def new_session(configuration, request): _session = webdriver.Session(configuration["host"], configuration["port"], capabilities=None) - # TODO: merge in some capabilities from the confguration capabilities - # since these might be needed to start the browser value = _session.send_command("POST", "session", body=body) # Don't set the global session until we are sure this succeeded _current_session = _session @@ -203,6 +201,16 @@ def new_session(configuration, request): return create_session +def add_browser_capabilites(configuration): + def update_capabilities(capabilities): + # Make sure there aren't keys in common. + assert not set(configuration["capabilities"]).intersection(set(capabilities)) + result = dict(configuration["capabilities"]) + result.update(capabilities) + return result + return update_capabilities + + def url(server_config): def inner(path, protocol="http", query="", fragment=""): port = server_config["ports"][protocol][0] diff --git a/tests/wpt/web-platform-tests/webmessaging/Channel_postMessage_Blob.htm b/tests/wpt/web-platform-tests/webmessaging/Channel_postMessage_Blob.htm new file mode 100644 index 00000000000..a86dc7e55be --- /dev/null +++ b/tests/wpt/web-platform-tests/webmessaging/Channel_postMessage_Blob.htm @@ -0,0 +1,45 @@ +<!DOCTYPE html> +<html> +<head> +<title> postMessage() with a Blob </title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +</head> +<body> +<div id=log></div> +<script> + var TARGET = null; + var SOURCE = null; + var description = "Messages can contain Blobs."; + + var t = async_test("Test Description: " + description); + + var channel = new MessageChannel(); + SOURCE = channel.port1; + TARGET = channel.port2; + TARGET.start(); + TARGET.addEventListener("message", t.step_func(TestMessageEvent), true); + + (function() { + SOURCE.postMessage({blob: new Blob(['foo', 'bar'])}); + })(); + // TODO(https://github.com/w3c/web-platform-tests/issues/7899): Change to + // some sort of cross-browser GC trigger. + if (self.gc) self.gc(); + + function TestMessageEvent(evt) + { + assert_true('blob' in evt.data); + assert_true(evt.data.blob instanceof Blob); + assert_equals(evt.data.blob.size, 6); + const reader = new FileReader(); + reader.onerror = t.unreached_func('Reading blob failed'); + reader.onload = t.step_func(() => { + assert_equals(reader.result, 'foobar'); + t.done(); + }); + reader.readAsText(evt.data.blob); + } +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/blobs.html b/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/blobs.html index 8b50153fdb8..083204b3eb7 100644 --- a/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/blobs.html +++ b/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/blobs.html @@ -3,7 +3,6 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script> - async_test(t => { const c1 = new BroadcastChannel('blob'); const c2 = new BroadcastChannel('blob'); @@ -25,7 +24,12 @@ async_test(t => { reader.readAsText(e.data.blob); }); c3.onmessage = c2.onmessage; - c1.postMessage({blob: new Blob(['foo', 'bar'])}); + (() => { + c1.postMessage({blob: new Blob(['foo', 'bar'])}); + })(); + // TODO(https://github.com/w3c/web-platform-tests/issues/7899): Change to + // some sort of cross-browser GC trigger. + if (self.gc) self.gc(); }, 'Blobs work on BroadcastChannel'); async_test(t => { diff --git a/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/resources/worker.js b/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/resources/worker.js index 2f0e4eaa34c..640c405cc10 100644 --- a/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/resources/worker.js +++ b/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/resources/worker.js @@ -6,7 +6,12 @@ function handler(e, reply) { return; } if (e.data.blob) { - c.postMessage({blob: new Blob(e.data.blob)}); + (() => { + c.postMessage({blob: new Blob(e.data.blob)}); + })(); + // TODO(https://github.com/w3c/web-platform-tests/issues/7899): Change to + // some sort of cross-browser GC trigger. + if (self.gc) self.gc(); } c = new BroadcastChannel(e.data.channel); let messages = []; diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-helper.js b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-helper.js index 5f1813f9b52..8ccebbd867f 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-helper.js +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-helper.js @@ -394,3 +394,54 @@ function getTrackFromUserMedia(kind) { return [track, mediaStream]; }); } + +// Obtain |count| MediaStreamTracks of type |kind| and MediaStreams. The tracks +// do not belong to any stream and the streams are empty. Returns a Promise +// resolved with a pair of arrays [tracks, streams]. +// Assumes there is at least one available device to generate the tracks and +// streams and that the getUserMedia() calls resolve. +function getUserMediaTracksAndStreams(count, type = 'audio') { + let otherTracksPromise; + if (count > 1) + otherTracksPromise = getUserMediaTracksAndStreams(count - 1, type); + else + otherTracksPromise = Promise.resolve([[], []]); + return otherTracksPromise.then(([tracks, streams]) => { + return getTrackFromUserMedia(type) + .then(([track, stream]) => { + // Remove the default stream-track relationship. + stream.removeTrack(track); + tracks.push(track); + streams.push(stream); + return [tracks, streams]; + }); + }); +} + +// Creates an offer for the caller, set it as the caller's local description and +// then sets the callee's remote description to the offer. Returns the Promise +// of the setRemoteDescription call. +function performOffer(caller, callee) { + let sessionDescription; + return caller.createOffer() + .then(offer => { + sessionDescription = offer; + return caller.setLocalDescription(offer); + }).then(() => callee.setRemoteDescription(sessionDescription)); +} + + +// The resolver has a |promise| that can be resolved or rejected using |resolve| +// or |reject|. +class Resolver { + constructor() { + let promiseResolve; + let promiseReject; + this.promise = new Promise(function(resolve, reject) { + promiseResolve = resolve; + promiseReject = reject; + }); + this.resolve = promiseResolve; + this.reject = promiseReject; + } +} diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-offer.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-offer.html index 133199a55c5..449925cb1db 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-offer.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-offer.html @@ -11,7 +11,6 @@ // https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html // The following helper functions are called from RTCPeerConnection-helper.js: - // generateOffer() // assert_session_desc_equals() // test_state_change_event() @@ -50,41 +49,78 @@ - If description is of type "offer", set connection.pendingRemoteDescription attribute to description and signaling state to have-remote-offer. */ + promise_test(t => { - const pc = new RTCPeerConnection(); + const pc1 = new RTCPeerConnection(); + pc1.createDataChannel('datachannel'); + + const pc2 = new RTCPeerConnection(); - test_state_change_event(t, pc, ['have-remote-offer']); + test_state_change_event(t, pc2, ['have-remote-offer']); - return generateOffer({ pc, data: true }) - .then(offer => - pc.setRemoteDescription(offer) + return pc1.createOffer() + .then(offer => { + return pc2.setRemoteDescription(offer) .then(() => { - assert_equals(pc.signalingState, 'have-remote-offer'); - assert_session_desc_equals(pc.remoteDescription, offer); - assert_session_desc_equals(pc.pendingRemoteDescription, offer); - assert_equals(pc.currentRemoteDescription, null); - })); - }, 'setRemoteDescription with valid offer should succeed'); + assert_equals(pc2.signalingState, 'have-remote-offer'); + assert_session_desc_equals(pc2.remoteDescription, offer); + assert_session_desc_equals(pc2.pendingRemoteDescription, offer); + assert_equals(pc2.currentRemoteDescription, null); + }); + }); + }, 'setRemoteDescription with valid offer should succeed'); promise_test(t => { - const pc = new RTCPeerConnection(); + const pc1 = new RTCPeerConnection(); + pc1.createDataChannel('datachannel'); + + const pc2 = new RTCPeerConnection(); // have-remote-offer event should only fire once - test_state_change_event(t, pc, ['have-remote-offer']); - - return Promise.all([ - pc.createOffer({ offerToReceiveAudio: true }), - generateOffer({ pc, data: true }) - ]).then(([offer1, offer2]) => - pc.setRemoteDescription(offer1) - .then(() => pc.setRemoteDescription(offer2)) + test_state_change_event(t, pc2, ['have-remote-offer']); + + return pc1.createOffer() + .then(offer => { + return pc2.setRemoteDescription(offer) + .then(() => pc2.setRemoteDescription(offer)) .then(() => { - assert_equals(pc.signalingState, 'have-remote-offer'); - assert_session_desc_equals(pc.remoteDescription, offer2); - assert_session_desc_equals(pc.pendingRemoteDescription, offer2); - assert_equals(pc.currentRemoteDescription, null); - })); - }, 'Setting remote description multiple times with different offer should succeed'); + assert_equals(pc2.signalingState, 'have-remote-offer'); + assert_session_desc_equals(pc2.remoteDescription, offer); + assert_session_desc_equals(pc2.pendingRemoteDescription, offer); + assert_equals(pc2.currentRemoteDescription, null); + }); + }); + }, 'setRemoteDescription multiple times should succeed'); + + promise_test(t => { + const pc1 = new RTCPeerConnection(); + pc1.createDataChannel('datachannel'); + + const pc2 = new RTCPeerConnection(); + + // have-remote-offer event should only fire once + test_state_change_event(t, pc2, ['have-remote-offer']); + + return pc1.createOffer() + .then(offer1 => { + return pc1.setLocalDescription(offer1) + .then(()=> { + return pc1.createOffer({ offerToReceiveAudio: true }) + .then(offer2 => { + assert_session_desc_not_equals(offer1, offer2); + + return pc2.setRemoteDescription(offer1) + .then(() => pc2.setRemoteDescription(offer2)) + .then(() => { + assert_equals(pc2.signalingState, 'have-remote-offer'); + assert_session_desc_equals(pc2.remoteDescription, offer2); + assert_session_desc_equals(pc2.pendingRemoteDescription, offer2); + assert_equals(pc2.currentRemoteDescription, null); + }); + }); + }); + }); + }, 'setRemoteDescription multiple times with different offer should succeed'); /* 4.3.1.6. Set the RTCSessionSessionDescription @@ -123,13 +159,14 @@ */ promise_test(t => { const pc = new RTCPeerConnection(); - return pc.createOffer() - .then(offer => pc.setLocalDescription(offer)) - .then(() => pc.createOffer()) - .then(offer2 => - promise_rejects(t, 'InvalidStateError', - pc.setRemoteDescription(offer2))); - }, 'Calling setRemoteDescription(offer) from have-local-offer state should reject with InvalidStateError'); + .then(offer => { + return pc.setLocalDescription(offer) + .then(() => { + return promise_rejects(t, 'InvalidStateError', + pc.setRemoteDescription(offer)); + }); + }); + }, 'setRemoteDescription(offer) from have-local-offer state should reject with InvalidStateError'); </script> diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-tracks.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-tracks.https.html new file mode 100644 index 00000000000..f567c30a7b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setRemoteDescription-tracks.https.html @@ -0,0 +1,222 @@ +<!doctype html> +<meta charset=utf-8> +<title>RTCPeerConnection.prototype.setRemoteDescription - add/remove remote tracks</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="RTCPeerConnection-helper.js"></script> +<script> + 'use strict'; + + // Test is based on the following editor draft: + // https://w3c.github.io/webrtc-pc/archives/20171002/webrtc.html + + // The following helper functions are called from RTCPeerConnection-helper.js: + // getUserMediaTracksAndStreams + // performOffer + // Resolver + + // These tests are concerned with the observable consequences of processing + // the addition or removal of remote tracks, including events firing and the + // states of RTCPeerConnection, MediaStream and MediaStreamTrack. + + async_test(t => { + const caller = new RTCPeerConnection(); + const callee = new RTCPeerConnection(); + return getUserMediaTracksAndStreams(1) + .then(t.step_func(([tracks, streams]) => { + let localTrack = tracks[0]; + caller.addTrack(localTrack); + let offerPromise = performOffer(caller, callee); + callee.ontrack = t.step_func(trackEvent => { + let remoteTrack = trackEvent.track; + assert_equals(remoteTrack.id, localTrack.id, + 'Expected local and remote track IDs to match.'); + assert_equals(trackEvent.streams.length, 0, + 'Expected remote track not to belong to a stream.'); + t.done(); + }); + return offerPromise; + })) + .catch(t.step_func(reason => { + assert_unreached(reason); + })); + }, 'addTrack with a track and no stream makes ontrack fire with a track and no stream.'); + + async_test(t => { + const caller = new RTCPeerConnection(); + const callee = new RTCPeerConnection(); + return getUserMediaTracksAndStreams(1) + .then(t.step_func(([tracks, streams]) => { + let localTrack = tracks[0]; + let localStream = streams[0]; + caller.addTrack(localTrack, localStream); + let offerPromise = performOffer(caller, callee); + callee.ontrack = t.step_func(trackEvent => { + assert_equals(trackEvent.streams.length, 1, + 'Expected track event to fire with a single stream.'); + let remoteTrack = trackEvent.track; + let remoteStream = trackEvent.streams[0]; + assert_equals(remoteTrack.id, localTrack.id, + 'Expected local and remote track IDs to match.'); + assert_equals(remoteStream.id, localStream.id, + 'Expected local and remote stream IDs to match.'); + assert_array_equals(remoteStream.getTracks(), [remoteTrack], + 'Expected the remote stream\'s tracks to be the remote track.'); + t.done(); + }); + return offerPromise; + })) + .catch(t.step_func(reason => { + assert_unreached(reason); + })); + }, 'addTrack with a track and a stream makes ontrack fire with a track and a stream.'); + + async_test(t => { + const caller = new RTCPeerConnection(); + const callee = new RTCPeerConnection(); + return getUserMediaTracksAndStreams(2) + .then(t.step_func(([tracks, streams]) => { + let localTrack1 = tracks[0]; + let localTrack2 = tracks[1]; + let localStream = streams[0]; + caller.addTrack(localTrack1, localStream); + caller.addTrack(localTrack2, localStream); + let offerPromise = performOffer(caller, callee); + callee.ontrack = t.step_func(trackEvent => { + assert_equals(trackEvent.streams.length, 1, + 'Expected track event to fire with a single stream.'); + let remoteTrack1 = trackEvent.track; + let remoteStream = trackEvent.streams[0]; + assert_equals(remoteTrack1.id, localTrack1.id, + 'Expected first remote track ID to match first local track ID.'); + assert_equals(remoteStream.getTracks().length, 2, + 'Expected the remote stream to contain two tracks.'); + callee.ontrack = t.step_func(trackEvent => { + assert_equals(trackEvent.streams.length, 1, + 'Expected track event to fire with a single stream.'); + let remoteTrack2 = trackEvent.track; + assert_equals(trackEvent.streams[0], remoteStream, + 'Expected both track events to fire with the same remote stream.'); + assert_equals(remoteTrack2.id, localTrack2.id, + 'Expected second remote track ID to match second local track ID.'); + assert_equals(remoteStream.getTracks().length, 2, + 'Expected the remote stream to contain two tracks.'); + assert_array_equals(remoteStream.getTracks(), [remoteTrack1, remoteTrack2], + 'Expected the remote stream\'s tracks to be the [first, second] remote tracks.'); + t.done(); + }); + }); + return offerPromise; + })) + .catch(t.step_func(reason => { + assert_unreached(reason); + })); + }, 'addTrack with two tracks and one stream makes ontrack fire twice with the tracks and shared stream.'); + + async_test(t => { + const caller = new RTCPeerConnection(); + const callee = new RTCPeerConnection(); + return getUserMediaTracksAndStreams(2) + .then(t.step_func(([tracks, streams]) => { + let localTrack = tracks[0]; + let localStreams = streams; + caller.addTrack(localTrack, localStreams[0], localStreams[1]); + let performOffer = performOffer(caller, callee); + callee.ontrack = t.step_func(trackEvent => { + assert_equals(trackEvent.streams.length, 2, + 'Expected the track event to fire with two streams.'); + let remoteTrack = trackEvent.track; + let remoteStreams = trackEvent.streams; + assert_equals(remoteTrack.id, localTrack.id, + 'Expected local and remote track IDs to match.'); + assert_equals(remoteStreams[0].id, localStreams[0].id, + 'Expected the first remote stream ID to match the first local stream ID.'); + assert_equals(remoteStreams[1].id, localStreams[1].id, + 'Expected the second remote stream ID to match the second local stream ID.'); + assert_array_equals(remoteStreams[0].getTracks(), [remoteTrack], + 'Expected the remote stream\'s tracks to be the remote track.'); + assert_array_equals(remoteStreams[1].getTracks(), [remoteTrack], + 'Expected the remote stream\'s tracks to be the remote track.'); + t.done(); + }); + return performOffer; + })) + .catch(t.step_func(reason => { + assert_unreached(reason); + })); + }, 'addTrack with a track and two streams makes ontrack fire with a track and two streams.'); + + async_test(t => { + const caller = new RTCPeerConnection(); + const callee = new RTCPeerConnection(); + let eventSequence = ''; + return getUserMediaTracksAndStreams(1) + .then(t.step_func(([tracks, streams]) => { + caller.addTrack(tracks[0]); + let ontrackResolver = new Resolver(); + callee.ontrack = () => { + eventSequence += 'ontrack;'; + ontrackResolver.resolve(); + } + return Promise.all([ + ontrackResolver.promise, + performOffer(caller, callee).then(() => { + eventSequence += 'setRemoteDescription;'; + }) + ]); + })) + .then(t.step_func(() => { + assert_equals(eventSequence, 'ontrack;setRemoteDescription;'); + t.done(); + })) + .catch(t.step_func(reason => { + assert_unreached(reason); + })); + }, 'ontrack fires before setRemoteDescription resolves.'); + + async_test(t => { + const caller = new RTCPeerConnection(); + const callee = new RTCPeerConnection(); + return getUserMediaTracksAndStreams(1) + .then(t.step_func(([tracks, streams]) => { + caller.addTrack(tracks[0]); + let offerPromise = performOffer(caller, callee); + callee.ontrack = t.step_func(trackEvent => { + assert_array_equals(callee.getReceivers(), [trackEvent.receiver]); + t.done(); + }); + return offerPromise; + })) + .catch(t.step_func(reason => { + assert_unreached(reason); + })); + }, 'ontrack\'s receiver matches getReceivers().'); + + async_test(t => { + const caller = new RTCPeerConnection(); + const callee = new RTCPeerConnection(); + return getUserMediaTracksAndStreams(1) + .then(t.step_func(([tracks, streams]) => { + let sender = caller.addTrack(tracks[0]); + assert_true(sender != null); + let offerPromise = performOffer(caller, callee); + callee.ontrack = t.step_func(trackEvent => { + let receivers = callee.getReceivers(); + assert_equals(receivers.length, 1, + 'Expected getReceivers() to be the track event\'s receiver.'); + caller.removeTrack(sender); + performOffer(caller, callee) + .then(t.step_func(() => { + assert_array_equals(callee.getReceivers(), receivers, + 'Expected the set of receivers to remain the same.'); + t.done(); + })); + }); + return offerPromise; + })) + .catch(t.step_func(reason => { + assert_unreached(reason); + })); + }, 'removeTrack does not remove the receiver.'); + +</script> diff --git a/tests/wpt/web-platform-tests/webrtc/getstats.html b/tests/wpt/web-platform-tests/webrtc/getstats.html index 9a10936c85a..9775f2090f2 100644 --- a/tests/wpt/web-platform-tests/webrtc/getstats.html +++ b/tests/wpt/web-platform-tests/webrtc/getstats.html @@ -68,11 +68,14 @@ This test uses data only, and thus does not require fake media devices. } showStats.innerHTML = JSON.stringify(reportDictionary, null, 2); // Check the stats properties. - assert_not_equals(report, null); + assert_not_equals(report, null, 'No report'); let sessionStat = getStatsRecordByType(report, 'peer-connection'); assert_not_equals(sessionStat, null, 'Did not find peer-connection stats'); - assert_exists(sessionStat, 'dataChannelsOpened'); - assert_equals(sessionStat.dataChannelsOpened, 1); + assert_exists(sessionStat, 'dataChannelsOpened', 'no dataChannelsOpened stat'); + // Once every 4000 or so tests, the datachannel won't be opened when the getStats + // function is done, so allow both 0 and 1 datachannels. + assert_true(sessionStat.dataChannelsOpened == 1 || sessionStat.dataChannelsOpened == 0, + 'dataChannelsOpened count wrong'); test.done(); }) .catch(test.step_func(function(e) { @@ -93,7 +96,6 @@ This test uses data only, and thus does not require fake media devices. // The createDataChannel is necessary and sufficient to make // sure the ICE connection be attempted. gFirstConnection.createDataChannel('channel'); - var atStep = 'Create offer'; gFirstConnection.createOffer() diff --git a/tests/wpt/web-platform-tests/webrtc/interfaces.html b/tests/wpt/web-platform-tests/webrtc/interfaces.https.html index e6e6846a7ca..e6e6846a7ca 100644 --- a/tests/wpt/web-platform-tests/webrtc/interfaces.html +++ b/tests/wpt/web-platform-tests/webrtc/interfaces.https.html diff --git a/tests/wpt/web-platform-tests/websockets/README.md b/tests/wpt/web-platform-tests/websockets/README.md index 0e5ffd685dc..b4f173a0361 100644 --- a/tests/wpt/web-platform-tests/websockets/README.md +++ b/tests/wpt/web-platform-tests/websockets/README.md @@ -1,2 +1,2 @@ These are the `WebSocket` tests for the -[Web sockets chapter of the HTML Standard](https://html.spec.whatwg.org/multipage/comms.html#network). +[Web sockets chapter of the HTML Standard](https://html.spec.whatwg.org/multipage/web-sockets.html#network). diff --git a/tests/wpt/web-platform-tests/worklets/animation-worklet-import.html b/tests/wpt/web-platform-tests/worklets/animation-worklet-import.html index 3457d445046..98b56d36250 100644 --- a/tests/wpt/web-platform-tests/worklets/animation-worklet-import.html +++ b/tests/wpt/web-platform-tests/worklets/animation-worklet-import.html @@ -4,11 +4,12 @@ <script src="/common/get-host-info.sub.js"></script> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> + <script src="resources/worklet-test-utils.js"></script> <script src="resources/import-tests.js"></script> </head> <body> <script> - runImportTests(window.animationWorklet); + runImportTests("animation"); </script> </body> </html> diff --git a/tests/wpt/web-platform-tests/worklets/animation-worklet-referrer.html b/tests/wpt/web-platform-tests/worklets/animation-worklet-referrer.html new file mode 100644 index 00000000000..494e06a8472 --- /dev/null +++ b/tests/wpt/web-platform-tests/worklets/animation-worklet-referrer.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<html> +<head> + <script src="/common/get-host-info.sub.js"></script> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="resources/worklet-test-utils.js"></script> + <script src="resources/referrer-tests.js"></script> +</head> +<body> +<script> + runReferrerTests("animation"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/worklets/paint-worklet-import.html b/tests/wpt/web-platform-tests/worklets/paint-worklet-import.html index f65e308af85..68e926c8c18 100644 --- a/tests/wpt/web-platform-tests/worklets/paint-worklet-import.html +++ b/tests/wpt/web-platform-tests/worklets/paint-worklet-import.html @@ -4,11 +4,12 @@ <script src="/common/get-host-info.sub.js"></script> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> + <script src="resources/worklet-test-utils.js"></script> <script src="resources/import-tests.js"></script> </head> <body> <script> - runImportTests(CSS.paintWorklet); + runImportTests("paint"); </script> </body> </html> diff --git a/tests/wpt/web-platform-tests/worklets/paint-worklet-referrer.html b/tests/wpt/web-platform-tests/worklets/paint-worklet-referrer.html new file mode 100644 index 00000000000..a4b5a6f498c --- /dev/null +++ b/tests/wpt/web-platform-tests/worklets/paint-worklet-referrer.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<html> +<head> + <script src="/common/get-host-info.sub.js"></script> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="resources/worklet-test-utils.js"></script> + <script src="resources/referrer-tests.js"></script> +</head> +<body> +<script> + runReferrerTests("paint"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/worklets/resources/import-tests.js b/tests/wpt/web-platform-tests/worklets/resources/import-tests.js index d40ed3ef855..b2374e761bd 100644 --- a/tests/wpt/web-platform-tests/worklets/resources/import-tests.js +++ b/tests/wpt/web-platform-tests/worklets/resources/import-tests.js @@ -1,8 +1,10 @@ // Runs a series of tests related to importing scripts on a worklet. // // Usage: -// runImportTests(workletType); -function runImportTests(worklet) { +// runImportTests("paint"); +function runImportTests(worklet_type) { + const worklet = get_worklet(worklet_type); + promise_test(() => { const kScriptURL = 'resources/empty-worklet-script.js'; return worklet.addModule(kScriptURL).then(undefined_arg => { diff --git a/tests/wpt/web-platform-tests/worklets/resources/referrer-tests.js b/tests/wpt/web-platform-tests/worklets/resources/referrer-tests.js new file mode 100644 index 00000000000..366bb9b5704 --- /dev/null +++ b/tests/wpt/web-platform-tests/worklets/resources/referrer-tests.js @@ -0,0 +1,96 @@ +function openWindow(url) { + return new Promise(resolve => { + let win = window.open(url, '_blank'); + add_completion_callback(() => win.close()); + window.onmessage = e => { + assert_equals(e.data, 'LOADED'); + resolve(win); + }; + }); +} + +// Runs a series of tests related to the referrer policy on a worklet. +// +// Usage: +// runReferrerTests("paint"); +function runReferrerTests(worklet_type) { + const worklet = get_worklet(worklet_type); + + promise_test(() => { + const kWindowURL = "resources/referrer-window.html" + + "?pipe=header(Referrer-Policy,no-referrer)"; + return openWindow(kWindowURL).then(win => { + const promise = new Promise(resolve => window.onmessage = resolve); + win.postMessage({ type: worklet_type, + referrer_policy: 'no-referrer', + is_cross_origin: false }, '*'); + return promise; + }).then(msg_event => assert_equals(msg_event.data, 'RESOLVED')); + }, 'Importing a same-origin script from a page that has "no-referrer" ' + + 'referrer policy should not send referrer.'); + + promise_test(() => { + const kWindowURL = "resources/referrer-window.html" + + "?pipe=header(Referrer-Policy,no-referrer)"; + return openWindow(kWindowURL).then(win => { + const promise = new Promise(resolve => window.onmessage = resolve); + win.postMessage({ type: worklet_type, + referrer_policy: 'no-referrer', + is_cross_origin: true }, '*'); + return promise; + }).then(msg_event => assert_equals(msg_event.data, 'RESOLVED')); + }, 'Importing a remote-origin script from a page that has "no-referrer" ' + + 'referrer policy should not send referrer.'); + + promise_test(() => { + const kWindowURL = 'resources/referrer-window.html' + + '?pipe=header(Referrer-Policy,origin)'; + return openWindow(kWindowURL).then(win => { + const promise = new Promise(resolve => window.onmessage = resolve); + win.postMessage({ type: worklet_type, + referrer_policy: 'origin', + is_cross_origin: false }, '*'); + return promise; + }).then(msg_event => assert_equals(msg_event.data, 'RESOLVED')); + }, 'Importing a same-origin script from a page that has "origin" ' + + 'referrer policy should send only an origin as referrer.'); + + promise_test(() => { + const kWindowURL = 'resources/referrer-window.html' + + '?pipe=header(Referrer-Policy,origin)'; + return openWindow(kWindowURL).then(win => { + const promise = new Promise(resolve => window.onmessage = resolve); + win.postMessage({ type: worklet_type, + referrer_policy: 'origin', + is_cross_origin: true }, '*'); + return promise; + }).then(msg_event => assert_equals(msg_event.data, 'RESOLVED')); + }, 'Importing a remote-origin script from a page that has "origin" ' + + 'referrer policy should send only an origin as referrer.'); + + promise_test(() => { + const kWindowURL = 'resources/referrer-window.html' + + '?pipe=header(Referrer-Policy,same-origin)'; + return openWindow(kWindowURL).then(win => { + const promise = new Promise(resolve => window.onmessage = resolve); + win.postMessage({ type: worklet_type, + referrer_policy: 'same-origin', + is_cross_origin: false }, '*'); + return promise; + }).then(msg_event => assert_equals(msg_event.data, 'RESOLVED')); + }, 'Importing a same-origin script from a page that has "same-origin" ' + + 'referrer policy should send referrer.'); + + promise_test(() => { + const kWindowURL = 'resources/referrer-window.html' + + '?pipe=header(Referrer-Policy,same-origin)'; + return openWindow(kWindowURL).then(win => { + const promise = new Promise(resolve => window.onmessage = resolve); + win.postMessage({ type: worklet_type, + referrer_policy: 'same-origin', + is_cross_origin: true }, '*'); + return promise; + }).then(msg_event => assert_equals(msg_event.data, 'RESOLVED')); + }, 'Importing a remote-origin script from a page that has "same-origin" ' + + 'referrer policy should not send referrer.'); +} diff --git a/tests/wpt/web-platform-tests/worklets/resources/referrer-window.html b/tests/wpt/web-platform-tests/worklets/resources/referrer-window.html new file mode 100644 index 00000000000..406b025ac55 --- /dev/null +++ b/tests/wpt/web-platform-tests/worklets/resources/referrer-window.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<html> +<head> + <title>Worklet: Referrer</title> + <script src="/common/get-host-info.sub.js"></script> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="worklet-test-utils.js"></script> +</head> +<body> +<script> +window.onmessage = e => { + const worklet_type = e.data.type; + const is_cross_origin = e.data.is_cross_origin; + + const params = new URLSearchParams; + params.append('referrer_policy', e.data.referrer_policy) + params.append('source_origin', get_host_info().HTTP_ORIGIN); + + let script_url = ''; + if (is_cross_origin) { + params.append('is_cross_origin', 'true') + script_url = get_host_info().HTTP_REMOTE_ORIGIN + '/worklets/resources/'; + } + script_url += 'referrer.py?' + params; + + get_worklet(worklet_type).addModule(script_url) + .then(() => window.opener.postMessage('RESOLVED', '*')) + .catch(e => window.opener.postMessage(e.message, '*')); +}; + +window.opener.postMessage('LOADED', '*'); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/worklets/resources/referrer.py b/tests/wpt/web-platform-tests/worklets/resources/referrer.py new file mode 100644 index 00000000000..62dd4a12ff4 --- /dev/null +++ b/tests/wpt/web-platform-tests/worklets/resources/referrer.py @@ -0,0 +1,30 @@ +# Returns a valid response when request's |referrer| matches |referrer_policy|. +def main(request, response): + referrer = request.headers.get("referer", None) + referrer_policy = request.GET.first("referrer_policy") + source_origin = request.GET.first("source_origin") + is_cross_origin = request.GET.first("is_cross_origin", False) + + response_headers = [("Content-Type", "text/javascript"), + ("Access-Control-Allow-Origin", source_origin)]; + + # When the referrer policy is "no-referrer", the referrer header shouldn't + # be sent. + if referrer_policy == "no-referrer" and not referrer: + return (200, response_headers, "") + + # When the referrer policy is "origin", the referrer header should contain + # only the origin. Note that |referrer| contains a trailing slash, while + # |source_origin| doesn't. + if referrer_policy == "origin" and referrer == source_origin + "/": + return (200, response_headers, "") + + # When the referrer policy is "same-origin", the referrer header should be + # sent only for a same-origin request. + if referrer_policy == "same-origin": + if is_cross_origin and not referrer: + return (200, response_headers, "") + if not is_cross_origin and referrer: + return (200, response_headers, "") + + return (404) diff --git a/tests/wpt/web-platform-tests/worklets/resources/worklet-test-utils.js b/tests/wpt/web-platform-tests/worklets/resources/worklet-test-utils.js new file mode 100644 index 00000000000..4912dadb9d5 --- /dev/null +++ b/tests/wpt/web-platform-tests/worklets/resources/worklet-test-utils.js @@ -0,0 +1,8 @@ +// Returns a reference to a worklet object corresponding to a given type. +function get_worklet(type) { + if (type == 'paint') + return CSS.paintWorklet; + if (type == 'animation') + return window.animationWorklet; + return undefined; +} |