Update web-platform-tests to revision 10168e9a5d44efbc6e7d416d1d454eb9c9f1396c

This commit is contained in:
Josh Matthews 2018-01-31 09:13:41 -05:00
parent c88dc51d03
commit 0e1caebaf4
791 changed files with 23381 additions and 5501 deletions

View file

@ -43,14 +43,29 @@ function makeVideo() {
});
}
function makeImage() {
return new Promise(resolve => {
var img = new Image();
img.onload = function() {
resolve(img);
};
img.src = "/images/pattern.png";
});
function makeMakeHTMLImage(src) {
return function() {
return new Promise(resolve => {
var img = new Image();
img.onload = function() {
resolve(img);
};
img.src = src;
});
}
}
function makeMakeSVGImage(src) {
return function() {
return new Promise((resolve, reject) => {
var image = document.createElementNS(NAMESPACES.svg, "image");
image.onload = () => resolve(image);
image.onerror = reject;
image.setAttribute("externalResourcesRequired", "true");
image.setAttributeNS(NAMESPACES.xlink, 'xlink:href', src);
document.body.appendChild(image);
});
}
}
function makeImageData() {
@ -100,7 +115,10 @@ function makeBlob() {
var imageSourceTypes = [
{ name: 'an HTMLCanvasElement', factory: makeCanvas },
{ name: 'an HTMLVideoElement', factory: makeVideo },
{ name: 'an HTMLImageElement', factory: makeImage },
{ name: 'a bitmap HTMLImageElement', factory: makeMakeHTMLImage("/images/pattern.png") },
{ name: 'a vector HTMLImageElement', factory: makeMakeHTMLImage("/images/pattern.svg") },
{ name: 'a bitmap SVGImageElement', factory: makeMakeSVGImage("/images/pattern.png") },
{ name: 'a vector SVGImageElement', factory: makeMakeSVGImage("/images/pattern.svg") },
{ name: 'an OffscreenCanvas', factory: makeOffscreenCanvas },
{ name: 'an ImageData', factory: makeImageData },
{ name: 'an ImageBitmap', factory: makeImageBitmap },

View file

@ -5,7 +5,8 @@
<script src="/resources/testharnessreport.js"></script>
<script src="/common/canvas-tests.js"></script>
<script src="/common/media.js"></script>
<script src="common.js"></script>
<script src="/common/namespaces.js"></script>
<script src="common.sub.js"></script>
<link rel="stylesheet" href="/common/canvas-tests.css">
<body>
<script>

View file

@ -2,7 +2,8 @@
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/media.js"></script>
<script src="common.js"></script>
<script src="/common/namespaces.js"></script>
<script src="common.sub.js"></script>
<script>
function makeOversizedCanvas() {
@ -29,17 +30,18 @@ function makeInvalidBlob() {
}
function makeBrokenImage() {
return new Promise(resolve => {
return new Promise((resolve, reject) => {
const image = new Image();
image.src = "data:,x";
image.onload = reject;
image.onerror = () => resolve(image);
});
}
function makeAvailableButBrokenImage() {
function makeAvailableButBrokenImage(path) {
return new Promise((resolve, reject) => {
const image = new Image();
image.src = "/images/broken.png";
image.src = path;
image.onload = () => resolve(image);
image.onerror = reject;
});
@ -99,6 +101,26 @@ promise_test( t => {
return promise_rejects(t, new TypeError(), createImageBitmap(null));
}, "createImageBitmap with null image source.");
promise_test( t => {
var context = document.createElement("canvas").getContext("2d");
return promise_rejects(t, new TypeError(), createImageBitmap(context));
}, "createImageBitmap with CanvasRenderingContext2D image source.");
promise_test( t => {
var context = document.createElement("canvas").getContext("webgl");
return promise_rejects(t, new TypeError(), createImageBitmap(context));
}, "createImageBitmap with WebGLRenderingContext image source.");
promise_test( t => {
var buffer = new Uint8Array();
return promise_rejects(t, new TypeError(), createImageBitmap(buffer));
}, "createImageBitmap with Uint8Array image source.");
promise_test( t => {
var buffer = new ArrayBuffer(8);
return promise_rejects(t, new TypeError(), createImageBitmap(buffer));
}, "createImageBitmap with ArrayBuffer image source.");
promise_test( t => {
return promise_rejects(t, "InvalidStateError",
createImageBitmap(new Image()));
@ -138,12 +160,26 @@ promise_test( t => {
}, "createImageBitmap with a broken image source.");
promise_test( t => {
return makeAvailableButBrokenImage().then(image => {
return makeAvailableButBrokenImage("/images/broken.png").then(image => {
return promise_rejects(t, "InvalidStateError",
createImageBitmap(image));
});
}, "createImageBitmap with an available but undecodable image source.");
promise_test( t => {
return makeAvailableButBrokenImage("/images/red-zeroheight.svg").then(image => {
return promise_rejects(t, "InvalidStateError",
createImageBitmap(image));
});
}, "createImageBitmap with an available but zero height image source.");
promise_test( t => {
return makeAvailableButBrokenImage("/images/red-zerowidth.svg").then(image => {
return promise_rejects(t, "InvalidStateError",
createImageBitmap(image));
});
}, "createImageBitmap with an available but zero width image source.");
promise_test( t => {
return makeImageBitmap().then(bitmap => {
bitmap.close()

View file

@ -0,0 +1,86 @@
<!DOCTYPE html>
<meta charset=utf-8>
<title>createImageBitmap: origin-clean flag</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/media.js"></script>
<script src="/common/namespaces.js"></script>
<div id=log></div>
<script>
const crossOriginImageUrl = "http://{{domains[www1]}}:{{ports[http][0]}}/images/red.png";
function assert_origin_unclean(bitmap) {
const context = document.createElement("canvas").getContext("2d");
context.drawImage(bitmap, 0, 0);
assert_throws("SecurityError", () => {
context.getImageData(0, 0, 1, 1);
});
}
function makeImage() {
return new Promise((resolve, reject) => {
const image = new Image();
image.onload = () => resolve(image);
image.onerror = reject;
image.src = crossOriginImageUrl;
});
}
const arguments = [
{
name: "cross-origin HTMLImageElement",
factory: makeImage,
},
{
name: "cross-origin SVGImageElement",
factory: () => {
return new Promise((resolve, reject) => {
const image = document.createElementNS(NAMESPACES.svg, "image");
image.onload = () => resolve(image);
image.onerror = reject;
image.setAttribute("externalResourcesRequired", "true");
image.setAttributeNS(NAMESPACES.xlink, 'xlink:href', crossOriginImageUrl);
document.body.appendChild(image);
});
},
},
{
name: "cross-origin HTMLVideoElement",
factory: () => {
return new Promise((resolve, reject) => {
const video = document.createElement("video");
video.oncanplaythrough = () => resolve(video);
video.onerror = reject;
video.src = getVideoURI("http://{{domains[www1]}}:{{ports[http][0]}}/media/movie_300");
});
},
},
{
name: "unclean HTMLCanvasElement",
factory: () => {
return makeImage().then(image => {
const canvas = document.createElement("canvas");
const context = canvas.getContext("2d");
context.drawImage(image, 0, 0);
return canvas;
});
},
},
{
name: "unclean ImageBitmap",
factory: () => {
return makeImage().then(createImageBitmap);
},
},
];
for (let { name, factory } of arguments) {
promise_test(function() {
return factory().then(createImageBitmap).then(assert_origin_unclean);
}, name);
}
</script>