Auto merge of #15098 - nox:load-fixes, r=jdm

Mark the page source as loaded only after parsing is done

<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/15098)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2017-01-19 07:32:45 -08:00 committed by GitHub
commit 6272cb5a51
12 changed files with 117 additions and 107 deletions

View file

@ -1,43 +1,43 @@
<!DOCTYPE html>
<html>
<head>
<title> adding several types of scripts through the DOM and removing some of them confuses scheduler (slow-loading scripts) </title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="testlib/testlib.js"></script>
<script type="text/javascript">
setup({explicit_done:true});
var head=document.getElementsByTagName('head')[0];
function createScript(url, contents) {
props = {};
if (url) {
props.src = url;
}
return testlib.addScript(contents, props, head, false);
}
var t = async_test(undefined, {timeout:10000})
<head>
<title> adding several types of scripts through the DOM and removing some of them confuses scheduler (slow-loading scripts) </title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="testlib/testlib.js"></script>
<script type="text/javascript">
setup({ explicit_done: true });
var head = document.getElementsByTagName('head')[0];
function createScript(url, contents) {
props = {};
if (url) {
props.src = url;
}
return testlib.addScript(contents, props, head, false);
}
var t = async_test(undefined, { timeout: 10000 })
function test() {
document.getElementById("log").textContent = "Please wait..."
var url = 'scripts/include-1.js?pipe=trickle(d1)';
var script = createScript(url);
var script2 = createScript('', 'log("Script #2 ran")');
head.removeChild(script2);
var url = 'scripts/include-2.js?pipe=trickle(d2)';
var script3 = createScript(url);
head.removeChild(script3);
function test() {
document.getElementById("log").textContent = "Please wait..."
var url = 'scripts/include-1.js?pipe=trickle(d1)';
var script = createScript(url);
var script2 = createScript('', 'log("Script #2 ran")');
head.removeChild(script2);
var url = 'scripts/include-2.js?pipe=trickle(d2)';
var script3 = createScript(url);
head.removeChild(script3);
setTimeout(t.step_func(function() {
done();
assert_array_equals(eventOrder, ['Script #2 ran', 'external script #1', 'external script #2']);
t.done();
}), 5500);
setTimeout(t.step_func(function () {
done();
assert_array_equals(eventOrder, ['Script #2 ran', 'external script #1', 'external script #2']);
t.done();
}), 5500);
};
onload = t.step_func(test)
</script>
</head>
<body>
<div id="log">FAILED (This TC requires JavaScript enabled)</div>
</body>
</html*>
};
onload = t.step_func(test)
</script>
</head>
<body>
<div id="log">FAILED (This TC requires JavaScript enabled)</div>
</body>
</html>

View file

@ -1,32 +1,31 @@
<!DOCTYPE html>
<html><head>
<title>scheduler: external defer script created with createContextualFragment</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="testlib/testlib.js"></script>
<title>scheduler: external defer script created with createContextualFragment</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="testlib/testlib.js"></script>
</head>
<div id="log"></div>
<script>
log('inline script #1');
var t = async_test();
t.step(function() {
var range = document.createRange();
var fragment = range.createContextualFragment("<script defer src='scripts/include-1.js?pipe=trickle(d1)'><\/script>");
document.body.appendChild(fragment.firstChild);
});
addEventListener("DOMContentLoaded", t.step_func(function() {
assert_array_equals(eventOrder, ['inline script #1', 'end inline script #1']);
t.done();
}));
<body>
<div id="log"></div>
<script>
log('inline script #1');
var t = async_test();
addEventListener("load", t.step_func(function() {
assert_array_equals(eventOrder, ['inline script #1', 'end inline script #1', 'external script #1']);
t.done();
}));
t.step(function () {
var range = document.createRange();
var fragment = range.createContextualFragment("<script defer src='scripts/include-1.js?pipe=trickle(d1)'><\/script>");
document.body.appendChild(fragment.firstChild);
});
log('end inline script #1');
</script>
addEventListener("DOMContentLoaded", t.step_func(function () {
assert_array_equals(eventOrder, ['inline script #1', 'end inline script #1']);
}));
addEventListener("load", t.step_func_done(function () {
assert_array_equals(eventOrder, ['inline script #1', 'end inline script #1', 'external script #1']);
}));
log('end inline script #1');
</script>
</body>
</html>