forked from mirrors/gecko-dev
image with src set to data:image/png should be considered as same origin, as we fixed in Bug 1373513. So this reverts what we did in bug 1363673.
94 lines
No EOL
2.5 KiB
JavaScript
94 lines
No EOL
2.5 KiB
JavaScript
var gImage;
|
|
var gVideo;
|
|
var gCanvas;
|
|
var gCtx;
|
|
var gImageData;
|
|
var gImageBitmap;
|
|
var gPNGBlob;
|
|
var gJPEGBlob;
|
|
|
|
var gGroundTruthImageData;
|
|
|
|
function prepareSources() {
|
|
gVideo = document.createElement("video");
|
|
gVideo.src = "http://example.com/tests/dom/canvas/test/crossorigin/video.sjs?name=tests/dom/canvas/test/320x240.ogv&type=video/ogg&cors=anonymous";
|
|
gVideo.crossOrigin = "anonymous";
|
|
gVideo.autoplay = "true"
|
|
|
|
|
|
gCanvas = document.createElement("canvas");
|
|
gCtx = gCanvas.getContext("2d");
|
|
|
|
var resolver;
|
|
var promise = new Promise(function(resolve, reject) {
|
|
resolver = resolve;
|
|
});
|
|
|
|
// Prepare video.
|
|
gVideo.onloadeddata = function() {
|
|
ok(gVideo, "[Prepare Sources] gVideo is ok.");
|
|
|
|
// Prepare canvas.
|
|
gCanvas.width = gVideo.videoWidth;
|
|
gCanvas.height = gVideo.videoHeight;
|
|
gCtx.drawImage(gVideo, 0, 0);
|
|
ok(gCanvas, "[Prepare Sources] gCanvas is ok.");
|
|
ok(gCtx, "[Prepare Sources] gCtx is ok.");
|
|
|
|
// Prepare gGroundTruthImageData.
|
|
gGroundTruthImageData = gCtx.getImageData(0, 0, gCanvas.width, gCanvas.height);
|
|
ok(gGroundTruthImageData, "[Prepare Sources] gGroundTruthImageData is ok.");
|
|
|
|
// Prepare image.
|
|
gImage = document.createElement("img");
|
|
gImage.src = gCanvas.toDataURL();
|
|
var resolverImage;
|
|
var promiseImage = new Promise(function(resolve, reject) {
|
|
resolverImage = resolve;
|
|
});
|
|
gImage.onload = function() {
|
|
resolverImage(true);
|
|
}
|
|
|
|
// Prepare ImageData.
|
|
gImageData = gCtx.getImageData(0, 0, gCanvas.width, gCanvas.height);
|
|
ok(gImageData, "[Prepare Sources] gImageData is ok.");
|
|
|
|
// Prepapre PNG Blob.
|
|
var promisePNGBlob = new Promise(function(resolve, reject) {
|
|
gCanvas.toBlob(function(blob) {
|
|
gPNGBlob = blob;
|
|
ok(gPNGBlob, "[Prepare Sources] gPNGBlob is ok.");
|
|
resolve(true);
|
|
});
|
|
});
|
|
|
|
// Prepare JPEG Blob.
|
|
var promiseJPEGBlob = new Promise(function(resolve, reject) {
|
|
gCanvas.toBlob(function(blob) {
|
|
gJPEGBlob = blob;
|
|
ok(gJPEGBlob, "[Prepare Sources] gJPEGBlob is ok.");
|
|
resolve(true);
|
|
}, "image/jpeg", 1.00);
|
|
});
|
|
|
|
// Prepare ImageBitmap.
|
|
var promiseImageBitmap = new Promise(function(resolve, reject) {
|
|
var p = createImageBitmap(gCanvas);
|
|
p.then(function(bitmap) {
|
|
gImageBitmap = bitmap;
|
|
ok(gImageBitmap, "[Prepare Sources] gImageBitmap is ok.");
|
|
resolve(true);
|
|
});
|
|
});
|
|
|
|
resolver(Promise.all([
|
|
promiseImage,
|
|
promisePNGBlob,
|
|
promiseJPEGBlob,
|
|
promiseImageBitmap
|
|
]))
|
|
}
|
|
|
|
return promise;
|
|
} |