зеркало из https://github.com/mozilla/gecko-dev.git
184 строки
5.4 KiB
HTML
184 строки
5.4 KiB
HTML
<!--
|
|
Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/
|
|
-->
|
|
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<title>Bug 94048 - test install event.</title>
|
|
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
|
</head>
|
|
<body>
|
|
<p id="display"></p>
|
|
<div id="content" style="display: none"></div>
|
|
<div id="style-test" style="background-color: white"></div>
|
|
<pre id="test"></pre>
|
|
<script class="testbody" type="text/javascript">
|
|
function my_ok(result, msg) {
|
|
window.opener.postMessage({status: "ok", result: result, message: msg}, "*");
|
|
}
|
|
|
|
function check_intercepted_script() {
|
|
document.getElementById('intercepted-script').test_result =
|
|
document.currentScript == document.getElementById('intercepted-script');
|
|
}
|
|
|
|
function fetchXHR(name, onload, onerror, headers) {
|
|
gExpected++;
|
|
|
|
onload = onload || function() {
|
|
my_ok(false, "load should not complete successfully");
|
|
finish();
|
|
};
|
|
onerror = onerror || function() {
|
|
my_ok(false, "load should be intercepted successfully");
|
|
finish();
|
|
};
|
|
|
|
var x = new XMLHttpRequest();
|
|
x.open('GET', name, true);
|
|
x.onload = function() { onload(x) };
|
|
x.onerror = function() { onerror(x) };
|
|
headers = headers || [];
|
|
headers.forEach(function(header) {
|
|
x.setRequestHeader(header[0], header[1]);
|
|
});
|
|
x.send();
|
|
}
|
|
|
|
var gExpected = 0;
|
|
var gEncountered = 0;
|
|
function finish() {
|
|
gEncountered++;
|
|
if (gEncountered == gExpected) {
|
|
window.opener.postMessage({status: "done"}, "*");
|
|
}
|
|
}
|
|
|
|
function test_onload(creator, complete) {
|
|
gExpected++;
|
|
var elem = creator();
|
|
elem.onload = function() {
|
|
complete.call(elem);
|
|
finish();
|
|
};
|
|
elem.onerror = function() {
|
|
my_ok(false, elem.tagName + " load should complete successfully");
|
|
finish();
|
|
};
|
|
document.body.appendChild(elem);
|
|
}
|
|
|
|
function expectAsyncResult() {
|
|
gExpected++;
|
|
}
|
|
|
|
my_ok(navigator.serviceWorker.controller != null, "should be controlled");
|
|
</script>
|
|
<script src="fetch_tests.js"></script>
|
|
<script>
|
|
test_onload(function() {
|
|
var elem = document.createElement('img');
|
|
elem.src = "nonexistent_image.gifs";
|
|
elem.id = 'intercepted-img';
|
|
return elem;
|
|
}, function() {
|
|
my_ok(this.complete, "image should be complete");
|
|
my_ok(this.naturalWidth == 1 && this.naturalHeight == 1, "image should be 1x1 gif");
|
|
});
|
|
|
|
test_onload(function() {
|
|
var elem = document.createElement('script');
|
|
elem.id = 'intercepted-script';
|
|
elem.src = "nonexistent_script.js";
|
|
return elem;
|
|
}, function() {
|
|
my_ok(this.test_result, "script load should be intercepted");
|
|
});
|
|
|
|
test_onload(function() {
|
|
var elem = document.createElement('link');
|
|
elem.href = "nonexistent_stylesheet.css";
|
|
elem.rel = "stylesheet";
|
|
return elem;
|
|
}, function() {
|
|
var styled = document.getElementById('style-test');
|
|
my_ok(window.getComputedStyle(styled).backgroundColor == 'rgb(0, 0, 0)',
|
|
"stylesheet load should be intercepted");
|
|
});
|
|
|
|
test_onload(function() {
|
|
var elem = document.createElement('iframe');
|
|
elem.id = 'intercepted-iframe';
|
|
elem.src = "nonexistent_page.html";
|
|
return elem;
|
|
}, function() {
|
|
my_ok(this.test_result, "iframe load should be intercepted");
|
|
});
|
|
|
|
test_onload(function() {
|
|
var elem = document.createElement('iframe');
|
|
elem.id = 'intercepted-iframe-2';
|
|
elem.src = "navigate.html";
|
|
return elem;
|
|
}, function() {
|
|
my_ok(this.test_result, "iframe should successfully load");
|
|
});
|
|
|
|
gExpected++;
|
|
var xmlDoc = document.implementation.createDocument(null, null, null);
|
|
xmlDoc.load('load_cross_origin_xml_document_synthetic.xml');
|
|
xmlDoc.onload = function(evt) {
|
|
var content = new XMLSerializer().serializeToString(evt.target);
|
|
my_ok(!content.includes('parsererror'), "Load synthetic cross origin XML Document should be allowed");
|
|
finish();
|
|
};
|
|
|
|
gExpected++;
|
|
var xmlDoc = document.implementation.createDocument(null, null, null);
|
|
xmlDoc.load('load_cross_origin_xml_document_cors.xml');
|
|
xmlDoc.onload = function(evt) {
|
|
var content = new XMLSerializer().serializeToString(evt.target);
|
|
my_ok(!content.includes('parsererror'), "Load CORS cross origin XML Document should be allowed");
|
|
finish();
|
|
};
|
|
|
|
gExpected++;
|
|
var xmlDoc = document.implementation.createDocument(null, null, null);
|
|
xmlDoc.load('load_cross_origin_xml_document_opaque.xml');
|
|
xmlDoc.onload = function(evt) {
|
|
var content = new XMLSerializer().serializeToString(evt.target);
|
|
my_ok(content.includes('parsererror'), "Load opaque cross origin XML Document should not be allowed");
|
|
finish();
|
|
};
|
|
|
|
gExpected++;
|
|
var worker = new Worker('nonexistent_worker_script.js');
|
|
worker.onmessage = function(e) {
|
|
my_ok(e.data == "worker-intercept-success", "worker load intercepted");
|
|
finish();
|
|
};
|
|
worker.onerror = function() {
|
|
my_ok(false, "worker load should be intercepted");
|
|
};
|
|
|
|
gExpected++;
|
|
var worker = new Worker('fetch_worker_script.js');
|
|
worker.onmessage = function(e) {
|
|
if (e.data == "finish") {
|
|
finish();
|
|
} else if (e.data == "expect") {
|
|
gExpected++;
|
|
} else if (e.data.type == "ok") {
|
|
my_ok(e.data.value, "Fetch test on worker: " + e.data.msg);
|
|
}
|
|
};
|
|
worker.onerror = function() {
|
|
my_ok(false, "worker should not cause any errors");
|
|
};
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
</html>
|