mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Update web-platform-tests to revision 1b2893a628c429d144e2b5f7eb5d93855127cacb
This commit is contained in:
parent
7f12ee6467
commit
382c7ac026
66 changed files with 421 additions and 229 deletions
|
@ -1,8 +0,0 @@
|
|||
[url-charset.window.html]
|
||||
expected: TIMEOUT
|
||||
[Blob charset should override any auto-detected charset.]
|
||||
expected: TIMEOUT
|
||||
|
||||
[Blob charset should override <meta charset>.]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
expected: TIMEOUT
|
||||
|
||||
[Opening a blob URL in a new window immediately before revoking it works.]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[Fetching a blob URL immediately before revoking it works in an iframe.]
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-004.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-005.html]
|
||||
[Miss clipped float]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-anonymous-block.html]
|
||||
[Hit test beside line of text inside anonymous block]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[image-orientation-none-cross-origin-canvas.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[image-orientation-none-cross-origin.html]
|
||||
expected: FAIL
|
|
@ -1,4 +0,0 @@
|
|||
[CaretPosition-001.html]
|
||||
[Element at (400, 100)]
|
||||
expected: FAIL
|
||||
|
|
@ -2,6 +2,3 @@
|
|||
[elementsFromPoint on the root document for points in iframe elements]
|
||||
expected: FAIL
|
||||
|
||||
[elementsFromPoint on inner documents]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[elementsFromPoint-invalid-cases.html]
|
||||
[The root element is the last element returned for otherwise empty queries within the viewport]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[matchMedia-display-none-iframe.html]
|
||||
expected: ERROR
|
|
@ -0,0 +1,2 @@
|
|||
[HTMLMediaElement.html]
|
||||
expected: TIMEOUT
|
|
@ -315,18 +315,12 @@
|
|||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -56,6 +56,3 @@
|
|||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript error]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,6 +11,6 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
|
||||
[X-Content-Type-Options%3A%20'NosniFF']
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_3.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_4.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[creating_browsing_context_test_01.html]
|
||||
[first argument: absolute url]
|
||||
expected: FAIL
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
[embedded-opener-remove-frame.html]
|
||||
expected: TIMEOUT
|
||||
[opener of discarded nested browsing context]
|
||||
expected: FAIL
|
||||
|
||||
[opener of discarded auxiliary browsing context]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -171,6 +171,3 @@
|
|||
[XHTML img usemap="#hash-id"]
|
||||
expected: FAIL
|
||||
|
||||
[HTML (standards) IMG usemap="no-hash-name"]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[iframe_sandbox_popups_escaping-2.html]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-1.html]
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-2.html]
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[module-delayed.html]
|
||||
[async document.write in a module]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[module-static-import-delayed.html]
|
||||
[document.write in an imported module]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
[realtimeanalyser-fft-scaling.html]
|
||||
expected: TIMEOUT
|
||||
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[Worker-constructor.html]
|
||||
expected: ERROR
|
|
@ -1,7 +1,8 @@
|
|||
[shared-worker-in-data-url-context.window.html]
|
||||
expected: TIMEOUT
|
||||
[Create a shared worker in a data url frame]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[Create a data url shared worker in a data url frame]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
[url-charset.window.html]
|
||||
expected: TIMEOUT
|
||||
[Blob charset should override any auto-detected charset.]
|
||||
expected: TIMEOUT
|
||||
|
||||
[Blob charset should override <meta charset>.]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
expected: FAIL
|
||||
|
||||
[Opening a blob URL in a new window immediately before revoking it works.]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -121083,7 +121083,7 @@
|
|||
]
|
||||
],
|
||||
"background-attachment-350.html": [
|
||||
"2323293a96b18e373e26ec3f4406c4a5fb1f7417",
|
||||
"fa63370a43cd575f54fd0004d4436d551144026c",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -153493,6 +153493,64 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"image-orientation-none-cross-origin-canvas.html": [
|
||||
"4d370e8e189667368035ecb7e65ba9cc03ba982f",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-images/image-orientation/reference/image-orientation-none-cross-origin-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{
|
||||
"fuzzy": [
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
10,
|
||||
10
|
||||
],
|
||||
[
|
||||
100,
|
||||
100
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"image-orientation-none-cross-origin.html": [
|
||||
"6629f78e5b2923a41e49b4236a4c8b7d17abb2f1",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-images/image-orientation/reference/image-orientation-none-cross-origin-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{
|
||||
"fuzzy": [
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
10,
|
||||
10
|
||||
],
|
||||
[
|
||||
100,
|
||||
100
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"image-orientation-none-image-document.html": [
|
||||
"d333b5f4f578a17915c234d905a4978729d55c8e",
|
||||
[
|
||||
|
@ -159365,20 +159423,7 @@
|
|||
{}
|
||||
]
|
||||
]
|
||||
},
|
||||
"test-mask.html": [
|
||||
"b1e21566e3f2072251f0093a4d08e9688991b73f",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-masking/test-mask-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
"css-multicol": {
|
||||
"always-balancing-before-column-span.html": [
|
||||
|
@ -310079,6 +310124,14 @@
|
|||
"5192f5c35aa6c0055594b662bc18f12feb453e87",
|
||||
[]
|
||||
],
|
||||
"image-orientation-none-cross-origin-canvas-ref.html": [
|
||||
"4f9bc74620d8be7d94b8639a51764e04c2c5e685",
|
||||
[]
|
||||
],
|
||||
"image-orientation-none-cross-origin-ref.html": [
|
||||
"3e6962184ec3dcb75cd08a440017ed84161fdb4a",
|
||||
[]
|
||||
],
|
||||
"image-orientation-none-image-document-ref.html": [
|
||||
"90eaeaa3da839b111098da9e6f9e4754fe05d2b2",
|
||||
[]
|
||||
|
@ -311294,11 +311347,7 @@
|
|||
"de30887ea358ece8e0c1cd593d3d7c66bc744bd4",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"test-mask-ref.html": [
|
||||
"938235acbd36309fb969c55f161239bcd5ab969e",
|
||||
[]
|
||||
]
|
||||
}
|
||||
},
|
||||
"css-multicol": {
|
||||
"META.yml": [
|
||||
|
@ -425579,7 +425628,7 @@
|
|||
]
|
||||
],
|
||||
"ParentNode-replaceChildren.html": [
|
||||
"b1c1008284bbf999d5c61d971b6c8b10704e16e9",
|
||||
"8f2fda9d99c154f7b8eb08aefe0604bf37cb4a37",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -465653,7 +465702,7 @@
|
|||
]
|
||||
],
|
||||
"reporting-to-endpoint.https.html": [
|
||||
"416732497bdd58f654cbfd883721352a8c7ecba7",
|
||||
"7294bdeafab2c32512983954ed20d617a1418f29",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-004.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-005.html]
|
||||
[Miss clipped float]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-anonymous-block.html]
|
||||
[Hit test beside line of text inside anonymous block]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[image-orientation-none-cross-origin-canvas.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[image-orientation-none-cross-origin.html]
|
||||
expected: FAIL
|
|
@ -1,4 +0,0 @@
|
|||
[CaretPosition-001.html]
|
||||
[Element at (400, 100)]
|
||||
expected: FAIL
|
||||
|
|
@ -2,6 +2,3 @@
|
|||
[elementsFromPoint on the root document for points in iframe elements]
|
||||
expected: FAIL
|
||||
|
||||
[elementsFromPoint on inner documents]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[elementsFromPoint-invalid-cases.html]
|
||||
[The root element is the last element returned for otherwise empty queries within the viewport]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[matchMedia-display-none-iframe.html]
|
||||
expected: ERROR
|
|
@ -0,0 +1,2 @@
|
|||
[HTMLMediaElement.html]
|
||||
expected: TIMEOUT
|
|
@ -315,18 +315,12 @@
|
|||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -56,6 +56,3 @@
|
|||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript error]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,6 +11,6 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
|
||||
[X-Content-Type-Options%3A%20'NosniFF']
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_3.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_4.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[creating_browsing_context_test_01.html]
|
||||
[first argument: absolute url]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
[embedded-opener-remove-frame.html]
|
||||
expected: TIMEOUT
|
||||
[opener and "removed" embedded documents]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -7,5 +6,5 @@
|
|||
expected: FAIL
|
||||
|
||||
[opener of discarded auxiliary browsing context]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -172,6 +172,3 @@
|
|||
[XHTML img usemap="http://example.org/#garbage-before-hash-id"]
|
||||
expected: FAIL
|
||||
|
||||
[HTML (standards) IMG usemap="no-hash-name"]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[iframe_sandbox_popups_escaping-2.html]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[iframe_sandbox_popups_nonescaping-1.html]
|
||||
type: testharness
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[iframe_sandbox_popups_nonescaping-2.html]
|
||||
type: testharness
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[module-delayed.html]
|
||||
[async document.write in a module]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[module-static-import-delayed.html]
|
||||
[document.write in an imported module]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
[realtimeanalyser-fft-scaling.html]
|
||||
expected: TIMEOUT
|
||||
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[Worker-constructor.html]
|
||||
expected: ERROR
|
|
@ -1,7 +1,8 @@
|
|||
[shared-worker-in-data-url-context.window.html]
|
||||
expected: TIMEOUT
|
||||
[Create a shared worker in a data url frame]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[Create a data url shared worker in a data url frame]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -43,21 +43,22 @@
|
|||
|
||||
<!--
|
||||
|
||||
+-----------------------+
|
||||
|+----------+ |
|
||||
|| +------+ | |
|
||||
|| | red | | | <-- bottom right of scrolling box
|
||||
(0px, 0px) (200px, 0px)
|
||||
+.......................+
|
||||
|+..........+ |
|
||||
|| +......+ | |
|
||||
|| | red | | | <== bottom right of scrolling box
|
||||
|| |square| | | when background-image dimensions
|
||||
|| | | | | are the same as the element's
|
||||
|| +------+ | | viewport dimensions
|
||||
+----------+ |
|
||||
|| +......+ | | viewport dimensions
|
||||
+..........+ |
|
||||
| |
|
||||
| |
|
||||
| +------+|
|
||||
| | red || <-- bottom right of scrollable area
|
||||
| +......+|
|
||||
| | red || <== bottom right of scrollable area
|
||||
| |square|| which is outside of the viewport
|
||||
| | || area and which is clipped due
|
||||
| +------+| to 'overflow: hidden'
|
||||
+-----------------------+
|
||||
| +......+| to 'overflow: hidden'
|
||||
+.......................+
|
||||
(0px, 200px) (200px, 200px)
|
||||
|
||||
-->
|
||||
|
|
|
@ -0,0 +1,79 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Images Module Level 3: image-orientation: none</title>
|
||||
<script src=/common/get-host-info.sub.js></script>
|
||||
<link rel="author" title="Noam Rosenthal" href="mailto:noam@webkit.org">
|
||||
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/5165">
|
||||
<link rel="match" href="reference/image-orientation-none-cross-origin-ref.html">
|
||||
<meta name=fuzzy content="10;100">
|
||||
<style>
|
||||
img {display: none}
|
||||
canvas {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
margin: 10px;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const src1 = 'support/exif-orientation-1-ul.jpg';
|
||||
const src2 = 'support/exif-orientation-3-lr.jpg';
|
||||
function toCors(src) {
|
||||
return src.replace(new URL(src).origin, get_host_info().HTTP_REMOTE_ORIGIN)
|
||||
}
|
||||
function createImage({cors, src, orientation, shouldBeRotated}) {
|
||||
const img = document.createElement('img');
|
||||
img.src = src
|
||||
if (cors)
|
||||
img.src = toCors(img.src)
|
||||
img.style.imageOrientation = orientation
|
||||
img.style.display = 'none'
|
||||
img.dataset.shouldBeRotated = shouldBeRotated
|
||||
document.body.appendChild(img)
|
||||
return img
|
||||
}
|
||||
|
||||
window.onload = () => {
|
||||
const images = [
|
||||
createImage({cors: true, src: src2, orientation: 'from-image', shouldBeRotated: true}),
|
||||
createImage({cors: true, src: src2, orientation: 'none', shouldBeRotated: true}),
|
||||
createImage({cors: false, src: src2, orientation: 'from-image', shouldBeRotated: true}),
|
||||
createImage({cors: true, src: src1, orientation: 'from-image', shouldBeRotated: false}),
|
||||
createImage({cors: true, src: src1, orientation: 'none', shouldBeRotated: false}),
|
||||
createImage({cors: false, src: src1, orientation: 'from-image', shouldBeRotated: false}),
|
||||
createImage({cors: false, src: src1, orientation: 'none', shouldBeRotated: false}),
|
||||
createImage({cors: false, src: src2, orientation: 'none', shouldBeRotated: false}),
|
||||
]
|
||||
|
||||
const dimension = 1
|
||||
|
||||
images.forEach(image => {
|
||||
const canvas = document.createElement('canvas')
|
||||
canvas.width = canvas.height = dimension
|
||||
const ctx = canvas.getContext('2d')
|
||||
const sx = image.dataset.shouldBeRotated === 'true' ? image.width * .8 : 0
|
||||
const sy = image.dataset.shouldBeRotated === 'true' ? image.height * .8 : 0
|
||||
ctx.drawImage(image, sx, sy, 1, 1, 0, 0, dimension, dimension)
|
||||
document.body.appendChild(canvas)
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<p>You should see 8 green rectangles, no red.</p>
|
||||
</body>
|
||||
<script>
|
||||
[src1, src2].forEach(src => {
|
||||
const img = document.createElement('img')
|
||||
img.src = src
|
||||
const imgCors = document.createElement('img')
|
||||
imgCors.src = src
|
||||
imgCors.src = toCors(imgCors.src)
|
||||
document.body.appendChild(img)
|
||||
document.body.appendChild(imgCors)
|
||||
})
|
||||
</script>
|
||||
</html>
|
|
@ -0,0 +1,37 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Images Module Level 3: image-orientation: none</title>
|
||||
<script src=/common/get-host-info.sub.js></script>
|
||||
<link rel="author" title="Noam Rosenthal" href="mailto:noam@webkit.org">
|
||||
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/5165">
|
||||
<link rel="match" href="reference/image-orientation-none-cross-origin-ref.html">
|
||||
<meta name=fuzzy content="10;100">
|
||||
<style>
|
||||
body {
|
||||
overflow: hidden;
|
||||
image-orientation: none;
|
||||
}
|
||||
div {
|
||||
display: inline-block;
|
||||
width: 100px;
|
||||
vertical-align: top;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p>The following images should not be identical.</p>
|
||||
<p>The image should not rotate respecting their EXIF orientation because
|
||||
image-orientation: none is specified.</p>
|
||||
<div><img src="support/exif-orientation-3-lr.jpg"/></div>
|
||||
|
||||
<p>This image should rotate respecting their EXIF orientation because
|
||||
image-orientation: none should be effectively ignored for opaque (cross-origin) images.</p>
|
||||
<div><img id="corsImage" src="support/exif-orientation-3-lr.jpg"/></div>
|
||||
<script>
|
||||
const img = document.getElementById('corsImage')
|
||||
img.src = img.src.replace(new URL(img.src).origin, get_host_info().HTTP_REMOTE_ORIGIN)
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,44 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Images Module Level 3: image-orientation: none</title>
|
||||
<link rel="author" title="Noam Rosenthal" href="mailto:noam@webkit.org">
|
||||
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/5165">
|
||||
<meta name=fuzzy content="10;100">
|
||||
<style>
|
||||
body {
|
||||
overflow: hidden;
|
||||
image-orientation: none;
|
||||
}
|
||||
img {display: none}
|
||||
canvas {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
margin: 10px;
|
||||
}
|
||||
.no-orient { image-orientation: none; }
|
||||
</style>
|
||||
<body>
|
||||
<p>You should see 8 green rectangles, no red.</p>
|
||||
</body>
|
||||
<script>
|
||||
const img = document.createElement('img')
|
||||
img.src = '../support/exif-orientation-1-ul.jpg'
|
||||
|
||||
document.body.appendChild(img)
|
||||
|
||||
const dimension = 5
|
||||
window.onload = () => {
|
||||
for (let i = 0; i < 8; ++i) {
|
||||
const canvas = document.createElement('canvas')
|
||||
canvas.width = canvas.height = dimension
|
||||
const ctx = canvas.getContext('2d')
|
||||
ctx.drawImage(img, 0, 0)
|
||||
document.body.appendChild(canvas)
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
</html>
|
|
@ -0,0 +1,30 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="author" title="Noam Rosenthal" href="mailto:noam@webkit.org">
|
||||
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/5165">
|
||||
<meta name=fuzzy content="10;100">
|
||||
<style>
|
||||
body {
|
||||
overflow: hidden;
|
||||
image-orientation: none;
|
||||
}
|
||||
div {
|
||||
display: inline-block;
|
||||
width: 100px;
|
||||
vertical-align: top;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p>The following images should not be identical.</p>
|
||||
<p>The image should not rotate respecting their EXIF orientation because
|
||||
image-orientation: none is specified.</p>
|
||||
<div><img src="../support/exif-orientation-3-lr.jpg"/></div>
|
||||
|
||||
<p>This image should rotate respecting their EXIF orientation because
|
||||
image-orientation: none should be effectively ignored for opaque (cross-origin) images.</p>
|
||||
<div><img src="../support/exif-orientation-3-lr.jpg" style="image-orientation: from-image" /></div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,11 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CSS Masking: mask-repeat:round repeat;</title>
|
||||
<link rel="author" title="Li Jun" href="mailto:64835173@qq.com">
|
||||
<link rel="reviewer" title="Dirk Schulze" href="mailto:dschulze@adobe.com"><!-- 11-09-2013 @TestTWF Shenzhen -->
|
||||
|
||||
<body>
|
||||
<p>Test passes if there is a blue square and no red.</p>
|
||||
<div style="width: 200px; height:200px; position: fixed; background-color:blue;"></div>
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -1,26 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CSS Masking: mask-repeat:round repeat;</title>
|
||||
<link rel="author" title="Li Jun" href="mailto:64835173@qq.com">
|
||||
<link rel="reviewer" title="Dirk Schulze" href="mailto:dschulze@adobe.com"><!-- 11-09-2013 @TestTWF Shenzhen -->
|
||||
<link rel="help" href="http://www.w3.org/TR/css-masking-1/#the-mask-repeat">
|
||||
<link rel="match" href="test-mask-ref.html">
|
||||
<meta name="assert" content="Test checks that the mask-repeart value "round" is working properly: it should scale to fit the whole area.">
|
||||
<style>
|
||||
.test {
|
||||
width:200px;
|
||||
height:200px;
|
||||
white-space:normal;
|
||||
background:blue;
|
||||
mask-image:radial-gradient(black, black);
|
||||
mask-repeat:round;
|
||||
mask-size:100px 100px;
|
||||
mask-box-image:none;
|
||||
mask-origin:border;
|
||||
};
|
||||
</style>
|
||||
<body>
|
||||
<p>Test passes if there is a blue square and no red.</p>
|
||||
<div style="width: 200px; height:200px; position: fixed; background-color:red;"></div>
|
||||
<div class="test"></div>
|
||||
</body>
|
||||
</html>
|
|
@ -40,6 +40,14 @@
|
|||
assert_array_equals(parent.childNodes, [x]);
|
||||
}, `${nodeName}.replaceChildren() with only one element as an argument, on a parent having no child.`);
|
||||
|
||||
test(() => {
|
||||
const parent = node.cloneNode();
|
||||
const child = document.createElement('test');
|
||||
parent.appendChild(child);
|
||||
parent.replaceChildren();
|
||||
assert_array_equals(parent.childNodes, []);
|
||||
}, `${nodeName}.replaceChildren() without any argument, on a parent having a child.`);
|
||||
|
||||
test(() => {
|
||||
const parent = node.cloneNode();
|
||||
const child = document.createElement('test');
|
||||
|
|
|
@ -26,53 +26,57 @@ function wait(ms) {
|
|||
return new Promise(resolve => step_timeout(resolve, ms));
|
||||
}
|
||||
|
||||
async function pollReports(endpoint, reports) {
|
||||
while (true) {
|
||||
await wait(200);
|
||||
const res = await fetch(`resources/report.py?endpoint=${endpoint}`, {cache: 'no-store'});
|
||||
if (res.status !== 200) {
|
||||
continue;
|
||||
}
|
||||
for (const report of await res.json()) {
|
||||
reports.push(report);
|
||||
}
|
||||
async function fetchReports(endpoint) {
|
||||
const res = await fetch(`resources/report.py?endpoint=${endpoint}`, {cache: 'no-store'});
|
||||
if (res.status == 200) {
|
||||
return await res.json();
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
const reports = [];
|
||||
const reportsForReportOnly = [];
|
||||
pollReports('endpoint', reports);
|
||||
pollReports('report-only-endpoint', reportsForReportOnly);
|
||||
|
||||
function checkCorpReportExistence(reports, blockedUrl, contextUrl, destination, disposition) {
|
||||
async function checkCorpReportExistence(endpoint, blockedUrl, contextUrl, destination, disposition) {
|
||||
blockedUrl = new URL(blockedUrl, location).href;
|
||||
contextUrl = new URL(contextUrl, location).href;
|
||||
for (const report of reports) {
|
||||
if (report.type !== 'coep' || report.url !== contextUrl ||
|
||||
report.body.type !== 'corp') {
|
||||
continue;
|
||||
}
|
||||
if (report.body.blockedURL === blockedUrl &&
|
||||
report.body.disposition === disposition) {
|
||||
assert_equals(report.body.destination, destination);
|
||||
return;
|
||||
|
||||
const timeout = 3000;
|
||||
const retryDelay = 200;
|
||||
for (let i = 0; i * retryDelay < timeout; i++) {
|
||||
const reports = await fetchReports(endpoint);
|
||||
for (const report of reports) {
|
||||
if (report.type !== 'coep' || report.url !== contextUrl ||
|
||||
report.body.type !== 'corp') {
|
||||
continue;
|
||||
}
|
||||
if (report.body.blockedURL === blockedUrl &&
|
||||
report.body.disposition === disposition) {
|
||||
assert_equals(report.body.destination, destination);
|
||||
return;
|
||||
}
|
||||
}
|
||||
await wait(retryDelay);
|
||||
}
|
||||
assert_unreached(`A report whose blockedURL is ${blockedUrl} and url is ${contextUrl} is not found.`);
|
||||
}
|
||||
|
||||
function checkNavigationReportExistence(reports, blockedUrl, contextUrl, disposition) {
|
||||
async function checkNavigationReportExistence(endpoint, blockedUrl, contextUrl, disposition) {
|
||||
blockedUrl = new URL(blockedUrl, location).href;
|
||||
contextUrl = new URL(contextUrl, location).href;
|
||||
for (const report of reports) {
|
||||
if (report.type !== 'coep' || report.url !== contextUrl ||
|
||||
report.body.type !== 'navigation') {
|
||||
continue;
|
||||
}
|
||||
if (report.body.blockedURL === blockedUrl &&
|
||||
report.body.disposition === disposition) {
|
||||
return;
|
||||
const timeout = 3000;
|
||||
const retryDelay = 200;
|
||||
for (let i = 0; i * retryDelay < timeout; i++) {
|
||||
const reports = await fetchReports(endpoint);
|
||||
|
||||
for (const report of reports) {
|
||||
if (report.type !== 'coep' || report.url !== contextUrl ||
|
||||
report.body.type !== 'navigation') {
|
||||
continue;
|
||||
}
|
||||
if (report.body.blockedURL === blockedUrl &&
|
||||
report.body.disposition === disposition) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
await wait(retryDelay);
|
||||
}
|
||||
assert_unreached(`A report whose blockedURL is ${blockedUrl} and url is ${contextUrl} is not found.`);
|
||||
}
|
||||
|
@ -93,12 +97,9 @@ promise_test(async t => {
|
|||
// header, so it is blocked.
|
||||
iframe.contentWindow.fetch(url, init).catch(() => {});
|
||||
|
||||
// Wait 3 seconds for reports to settle.
|
||||
await wait(3000);
|
||||
|
||||
checkCorpReportExistence(reports, url, iframe.src, '', 'enforce');
|
||||
checkCorpReportExistence(
|
||||
reportsForReportOnly, url, iframe.src, '', 'reporting');
|
||||
await checkCorpReportExistence('endpoint', url, iframe.src, '', 'enforce');
|
||||
await checkCorpReportExistence(
|
||||
'report-only-endpoint', url, iframe.src, '', 'reporting');
|
||||
}, 'subresource CORP');
|
||||
|
||||
promise_test(async t => {
|
||||
|
@ -124,12 +125,10 @@ promise_test(async t => {
|
|||
// header, so it is blocked.
|
||||
attachFrame(url);
|
||||
|
||||
// Wait 3 seconds for reports to settle.
|
||||
await wait(3000);
|
||||
|
||||
checkCorpReportExistence(reports, url, iframe.src, 'iframe', 'enforce');
|
||||
checkCorpReportExistence(
|
||||
reportsForReportOnly, url, iframe.src, 'iframe', 'reporting');
|
||||
await checkCorpReportExistence(
|
||||
'endpoint', url, iframe.src, 'iframe', 'enforce');
|
||||
await checkCorpReportExistence(
|
||||
'report-only-endpoint', url, iframe.src, 'iframe', 'reporting');
|
||||
}, 'navigation CORP');
|
||||
|
||||
promise_test(async (t) => {
|
||||
|
@ -147,12 +146,10 @@ promise_test(async (t) => {
|
|||
|
||||
document.body.appendChild(iframe);
|
||||
|
||||
// Wait 3 seconds for reports to settle.
|
||||
await wait(3000);
|
||||
|
||||
checkNavigationReportExistence(reports, targetUrl, iframe.src, 'enforce');
|
||||
checkNavigationReportExistence(
|
||||
reportsForReportOnly, targetUrl, iframe.src, 'reporting');
|
||||
await checkNavigationReportExistence(
|
||||
'endpoint', targetUrl, iframe.src, 'enforce');
|
||||
await checkNavigationReportExistence(
|
||||
'report-only-endpoint', targetUrl, iframe.src, 'reporting');
|
||||
}, 'COEP violation on nested frame navigation');
|
||||
|
||||
</script>$
|
||||
</script>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue