mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-11 13:48:23 +02:00
This is split from the previous changeset since if we include dom/ the file size is too large for phabricator to handle. This is an autogenerated commit to handle scripts loading mochitest harness files, in the simple case where the script src is on the same line as the tag. This was generated with https://bug1544322.bmoattachments.org/attachment.cgi?id=9058170 using the `--part 2` argument. Differential Revision: https://phabricator.services.mozilla.com/D27457 --HG-- extra : moz-landing-system : lando
223 lines
8 KiB
HTML
223 lines
8 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
|
|
<title>Test for File urls</title>
|
|
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
|
</head>
|
|
<body onload="start()">
|
|
<p id="display">
|
|
<iframe id=inner></iframe>
|
|
<iframe id=iframe></iframe>
|
|
<img id=img onload="gen.next(event);">
|
|
<audio id=audio onloadeddata="gen.next(event);">
|
|
</p>
|
|
<div id="content" style="display: none">
|
|
|
|
</div>
|
|
<pre id="test">
|
|
<script class="testbody" type="application/javascript">
|
|
|
|
try {
|
|
URL.createObjectURL(undefined);
|
|
} catch(e) { }
|
|
|
|
window.addEventListener("message", function(e) {
|
|
gen.next(JSON.parse(e.data));
|
|
});
|
|
|
|
const innerSameSiteURI = "file_mozfiledataurl_inner.html";
|
|
const innerCrossSiteURI = "http://example.com/tests/dom/file/tests/file_mozfiledataurl_inner.html"
|
|
|
|
var fileNames = ["file_mozfiledataurl_img.jpg",
|
|
"file_mozfiledataurl_audio.ogg",
|
|
"file_mozfiledataurl_doc.html",
|
|
"file_mozfiledataurl_text.txt"];
|
|
|
|
function start() {
|
|
let xhr = new XMLHttpRequest;
|
|
xhr.open("GET", "/dynamic/getMyDirectory.sjs", false);
|
|
xhr.send();
|
|
let basePath = xhr.responseText;
|
|
|
|
let fullFileNames = [];
|
|
for (let name of fileNames) {
|
|
fullFileNames.push(basePath + name);
|
|
}
|
|
|
|
var script = SpecialPowers.loadChromeScript(SimpleTest.getTestFileURL("create_file_objects.js"));
|
|
|
|
script.addMessageListener("created-file-objects", function handler(files) {
|
|
script.removeMessageListener("created-file-objects", handler);
|
|
gen = runTest(files);
|
|
gen.next();
|
|
});
|
|
|
|
script.sendAsyncMessage("create-file-objects", {fileNames: fullFileNames});
|
|
};
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
function* runTest([imgFile, audioFile, docFile, xhrFile]) {
|
|
inner = document.getElementById('inner');
|
|
img = document.getElementById('img');
|
|
audio = document.getElementById('audio');
|
|
iframe = document.getElementById('iframe');
|
|
inner.onload = function() { gen.next("inner loaded"); };
|
|
|
|
// Attempt to load a image in this document
|
|
var fileurl = URL.createObjectURL(imgFile);
|
|
img.src = fileurl;
|
|
var e = (yield);
|
|
is(e.type, "load", "loaded successfully");
|
|
is(img.width, 120, "correct width");
|
|
is(img.height, 90, "correct height");
|
|
|
|
// Revoke url and attempt to load a image in this document
|
|
img.src = "file_mozfiledataurl_img.jpg";
|
|
is((yield).type, "load", "successfull reset image");
|
|
URL.revokeObjectURL(fileurl);
|
|
todo(false, "urls need to act like 404s, not fail to parse");
|
|
/* img.src = fileurl;
|
|
var e = (yield);
|
|
is(e.type, "error", "failed successfully");
|
|
isnot(img.width, 120, "correct error width");
|
|
isnot(img.height, 90, "correct error height");
|
|
*/
|
|
// Generate new fileurl and make sure it's different from the old
|
|
var oldFileurl = fileurl;
|
|
fileurl = URL.createObjectURL(imgFile);
|
|
isnot(fileurl, oldFileurl, "URL.createObjectURL generated the same url twice");
|
|
|
|
// Attempt to load an image in a different same-origin document
|
|
inner.src = innerSameSiteURI;
|
|
yield undefined;
|
|
inner.contentWindow.postMessage(JSON.stringify({img:fileurl}), "*");
|
|
var res = (yield);
|
|
is(res.type, "load", "loaded successfully");
|
|
is(res.width, 120, "correct width");
|
|
is(res.height, 90, "correct height");
|
|
|
|
// Attempt to load an image in a different cross-origin document
|
|
inner.src = innerCrossSiteURI;
|
|
yield undefined;
|
|
inner.contentWindow.postMessage(JSON.stringify({img:fileurl}), "*");
|
|
var res = (yield);
|
|
is(res.type, "error", "failed successfully");
|
|
isnot(res.width, 120, "correct error width");
|
|
isnot(res.height, 90, "correct error height");
|
|
|
|
// Attempt to load an audio in this document
|
|
fileurl = URL.createObjectURL(audioFile);
|
|
audio.src = fileurl;
|
|
var e = (yield);
|
|
is(e.type, "loadeddata", "loaded successfully");
|
|
|
|
// Revoke url and attempt to load a audio in this document
|
|
audio.src = "file_mozfiledataurl_audio.ogg";
|
|
is((yield).type, "loadeddata", "successfully reset audio");
|
|
URL.revokeObjectURL(fileurl);
|
|
todo(false, "urls need to act like 404s, not fail to parse");
|
|
/* img.src = fileurl;
|
|
var e = (yield);
|
|
is(e.type, "error", "failed successfully");
|
|
isnot(img.width, 120, "correct error width");
|
|
isnot(img.height, 90, "correct error height");
|
|
*/
|
|
// Generate new fileurl and make sure it's different from the old
|
|
var oldFileurl = fileurl;
|
|
fileurl = URL.createObjectURL(audioFile);
|
|
isnot(fileurl, oldFileurl, "URL.createObjectURL generated the same url twice");
|
|
|
|
// Attempt to load an audio in a different same-origin document
|
|
inner.src = innerSameSiteURI;
|
|
yield undefined;
|
|
inner.contentWindow.postMessage(JSON.stringify({audio:fileurl}), "*");
|
|
var res = (yield);
|
|
is(res.type, "loadeddata", "loaded successfully");
|
|
|
|
// Attempt to load an audio in a different cross-origin document
|
|
inner.src = innerCrossSiteURI;
|
|
yield undefined;
|
|
inner.contentWindow.postMessage(JSON.stringify({audio:fileurl}), "*");
|
|
var res = (yield);
|
|
is(res.type, "error", "failed successfully");
|
|
|
|
// Attempt to load a HTML document in an iframe in this document
|
|
iframe.onload = function() { gen.next(); };
|
|
iframe.src = "file_mozfiledataurl_doc.html";
|
|
yield undefined;
|
|
is(iframe.contentDocument.getElementsByTagName("p")[0].textContent,
|
|
"This here is a document!",
|
|
"iframe loaded successfully");
|
|
is(iframe.contentDocument.getElementById("img").width, 120,
|
|
"image in iframe width");
|
|
is(iframe.contentDocument.getElementById("img").height, 90,
|
|
"image in iframe height");
|
|
|
|
// Attempt to load a HTML document in an iframe in this document, using file url
|
|
fileurl = URL.createObjectURL(docFile);
|
|
iframe.src = fileurl;
|
|
yield undefined;
|
|
is(iframe.contentDocument.getElementsByTagName("p")[0].textContent,
|
|
"This here is a document!",
|
|
"iframe loaded successfully");
|
|
isnot(iframe.contentDocument.getElementById("img").width, 120,
|
|
"failed image in iframe width");
|
|
isnot(iframe.contentDocument.getElementById("img").height, 90,
|
|
"failed image in iframe height");
|
|
|
|
// Attempt to load a HTML document in an iframe in inner document
|
|
inner.src = innerSameSiteURI;
|
|
is((yield), "inner loaded", "correct gen.next()");
|
|
inner.contentWindow.postMessage(JSON.stringify({iframe:"file_mozfiledataurl_doc.html"}), "*");
|
|
var res = (yield);
|
|
is(res.type, "load", "loaded successfully");
|
|
is(res.text, "This here is a document!", "loaded successfully");
|
|
is(res.imgWidth, 120, "correct width");
|
|
|
|
// Attempt to load a HTML document in an iframe in inner document, using file url
|
|
inner.contentWindow.postMessage(JSON.stringify({iframe:fileurl}), "*");
|
|
var res = (yield);
|
|
is(res.type, "load", "loaded successfully");
|
|
is(res.text, "This here is a document!", "loaded successfully");
|
|
isnot(res.imgWidth, 120, "correct width");
|
|
|
|
// Attempt to load a HTML document in an iframe in inner cross-site document, using file url
|
|
inner.src = innerCrossSiteURI;
|
|
is((yield), "inner loaded", "correct gen.next()");
|
|
inner.contentWindow.postMessage(JSON.stringify({iframe:fileurl}), "*");
|
|
var res = (yield);
|
|
is(res.type, "error", "load failed successfully");
|
|
|
|
// Attempt to load file url using XHR
|
|
fileurl = URL.createObjectURL(xhrFile);
|
|
xhr = new XMLHttpRequest;
|
|
xhr.onload = function() { gen.next("XHR finished"); };
|
|
xhr.open("GET", fileurl);
|
|
xhr.send();
|
|
is((yield), "XHR finished", "correct gen.next()");
|
|
xhr.responseText == "Yarr, here be plaintext file, ya landlubber\n";
|
|
|
|
// Attempt to load file url using XHR in inner document
|
|
inner.src = innerSameSiteURI;
|
|
is((yield), "inner loaded", "correct gen.next()");
|
|
inner.contentWindow.postMessage(JSON.stringify({xhr:fileurl}), "*");
|
|
var res = (yield);
|
|
is(res.didThrow, undefined, "load successful");
|
|
is(res.text, "Yarr, here be plaintext file, ya landlubber\n", "load successful");
|
|
|
|
// Attempt to load file url using XHR
|
|
inner.src = innerCrossSiteURI;
|
|
is((yield), "inner loaded", "correct gen.next()");
|
|
inner.contentWindow.postMessage(JSON.stringify({xhr:fileurl}), "*");
|
|
var res = (yield);
|
|
is(res.didError, true, "load failed successfully");
|
|
|
|
SimpleTest.finish();
|
|
}
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
</html>
|