mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-07 04:05:49 +00:00
df60bfed7e
CLOSED TREE
157 lines
5.0 KiB
HTML
157 lines
5.0 KiB
HTML
<html>
|
|
<head>
|
|
<script type="text/javascript" src="manifest.js"></script>
|
|
</head>
|
|
<body onload="setTimeout(load, 0);" onunload="done()">
|
|
<script>
|
|
|
|
// Page URL: http://example.org/tests/content/media/test/file_access_controls.html
|
|
|
|
var gResource = getPlayableVideo(gSmallTests).name;
|
|
|
|
var gTests = [
|
|
{
|
|
// Test 0
|
|
url: "redirect.sjs?domain=example.com&file="+ gResource,
|
|
result: "error",
|
|
description: "Won't load when redirected to different domain",
|
|
},{
|
|
// Test 1
|
|
url: "redirect.sjs?domain=example.com&allowed&file=" + gResource,
|
|
result: "loadeddata",
|
|
description: "Can load when redirected to different domain with allow-origin",
|
|
},{
|
|
// Test 2
|
|
url: "redirect.sjs?domain=test1.example.org&file=" + gResource,
|
|
result: "error",
|
|
description: "Won't load when redirected to subdomain",
|
|
},{
|
|
// Test 3
|
|
url: "redirect.sjs?domain=test1.example.org&allowed&file=" + gResource,
|
|
result: "loadeddata",
|
|
description: "Can load when redirected to subdomain with allow-origin",
|
|
},{
|
|
// Test 4
|
|
url: "redirect.sjs?domain=example.org&file=" + gResource,
|
|
result: "loadeddata",
|
|
description: "Can load when redirected to same domain",
|
|
},{
|
|
// Test 5
|
|
url: "http://example.org/tests/content/media/test/" + gResource,
|
|
result: "loadeddata",
|
|
description: "Can load from same domain"
|
|
},{
|
|
// Test 6
|
|
url: "http://example.org:8000/tests/content/media/test/" + gResource,
|
|
result: "error",
|
|
description: "Won't load from different port on same domain"
|
|
},{
|
|
// Test 7
|
|
url: "http://example.org:8000/tests/content/media/test/allowed.sjs?" + gResource,
|
|
result: "loadeddata",
|
|
description: "Can load from different port on same domain with allow-origin",
|
|
},{
|
|
// Test 8
|
|
url: "http://example.com/tests/content/media/test/" + gResource,
|
|
result: "error",
|
|
description: "Won't load cross domain",
|
|
},{
|
|
// Test 9
|
|
url: "http://example.com/tests/content/media/test/allowed.sjs?" + gResource,
|
|
result: "loadeddata",
|
|
description: "Can load cross domain with allow-origin",
|
|
},{
|
|
// Test 10
|
|
url: "http://test1.example.org/tests/content/media/test/allowed.sjs?" + gResource,
|
|
result: "loadeddata",
|
|
description: "Can load from subdomain with allow-origin",
|
|
},{
|
|
// Test 11
|
|
url: "http://test1.example.org/tests/content/media/test/" + gResource,
|
|
result: "error",
|
|
description: "Won't load from subdomain",
|
|
}
|
|
];
|
|
|
|
var gTestNum = 0;
|
|
var gVideo = null;
|
|
var gTestedRemoved = false;
|
|
|
|
function eventHandler(event) {
|
|
//dump((gTestNum - 1) + ": " + event.type + "\n");
|
|
var video = event.target;
|
|
opener.postMessage({"result": (event.type == video.expectedResult),
|
|
"message": video.testDescription + (gTestedRemoved ? " (element not in document)" : " (element in document)")},
|
|
"http://mochi.test:8888");
|
|
// Make sure any extra events cause an error
|
|
video.expectedResult = "<none>";
|
|
nextTest();
|
|
}
|
|
|
|
function createVideo() {
|
|
var v = document.createElement('video');
|
|
v.addEventListener('loadeddata', eventHandler, false);
|
|
v.addEventListener('error', eventHandler, false);
|
|
v.crossOrigin = 'anonymous';
|
|
return v;
|
|
}
|
|
|
|
function load() {
|
|
opener.postMessage({"result": (window.location.href == "http://example.org/tests/content/media/test/file_access_controls.html"),
|
|
"message": "We must be on a example.org:80"},
|
|
"http://mochi.test:8888");
|
|
|
|
nextTest();
|
|
}
|
|
|
|
function nextTest() {
|
|
//dump("nextTest() called, gTestNum="+gTestNum+" gTestedRemoved="+gTestedRemoved+"\n");
|
|
if (gTestNum == gTests.length) {
|
|
//dump("gTestNum == gTests.length\n");
|
|
if (!gTestedRemoved) {
|
|
// Repeat all tests with element removed from doc, should get same result.
|
|
gTestedRemoved = true;
|
|
gTestNum = 0;
|
|
} else {
|
|
//dump("Exiting...\n");
|
|
// We're done, exit the test.
|
|
window.close();
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (gVideo && gVideo.parentNode)
|
|
gVideo.parentNode.removeChild(gVideo);
|
|
|
|
gVideo = null;
|
|
SpecialPowers.forceGC();
|
|
|
|
gVideo = createVideo();
|
|
gVideo.expectedResult = gTests[gTestNum].result;
|
|
gVideo.testDescription = gTests[gTestNum].description;
|
|
// Uniquify the resource URL to ensure that the resources loaded by earlier or subsequent tests
|
|
// don't overlap with the resources we load here, which are loaded with non-default preferences set.
|
|
// We also want to make sure that an HTTP fetch actually happens for each testcase.
|
|
var url = gTests[gTestNum].url;
|
|
var random = Math.floor(Math.random()*1000000000);
|
|
url += (url.search(/\?/) < 0 ? "?" : "&") + "rand=" + random;
|
|
gVideo.src = url;
|
|
//dump("Starting test " + gTestNum + " at " + gVideo.src + " expecting:" + gVideo.expectedResult + "\n");
|
|
if (!gTestedRemoved) {
|
|
document.body.appendChild(gVideo);
|
|
// Will cause load() to be invoked.
|
|
} else {
|
|
gVideo.load();
|
|
}
|
|
gTestNum++;
|
|
}
|
|
|
|
function done() {
|
|
opener.postMessage({"done": "true"}, "http://mochi.test:8888");
|
|
}
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|
|
|