Auto merge of #25573 - servo-wpt-sync:wpt_update_22-01-2020, r=jdm

Sync WPT with upstream (22-01-2020)

Automated downstream sync of changes from upstream as of 22-01-2020.
[no-wpt-sync]
r? @servo-wpt-sync
This commit is contained in:
bors-servo 2020-01-22 09:57:43 -05:00 committed by GitHub
commit 24674687ac
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
189 changed files with 2594 additions and 668 deletions

View file

@ -2,9 +2,6 @@
[Revoke blob URL after creating Request, will fetch]
expected: FAIL
[Revoke blob URL after calling fetch, fetch should succeed]
expected: FAIL
[url-with-fetch.any.html]
[Revoke blob URL after creating Request, will fetch]

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,4 @@
[CaretPosition-001.html]
[Element at (400, 100)]
expected: FAIL

View file

@ -318,18 +318,18 @@
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*]
[<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL

View file

@ -56,6 +56,3 @@
[separate text/javascript x/x]
expected: FAIL
[separate text/javascript;charset=windows-1252 error text/javascript]
expected: FAIL

View file

@ -11,6 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
[X-Content-Type-Options%3A%20'NosniFF']
[X-Content-Type-Options%3A%20%2Cnosniff]
expected: FAIL

View file

@ -1,6 +1,6 @@
[embedded-credentials.tentative.sub.html]
type: testharness
expected: CRASH
expected: TIMEOUT
[Embedded credentials are treated as network errors.]
expected: FAIL
@ -8,7 +8,7 @@
expected: FAIL
[Embedded credentials are treated as network errors in new windows.]
expected: TIMEOUT
expected: FAIL
[Embedded credentials matching the top-level are treated as network errors for cross-origin URLs.]
expected: TIMEOUT

View file

@ -0,0 +1,4 @@
[traverse_the_history_2.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -0,0 +1,4 @@
[traverse_the_history_4.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -1,5 +1,6 @@
[location-protocol-setter-non-broken.html]
type: testharness
expected: CRASH
[Set data URL frame location.protocol to gopher]
expected: FAIL

View file

@ -1,4 +1,8 @@
[skip-document-with-fragment.html]
expected: TIMEOUT
[Autofocus elements in iframed documents with URL fragments should be skipped.]
expected: FAIL
[Autofocus elements in top-level browsing context's documents with URI fragments should be skipped.]
expected: TIMEOUT

View file

@ -1,6 +1,6 @@
[iframe_sandbox_popups_escaping-3.html]
type: testharness
expected: CRASH
expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT

View file

@ -0,0 +1,2 @@
[script-onerror-insertion-point-2.html]
expected: TIMEOUT

View file

@ -1,5 +1,5 @@
[ignore-opens-during-unload.window.html]
expected: CRASH
expected: TIMEOUT
[ignore-opens-during-unload]
expected: FAIL

View file

@ -0,0 +1,4 @@
[iframe-inheritance-document-write.html]
[Referrer Policy: iframes with document.write()]
expected: FAIL

View file

@ -0,0 +1,7 @@
[iframe-inheritance-javascript-child.html]
[Referrer Policy: iframes with javascript url reuse referrer policy]
expected: FAIL
[Referrer Policy: iframes with javascript url reuse referrer policy 2]
expected: FAIL

View file

@ -0,0 +1,4 @@
[iframe-inheritance-javascript.html]
[Referrer Policy: iframes with javascript url reuse referrer policy]
expected: FAIL

View file

@ -1,5 +1,4 @@
[iframe-inheritance-srcdoc.html]
expected: TIMEOUT
[iframes srcdoc correctly inherit the ancestor's referrer policy]
expected: NOTRUN
expected: FAIL

View file

@ -1,5 +1,4 @@
[crossorigin-sandwich-TAO.sub.html]
expected: ERROR
[There should be one entry.]
expected: FAIL

View file

@ -1,5 +1,5 @@
[xrSession_input_events_end.https.html]
expected: TIMEOUT
[Calling end during an input callback stops processing at the right time]
expected: FAIL
expected: TIMEOUT

View file

@ -19,6 +19,7 @@ trigger:
# These are all the branches referenced in the jobs that follow.
- epochs/daily
- epochs/three_hourly
- triggers/edge_stable
- triggers/edge_dev
- triggers/edge_canary
- triggers/safari_stable
@ -239,6 +240,42 @@ jobs:
condition: always()
- template: tools/ci/azure/cleanup_win10.yml
- job: results_edge_stable
displayName: 'all tests: Edge Stable'
condition: |
or(eq(variables['Build.SourceBranch'], 'refs/heads/epochs/daily'),
eq(variables['Build.SourceBranch'], 'refs/heads/triggers/edge_stable'),
and(eq(variables['Build.Reason'], 'Manual'), variables['run_all_edge_stable']))
strategy:
parallel: 10 # chosen to make runtime ~2h
timeoutInMinutes: 180
pool:
name: 'Hosted Windows Client'
steps:
- template: tools/ci/azure/system_info.yml
- template: tools/ci/azure/checkout.yml
- template: tools/ci/azure/install_python.yml
- template: tools/ci/azure/pip_install.yml
parameters:
packages: virtualenv
- template: tools/ci/azure/install_certs.yml
- template: tools/ci/azure/install_edge.yml
parameters:
channel: stable
- template: tools/ci/azure/update_hosts.yml
- template: tools/ci/azure/update_manifest.yml
- script: python ./wpt run --yes --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --install-fonts --this-chunk $(System.JobPositionInPhase) --total-chunks $(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --log-mach - --log-mach-level info --channel stable edgechromium
displayName: 'Run tests (Edge Stable)'
- task: PublishBuildArtifacts@1
displayName: 'Publish results'
inputs:
artifactName: 'edge-stable-results'
- template: tools/ci/azure/cleanup_win10.yml
- template: tools/ci/azure/fyi_hook.yml
parameters:
dependsOn: results_edge_stable
artifactName: edge-stable-results
- job: results_edge_dev
displayName: 'all tests: Edge Dev'
condition: |

View file

@ -35,14 +35,15 @@ document.fonts.ready.then(() => {
ctx.direction = 'ltr';
ctx.align = 'left'
ctx.baseline = 'alphabetic'
// Some platforms may return '-0'.
_assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxLeft)", "0");
// Different platforms may render text slightly different.
// Values that are nominally expected to be zero might actually vary by a pixel or so
// if the UA accounts for antialiasing at glyph edges, so we allow a slight deviation.
_assert(Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1, "Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1");
_assert(ctx.measureText('A').actualBoundingBoxRight >= 50, "ctx.measureText('A').actualBoundingBoxRight >= 50");
_assert(ctx.measureText('A').actualBoundingBoxAscent >= 35, "ctx.measureText('A').actualBoundingBoxAscent >= 35");
_assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxDescent), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxDescent)", "0");
_assert(Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1, "Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1");
_assertSame(Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft)", "0");
_assert(Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1, "Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1");
_assert(ctx.measureText('ABCD').actualBoundingBoxRight >= 200, "ctx.measureText('ABCD').actualBoundingBoxRight >= 200");
_assert(ctx.measureText('ABCD').actualBoundingBoxAscent >= 85, "ctx.measureText('ABCD').actualBoundingBoxAscent >= 85");
_assert(ctx.measureText('ABCD').actualBoundingBoxDescent >= 37, "ctx.measureText('ABCD').actualBoundingBoxDescent >= 37");

View file

@ -1088,14 +1088,15 @@
ctx.direction = 'ltr';
ctx.align = 'left'
ctx.baseline = 'alphabetic'
// Some platforms may return '-0'.
@assert Math.abs(ctx.measureText('A').actualBoundingBoxLeft) === 0;
// Different platforms may render text slightly different.
// Values that are nominally expected to be zero might actually vary by a pixel or so
// if the UA accounts for antialiasing at glyph edges, so we allow a slight deviation.
@assert Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1;
@assert ctx.measureText('A').actualBoundingBoxRight >= 50;
@assert ctx.measureText('A').actualBoundingBoxAscent >= 35;
@assert Math.abs(ctx.measureText('A').actualBoundingBoxDescent) === 0;
@assert Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1;
@assert Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) === 0;
@assert Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1;
@assert ctx.measureText('ABCD').actualBoundingBoxRight >= 200;
@assert ctx.measureText('ABCD').actualBoundingBoxAscent >= 85;
@assert ctx.measureText('ABCD').actualBoundingBoxDescent >= 37;

View file

@ -3,16 +3,15 @@ The web-platform-tests Project
[![Taskcluster CI Status](https://community-tc.services.mozilla.com/api/github/v1/repository/web-platform-tests/wpt/master/badge.svg)](https://community-tc.services.mozilla.com/api/github/v1/repository/web-platform-tests/wpt/master/latest)
The web-platform-tests Project is a W3C-coordinated attempt to build a
cross-browser test suite for the Web-platform stack. Writing tests in a way
that allows them to be run in all browsers gives browser projects
confidence that they are shipping software that is compatible with other
implementations, and that later implementations will be compatible with
their implementations. This in turn gives Web authors/developers
confidence that they can actually rely on the Web platform to deliver on
the promise of working across browsers and devices without needing extra
layers of abstraction to paper over the gaps left by specification
editors and implementors.
The web-platform-tests Project is a cross-browser test suite for the
Web-platform stack. Writing tests in a way that allows them to be run in all
browsers gives browser projects confidence that they are shipping software that
is compatible with other implementations, and that later implementations will
be compatible with their implementations. This in turn gives Web
authors/developers confidence that they can actually rely on the Web platform
to deliver on the promise of working across browsers and devices without
needing extra layers of abstraction to paper over the gaps left by
specification editors and implementors.
The most important sources of information and activity are:

View file

@ -0,0 +1,7 @@
<!doctype HTML>
<title>Backround color transparency on the root element blends with a white backdrop</title>
<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org">
<link rel="help" href="https://drafts.fxtf.org/compositing/#pagebackdrop">
<html style="background: rgb(150, 150, 150)">
<div id=spacer style="width: 100px; height: 3000px"></div>
</html>

View file

@ -0,0 +1,8 @@
<!doctype HTML>
<title>Backround color transparency on the root element blends with a white backdrop</title>
<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org">
<link rel="help" href="https://drafts.fxtf.org/compositing/#pagebackdrop">
<link rel="match" href="root-element-background-transparency-ref.html">
<html style="background: rgba(45, 45, 45, 0.5)">
<div id=spacer style="width: 100px; height: 3000px"></div>
</html>

View file

@ -0,0 +1,6 @@
<!doctype HTML>
<title>Blend-mode on the root stacking context blends with the root element's background.</title>
<html style="background: #000">
<div style="width: 50px; height: 50px; background: #000"></div>
<div id=spacer style="width: 100px; height: 3000px"></div>
</html>

View file

@ -0,0 +1,9 @@
<!doctype HTML>
<title>Blend-mode on the root stacking context blends with the root element's background.</title>
<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org">
<link rel="help" href="https://drafts.fxtf.org/compositing/#pagebackdrop">
<link rel="match" href="root-element-blend-mode-ref.html">
<html style="background: #000;">
<div style="width: 50px; height: 50px; background: #E33; mix-blend-mode: multiply"></div>
<div id=spacer style="width: 100px; height: 3000px"></div>
</html>

View file

@ -0,0 +1,8 @@
<!doctype HTML>
<title>A filter on the root element applies to its background</title>
<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org">
<link rel="help" href="https://drafts.fxtf.org/compositing/#pagebackdrop">
<html style="background: #FFF">
<div style="width: 50px; height: 50px; background: #1CC"></div>
<div id=spacer style="width: 100px; height: 3000px"></div>
</html>

View file

@ -0,0 +1,9 @@
<!doctype HTML>
<title>A filter on the root element applies to its background</title>
<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org">
<link rel="help" href="https://drafts.fxtf.org/compositing/#pagebackdrop">
<link rel="match" href="root-element-filter-ref.html">
<html style="filter: invert(1); background: #000">
<div style="width: 50px; height: 50px; background: #E33"></div>
<div id=spacer style="width: 100px; height: 3000px"></div>
</html>

View file

@ -0,0 +1,7 @@
<!doctype HTML>
<title>Opacity on the root element blends with a white backdrop</title>
<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org">
<link rel="help" href="https://drafts.fxtf.org/compositing/#pagebackdrop">
<html style="background: #DDD">
<div id=spacer style="width: 100px; height: 3000px"></div>
</html>

View file

@ -0,0 +1,8 @@
<!doctype HTML>
<title>Opacity on the root element blends with a white background</title>
<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org">
<link rel="help" href="https://drafts.fxtf.org/compositing/#pagebackdrop">
<link rel="match" href="root-element-opacity-ref.html">
<html style="background: #BBB; opacity: 0.5">
<div id=spacer style="width: 100px; height: 3000px"></div>
</html>

View file

@ -0,0 +1,6 @@
<!DOCTYPE html>
<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/">
<meta name="assert" content="This test passes if the renderer does not crash."/>
<div style="display: flex;">
<div style="max-width: 0px; overflow: scroll;"></div>
</div>

View file

@ -0,0 +1,83 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>text-underline-position reference file</title>
<style>
.outer {
margin: 1em;
clear: left;
}
.outer > div {
margin: .25em;
padding: .25em;
float: left;
border: 1px dotted gray;
}
u {
text-decoration: 2px green underline;
text-underline-offset: .25em;
}
.test1 > div {
writing-mode: initial;
}
.test2 > div {
writing-mode: sideways-rl;
}
.test3 > div {
writing-mode: sideways-lr;
}
.test4 > div {
writing-mode: vertical-rl;
text-orientation: sideways;
}
.test5 > div {
writing-mode: vertical-lr;
text-orientation: sideways;
}
</style>
</head>
<body>
<p class="instructions">Test passes if the left and right boxes match in each case:</p>
<div class="outer test1">
<div>
<p><u>underlined</u></p>
</div>
<div>
<p><u>underlined</u></p>
</div>
</div>
<div class="outer test2">
<div>
<p><u>underlined</u></p>
</div>
<div>
<p><u>underlined</u></p>
</div>
</div>
<div class="outer test3">
<div>
<p><u>underlined</u></p>
</div>
<div>
<p><u>underlined</u></p>
</div>
</div>
<div class="outer test4">
<div>
<p><u>underlined</u></p>
</div>
<div>
<p><u>underlined</u></p>
</div>
</div>
<div class="outer test5">
<div>
<p><u>underlined</u></p>
</div>
<div>
<p><u>underlined</u></p>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,90 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>text-underline-position test case</title>
<meta name="assert" content="text-underline-position:left has no effect in horizontal typographic mode">
<link rel="author" title="Jonathan Kew" href="mailto:jkew@mozilla.com">
<link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#underline-left">
<link rel="match" href="reference/text-underline-position-001-ref.html">
<style>
.outer {
margin: 1em;
clear: left;
}
.outer > div {
margin: .25em;
padding: .25em;
float: left;
border: 1px dotted gray;
}
u {
text-decoration: 2px green underline;
text-underline-offset: .25em;
}
.test1 > div {
writing-mode: initial;
}
.test2 > div {
writing-mode: sideways-rl;
}
.test3 > div {
writing-mode: sideways-lr;
}
.test4 > div {
writing-mode: vertical-rl;
text-orientation: sideways;
}
.test5 > div {
writing-mode: vertical-lr;
text-orientation: sideways;
}
.test {
text-underline-position: left;
}
</style>
</head>
<body>
<p class="instructions">Test passes if the left and right boxes match in each case:</p>
<div class="outer test1">
<div>
<p><u class="test">underlined</u></p>
</div>
<div>
<p><u>underlined</u></p>
</div>
</div>
<div class="outer test2">
<div>
<p><u class="test">underlined</u></p>
</div>
<div>
<p><u>underlined</u></p>
</div>
</div>
<div class="outer test3">
<div>
<p><u class="test">underlined</u></p>
</div>
<div>
<p><u>underlined</u></p>
</div>
</div>
<div class="outer test4">
<div>
<p><u class="test">underlined</u></p>
</div>
<div>
<p><u>underlined</u></p>
</div>
</div>
<div class="outer test5">
<div>
<p><u class="test">underlined</u></p>
</div>
<div>
<p><u>underlined</u></p>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,90 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>text-underline-position test case</title>
<meta name="assert" content="text-underline-position:right has no effect in horizontal typographic mode">
<link rel="author" title="Jonathan Kew" href="mailto:jkew@mozilla.com">
<link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#underline-right">
<link rel="match" href="reference/text-underline-position-001-ref.html">
<style>
.outer {
margin: 1em;
clear: left;
}
.outer > div {
margin: .25em;
padding: .25em;
float: left;
border: 1px dotted gray;
}
u {
text-decoration: 2px green underline;
text-underline-offset: .25em;
}
.test1 > div {
writing-mode: initial;
}
.test2 > div {
writing-mode: sideways-rl;
}
.test3 > div {
writing-mode: sideways-lr;
}
.test4 > div {
writing-mode: vertical-rl;
text-orientation: sideways;
}
.test5 > div {
writing-mode: vertical-lr;
text-orientation: sideways;
}
.test {
text-underline-position: right;
}
</style>
</head>
<body>
<p class="instructions">Test passes if the left and right boxes match in each case:</p>
<div class="outer test1">
<div>
<p><u class="test">underlined</u></p>
</div>
<div>
<p><u>underlined</u></p>
</div>
</div>
<div class="outer test2">
<div>
<p><u class="test">underlined</u></p>
</div>
<div>
<p><u>underlined</u></p>
</div>
</div>
<div class="outer test3">
<div>
<p><u class="test">underlined</u></p>
</div>
<div>
<p><u>underlined</u></p>
</div>
</div>
<div class="outer test4">
<div>
<p><u class="test">underlined</u></p>
</div>
<div>
<p><u>underlined</u></p>
</div>
</div>
<div class="outer test5">
<div>
<p><u class="test">underlined</u></p>
</div>
<div>
<p><u>underlined</u></p>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>CSS Transforms: Reference Translate gradient background on root element</title>
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<style>
html {
background: green;
}
</style>
<div style="height: 400vh;"></div>
</html>

View file

@ -0,0 +1,17 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>CSS Transforms: Translate gradient background on root element</title>
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-transforms/#transform-rendering">
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=988446">
<link rel="match" href="transform-translate-background-001-ref.html">
<meta name="assert" content="Checks that the linear gradient is modified when you vertically translate the root element. The test passes if you see only green.">
<style>
html {
background: linear-gradient(to bottom, red 0%, red 50%, green 50%, green 100%);
transform: translate(0, -250vh);
}
</style>
<div style="height: 400vh;"></div>
</html>

View file

@ -0,0 +1,23 @@
<!DOCTYPE html>
<html class="reftest-wait">
<meta charset="utf-8">
<title>CSS Transforms: Dynamically translate gradient background on root element</title>
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-transforms/#transform-rendering">
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=988446">
<link rel="match" href="transform-translate-background-001-ref.html">
<meta name="assert" content="Checks that the linear gradient is modified when you dynamically translate the root element. The test passes if you see only green.">
<script src="/common/reftest-wait.js"></script>
<style>
html {
background: linear-gradient(to bottom, red 0%, red 50%, green 50%, green 100%);
}
</style>
<div style="height: 400vh;"></div>
<script>
requestAnimationFrame(() => requestAnimationFrame(() => {
document.documentElement.style.transform = "translate(0, -250vh)";
takeScreenshot();
}));
</script>
</html>

View file

@ -1,15 +1,14 @@
# web-platform-tests documentation
The web-platform-tests project is a W3C-coordinated attempt to build a
cross-browser test suite for [the Web-platform
stack](https://platform.html5.org). Writing tests in a way that allows them to
be run in all browsers gives browser projects confidence that they are shipping
software which is compatible with other implementations, and that later
implementations will be compatible with their implementations. This in turn
gives Web authors/developers confidence that they can actually rely on the Web
platform to deliver on the promise of working across browsers and devices
without needing extra layers of abstraction to paper over the gaps left by
specification editors and implementors.
The web-platform-tests project is a cross-browser test suite for [the
Web-platform stack](https://platform.html5.org). Writing tests in a way that
allows them to be run in all browsers gives browser projects confidence that
they are shipping software which is compatible with other implementations, and
that later implementations will be compatible with their implementations. This
in turn gives Web authors/developers confidence that they can actually rely on
the Web platform to deliver on the promise of working across browsers and
devices without needing extra layers of abstraction to paper over the gaps left
by specification editors and implementors.
The most important sources of information and activity are:

View file

@ -180,8 +180,12 @@ In the example above, `foo()` returns a Promise that resolves with the string
"foo". The `test_function` passed into `promise_test` invokes `foo` and attaches
a resolve reaction that verifies the returned value.
Note that in the promise chain constructed in `test_function` assertions don't
need to be wrapped in `step` or `step_func` calls.
Note that in the promise chain constructed in `test_function`
assertions don't need to be wrapped in `step` or `step_func`
calls. However when mixing event handlers and `promise_test`, the
event handler callback functions *do* need to be wrapped since an
exception in these functions does not cause the promise chain to
reject.
Unlike Asynchronous Tests, Promise Tests don't start running until after the
previous Promise Test finishes. [Under rare

View file

@ -7,6 +7,7 @@
<meta name="help" href="https://fetch.spec.whatwg.org/#http-network-or-cache-fetch">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/get-host-info.sub.js"></script>
</head>
<body>
<script src="../resources/utils.js"></script>

View file

@ -1,6 +1,7 @@
if (this.document === undefined) {
importScripts("/resources/testharness.js");
importScripts("../resources/utils.js");
importScripts("/common/get-host-info.sub.js");
// A nested importScripts() with a referrer-policy should have no effect
// on overall worker policy.
@ -8,7 +9,7 @@ if (this.document === undefined) {
}
var referrerOrigin = location.origin + '/';
var fetchedUrl = "https://{{domains[www]}}:{{ports[https][0]}}" + dirname(location.pathname) + RESOURCES_DIR + "inspect-headers.py?cors&headers=referer";
var fetchedUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "inspect-headers.py?cors&headers=referer";
promise_test(function(test) {
return fetch(fetchedUrl).then(function(resp) {

View file

@ -20,15 +20,17 @@ async_test(t => {
const blobContents = `<script>
const w = window.open("${get_host_info().HTTPS_REMOTE_ORIGIN}/html/cross-origin-opener-policy/resources/coop-coep.py?coop=x&coep=x&channel=${bc.name}", "${bc.name}");
window.opener.furtherPopup = w;
// w will be closed by its postback iframe. When out of process,
// window.close() does not work.
window.opener.test.add_cleanup(() => w.close());
<\/script>`;
const blob = new Blob([blobContents], { type: "text/html" });
const blobURL = URL.createObjectURL(blob);
const popup = window.open(blobURL);
t.add_cleanup(() => popup.close());
t.add_cleanup(() => {
// Close the popups once the test is complete.
// The browsing context of the second popup is closed hence use the
// broadcast channel to trigger the closure.
bc.postMessage("close");
popup.close();
});
popup.onload = t.step_func(() => {
assert_equals(popup.opener, window);
assert_equals(popup.location.href, blobURL);

View file

@ -1,8 +1,12 @@
<!doctype html>
<title>Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy: a navigating popup</title>
<meta content=timeout value=long>
<meta name=timeout content=long>
<meta name=variant content=?0-1>
<meta name=variant content=?2-3>
<meta name=variant content=?4-last>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/subset-tests.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="resources/common.js"></script>
<script>
@ -35,7 +39,7 @@
"title": "coop unsafe-none/coep",
"coop": "unsafe-none",
"coep": "require-corp",
"opener": true
"opener": false
},
{
"title": "coop unsafe-none/no coep",
@ -43,7 +47,12 @@
"coep": "",
"opener": false
}
].forEach(variant => {
].forEach((variant, i) => {
// Only run specified variants
if (!shouldRunSubTest(i)) {
return;
}
["same-origin", "same-site"].forEach(site => {
const title = `Popup navigating to ${site} with ${variant.title}`;
const channel = title.replace(/ /g,"-");

View file

@ -1,6 +1,6 @@
<!doctype html>
<title>Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy: redirects</title>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>
@ -47,7 +47,7 @@ const coopCOEPPath = new URL("resources/coop-coep.py", window.location).pathname
"redirectCOEP": "require-corp",
"coop": "same-origin",
"coep": "require-corp",
"opener": true
"opener": false
},
{
"title": "coop unsafe-none/coep to coop unsafe-inherit/coep",
@ -55,7 +55,7 @@ const coopCOEPPath = new URL("resources/coop-coep.py", window.location).pathname
"redirectCOEP": "require-corp",
"coop": "unsafe-none",
"coep": "require-corp",
"opener": true
"opener": false
}
].forEach(variant => {
const title = `Redirect from ${variant.title}`;

View file

@ -1,6 +1,6 @@
<!doctype html>
<title>Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy</title>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>
@ -17,7 +17,7 @@
"title": "popup with coop unsafe-none/coep",
"coop": "unsafe-none",
"coep": "require-corp",
"opener": true
"opener": false
},
{
"title": "popup with coop unsafe-none without coep",

View file

@ -1,6 +1,6 @@
<!doctype html>
<title>Cross-Origin-Opener-Policy: a navigating popup that then goes back in history</title>
<meta name="timeout" content="long">
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -12,7 +12,12 @@ async_test(t => {
const noCOOP = "/common/blank.html";
const popupName = token();
const popup = window.open(noCOOP, popupName);
t.add_cleanup(() => popup.close());
// Close the popup once the test is complete.
// The browsing context is closed after the navigation hence use the broadcast channel
// to trigger the closure.
t.add_cleanup(() => {
bc.postMessage("close");
});
popup.onload = t.step_func(() => {
assert_equals(popup.name, popupName);
assert_equals(new URL(popup.document.URL).pathname, noCOOP);
@ -23,6 +28,7 @@ async_test(t => {
// string comparison to "" to keep the random token out of error messages.
assert_equals(payload.name.length, 0);
assert_false(payload.opener);
assert_true(popup.closed);
});
const coop = `resources/coop-coep.py?coop=same-origin&coep=&channel=${channel.name}`;
popup.location = coop;

View file

@ -1,6 +1,6 @@
<!doctype html>
<title>Historical: Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy: a navigating popup</title>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -1,6 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -1,6 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -1,6 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -1,6 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -1,6 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -1,6 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -1,6 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -1,6 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -1,6 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -1,5 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>
@ -8,15 +9,6 @@
<div id=log></div>
<script>
[
[SAME_ORIGIN, SAME_ORIGIN, "same-origin", false, false],
[SAME_SITE, SAME_ORIGIN, "same-origin", false, false],
[CROSS_ORIGIN, SAME_ORIGIN, "same-origin", false, false],
[SAME_ORIGIN, SAME_SITE, "same-origin", false, false],
[SAME_SITE, SAME_SITE, "same-origin", false, false],
[CROSS_ORIGIN, SAME_SITE, "same-origin", false, false],
[SAME_ORIGIN, CROSS_ORIGIN, "same-origin", false, false],
[SAME_SITE, CROSS_ORIGIN, "same-origin", false, false],
[CROSS_ORIGIN, CROSS_ORIGIN, "same-origin", false, false],
[SAME_ORIGIN, SAME_ORIGIN, "same-origin-allow-popups", true, true],
[SAME_SITE, SAME_ORIGIN, "same-origin-allow-popups", false, false],
[CROSS_ORIGIN, SAME_ORIGIN, "same-origin-allow-popups", false, false],
@ -26,15 +18,6 @@
[SAME_ORIGIN, CROSS_ORIGIN, "same-origin-allow-popups", false, false],
[SAME_SITE, CROSS_ORIGIN, "same-origin-allow-popups", false, false],
[CROSS_ORIGIN, CROSS_ORIGIN, "same-origin-allow-popups", false, false],
[SAME_ORIGIN, SAME_ORIGIN, "", true, true],
[SAME_SITE, SAME_ORIGIN, "", true, true],
[CROSS_ORIGIN, SAME_ORIGIN, "", true, true],
[SAME_ORIGIN, SAME_SITE, "", true, true],
[SAME_SITE, SAME_SITE, "", true, true],
[CROSS_ORIGIN, SAME_SITE, "", true, true],
[SAME_ORIGIN, CROSS_ORIGIN, "", true, true],
[SAME_SITE, CROSS_ORIGIN, "", true, true],
[CROSS_ORIGIN, CROSS_ORIGIN, "", true, true],
].forEach( value => {
run_coop_test_iframe("same-origin-allow-popups", value[0], value[1], value[2], value[3], value[4]);
});

View file

@ -0,0 +1,26 @@
<!doctype html>
<meta charset=utf-8>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="resources/common.js"></script>
<div id=log></div>
<script>
[
[SAME_ORIGIN, SAME_ORIGIN, "same-origin", false, false],
[SAME_SITE, SAME_ORIGIN, "same-origin", false, false],
[CROSS_ORIGIN, SAME_ORIGIN, "same-origin", false, false],
[SAME_ORIGIN, SAME_SITE, "same-origin", false, false],
[SAME_SITE, SAME_SITE, "same-origin", false, false],
[CROSS_ORIGIN, SAME_SITE, "same-origin", false, false],
[SAME_ORIGIN, CROSS_ORIGIN, "same-origin", false, false],
[SAME_SITE, CROSS_ORIGIN, "same-origin", false, false],
[CROSS_ORIGIN, CROSS_ORIGIN, "same-origin", false, false],
].forEach( value => {
run_coop_test_iframe("same-origin-allow-popups", value[0], value[1], value[2], value[3], value[4]);
});
</script>

View file

@ -0,0 +1 @@
Cross-Origin-Opener-Policy: same-origin-allow-popups

View file

@ -0,0 +1,26 @@
<!doctype html>
<meta charset=utf-8>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="resources/common.js"></script>
<div id=log></div>
<script>
[
[SAME_ORIGIN, SAME_ORIGIN, "", true, true],
[SAME_SITE, SAME_ORIGIN, "", true, true],
[CROSS_ORIGIN, SAME_ORIGIN, "", true, true],
[SAME_ORIGIN, SAME_SITE, "", true, true],
[SAME_SITE, SAME_SITE, "", true, true],
[CROSS_ORIGIN, SAME_SITE, "", true, true],
[SAME_ORIGIN, CROSS_ORIGIN, "", true, true],
[SAME_SITE, CROSS_ORIGIN, "", true, true],
[CROSS_ORIGIN, CROSS_ORIGIN, "", true, true],
].forEach( value => {
run_coop_test_iframe("same-origin-allow-popups", value[0], value[1], value[2], value[3], value[4]);
});
</script>

View file

@ -0,0 +1 @@
Cross-Origin-Opener-Policy: same-origin-allow-popups

View file

@ -0,0 +1,25 @@
<!doctype html>
<meta charset=utf-8>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="resources/common.js"></script>
<div id=log></div>
<script>
[
[SAME_ORIGIN, SAME_ORIGIN, "same-origin", true, true],
[SAME_SITE, SAME_ORIGIN, "same-origin", false, false],
[CROSS_ORIGIN, SAME_ORIGIN, "same-origin", false, false],
[SAME_ORIGIN, SAME_SITE, "same-origin", false, false],
[SAME_SITE, SAME_SITE, "same-origin", false, false],
[CROSS_ORIGIN, SAME_SITE, "same-origin", false, false],
[SAME_ORIGIN, CROSS_ORIGIN, "same-origin", false, false],
[SAME_SITE, CROSS_ORIGIN, "same-origin", false, false],
[CROSS_ORIGIN, CROSS_ORIGIN, "same-origin", false, false],
].forEach( value => {
run_coop_test_iframe("same-origin", value[0], value[1], value[2], value[3], value[4]);
});
</script>

View file

@ -1,5 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>
@ -8,15 +9,6 @@
<div id=log></div>
<script>
[
[SAME_ORIGIN, SAME_ORIGIN, "same-origin", true, true],
[SAME_SITE, SAME_ORIGIN, "same-origin", false, true],
[CROSS_ORIGIN, SAME_ORIGIN, "same-origin", false, true],
[SAME_ORIGIN, SAME_SITE, "same-origin", false, false],
[SAME_SITE, SAME_SITE, "same-origin", false, true],
[CROSS_ORIGIN, SAME_SITE, "same-origin", false, true],
[SAME_ORIGIN, CROSS_ORIGIN, "same-origin", false, false],
[SAME_SITE, CROSS_ORIGIN, "same-origin", false, true],
[CROSS_ORIGIN, CROSS_ORIGIN, "same-origin", false, true],
[SAME_ORIGIN, SAME_ORIGIN, "", false, false],
[SAME_SITE, SAME_ORIGIN, "", false, true],
[CROSS_ORIGIN, SAME_ORIGIN, "", false, true],

View file

@ -1,5 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>
@ -17,15 +18,6 @@
[SAME_ORIGIN, CROSS_ORIGIN, "same-origin", false, false],
[SAME_SITE, CROSS_ORIGIN, "same-origin", false, false],
[CROSS_ORIGIN, CROSS_ORIGIN, "same-origin", false, false],
[SAME_ORIGIN, SAME_ORIGIN, "", true, true],
[SAME_SITE, SAME_ORIGIN, "", true, true],
[CROSS_ORIGIN, SAME_ORIGIN, "", true, true],
[SAME_ORIGIN, SAME_SITE, "", true, true],
[SAME_SITE, SAME_SITE, "", true, true],
[CROSS_ORIGIN, SAME_SITE, "", true, true],
[SAME_ORIGIN, CROSS_ORIGIN, "", true, true],
[SAME_SITE, CROSS_ORIGIN, "", true, true],
[CROSS_ORIGIN, CROSS_ORIGIN, "", true, true],
].forEach( value => {
run_coop_test_iframe("unsafe-none", value[0], value[1], value[2], value[3], value[4]);
});

View file

@ -0,0 +1,25 @@
<!doctype html>
<meta charset=utf-8>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="resources/common.js"></script>
<div id=log></div>
<script>
[
[SAME_ORIGIN, SAME_ORIGIN, "", true, true],
[SAME_SITE, SAME_ORIGIN, "", true, true],
[CROSS_ORIGIN, SAME_ORIGIN, "", true, true],
[SAME_ORIGIN, SAME_SITE, "", true, true],
[SAME_SITE, SAME_SITE, "", true, true],
[CROSS_ORIGIN, SAME_SITE, "", true, true],
[SAME_ORIGIN, CROSS_ORIGIN, "", true, true],
[SAME_SITE, CROSS_ORIGIN, "", true, true],
[CROSS_ORIGIN, CROSS_ORIGIN, "", true, true],
].forEach( value => {
run_coop_test_iframe("unsafe-none", value[0], value[1], value[2], value[3], value[4]);
});
</script>

View file

@ -0,0 +1 @@
Cross-Origin-Opener-Policy: unsafe-none

View file

@ -1,5 +1,5 @@
<!doctype html>
<meta name="timeout" content="long">
<meta name=timeout content=long>
<title>Cross-Origin-Opener-Policy requires secure contexts</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>

View file

@ -1,6 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta name="timeout" content="long">
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>
@ -15,6 +15,7 @@ function url_test_cache(t, url, channelName, hasOpener) {
const payload = event.data;
assert_equals(payload.name, hasOpener ? channelName : "");
assert_equals(payload.opener, hasOpener);
assert_equals(w.closed, !hasOpener);
bc.close()
// test the same url for cache
@ -23,9 +24,7 @@ function url_test_cache(t, url, channelName, hasOpener) {
const w = window.open(url, channelName);
// w will be closed by its postback iframe. When out of process,
// window.close() does not work.
t.add_cleanup(() => w.close());
// The popup is closed by url_test.
}
// Redirect from hostA to hostB with same coop and coep.

View file

@ -1,6 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -1,6 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -1,6 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -1,6 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -1,6 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -1,6 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -1,6 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -1,6 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -1,6 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -1,6 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -1,6 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -1,6 +1,6 @@
<!doctype html>
<meta charset=utf-8>
<meta content=timeout value=long>
<meta name=timeout content=long>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/get-host-info.sub.js"></script>

View file

@ -12,13 +12,17 @@ function url_test(t, url, channelName, hasOpener, openerDOMAccess) {
if (openerDOMAccess !== undefined) {
assert_equals(payload.openerDOMAccess, openerDOMAccess, 'openerDOMAccess');
}
assert_equals(w.closed, !hasOpener, 'Openee browsing context closed');
});
const w = window.open(url, channelName);
// w will be closed by its postback iframe. When out of process,
// window.close() does not work.
t.add_cleanup(() => w.close());
// Close the popup once the test is complete.
// The browsing context might be closed hence use the broadcast channel
// to trigger the closure.
t.add_cleanup(() => {
bc.postMessage("close");
});
}
function coop_coep_test(t, host, coop, coep, channelName, hasOpener, openerDOMAccess) {
@ -43,7 +47,14 @@ function run_coop_test_iframe (documentTitle, iframe_origin, popup_origin, popup
const name = iframe_origin.name + "_iframe_opening_" + popup_origin.name + "_popup_with_coop_" + popup_coop;
async_test(t => {
const frame = document.createElement("iframe");
t.add_cleanup(() => { frame.remove(); });
// Close the popup and remove the frame once the test is
// complete. The browsing context might be closed hence use the
// broadcast channel to trigger the closure.
t.add_cleanup(() => {
frame.remove();
bc.postMessage("close");
});
const origin = CROSS_ORIGIN.origin;
const path = new URL("resources/iframe-popup.sub.html", window.location).pathname;

View file

@ -50,6 +50,13 @@ def main(request, response):
openerDOMAccessAllowed = !!self.opener.document.URL;
} catch(ex) {
}
// Handle the response from the frame, closing the popup once the
// test completes.
addEventListener("message", event => {
if (event.data == "close") {
close();
}
});
const iframe = document.querySelector("iframe");
iframe.onload = () => {
const payload = { name: self.name, opener: !!self.opener, openerDOMAccess: openerDOMAccessAllowed };

View file

@ -3,8 +3,17 @@
<script>
const channelName = new URL(location).searchParams.get("channel");
const bc = new BroadcastChannel(channelName);
// Handle the close message from the test-cleanup, forwarding it to the
// top level document, as this iframe and the opening document might not
// be able to close the popup.
bc.onmessage = event => {
if (event.data == "close") {
top.postMessage("close", "*");
}
};
window.addEventListener("message", event => {
bc.postMessage(event.data);
window.parent.close();
});
</script>

View file

@ -0,0 +1,9 @@
<!DOCTYPE html>
<link rel="help" href="https://crbug.com/1039241">
<div style="width: min-content;">
<div style="writing-mode:vertical-lr;">
<fieldset>
<div style="width:10%;"></div>
</fieldset>
</div>
</div>

View file

@ -0,0 +1,3 @@
<!doctype html>
<title>Test reference</title>
<span style="text-decoration:underline">This text should be underlined.</span>

View file

@ -0,0 +1,9 @@
<!doctype html>
<title>Rendering of object element fallback with text-decoration</title>
<link rel="match" href="object-fallback-text-decoration-ref.html">
<link rel="help" href="https://html.spec.whatwg.org/multipage/rendering.html#embedded-content-rendering-rules">
<meta name="assert" content="Checks that text-decoration applies to rendered object fallback.">
<style>
object { text-decoration: underline; }
</style>
<object>This text should be underlined.</object>

View file

@ -0,0 +1,5 @@
<!doctype html>
<title>Test reference</title>
<details>
<summary><span style="text-decoration:underline">This text should be underlined.</span></summary>
</details>

View file

@ -0,0 +1,11 @@
<!doctype html>
<title>Rendering of summary element with text-decoration</title>
<link rel="match" href="summary-text-decoration-ref.html">
<link rel="help" href="https://html.spec.whatwg.org/multipage/rendering.html#the-details-and-summary-elements">
<meta name="assert" content="Checks that text-decoration applies to rendered summary element.">
<style>
summary { text-decoration: underline; }
</style>
<details>
<summary>This text should be underlined.</summary>
</details>

View file

@ -3,6 +3,7 @@
<title>Canvas test: security.pattern.canvas.fillStyle.cross</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="/common/media.js"></script>
<script src="/2dcontext/resources/canvas-tests.js"></script>
@ -11,8 +12,8 @@
<script>
forEachCanvasSource("http://{{domains[www1]}}:{{ports[http][0]}}",
"http://{{domains[]}}:{{ports[http][0]}}",
forEachCanvasSource(get_host_info().HTTP_REMOTE_ORIGIN,
get_host_info().HTTP_ORIGIN,
(name, factory) => {
promise_test(_ => {
return factory().then(source => {

View file

@ -1,2 +1,4 @@
[fuzzy-ref-2.html]
fuzzy: maxDifference=255;100-100
fuzzy:
if os == "mac" and product == "chrome": maxDifference=254-255;100-100
maxDifference=255;100-100

View file

@ -1,2 +1,4 @@
[reftest_fuzzy_chain_ini.html]
fuzzy: maxDifference=255;100-100
fuzzy:
if os == "mac" and product == "chrome": maxDifference=254-255;100-100
maxDifference=255;100-100

View file

@ -0,0 +1,3 @@
[reftest_fuzzy_1.html]
fuzzy:
if os == "mac" and product == "chrome": fuzzy-ref-1.html:254-255;100

Some files were not shown because too many files have changed in this diff Show more