clean-up navigation

security: check target and source origin before executing JS url

implement replacement-enabled flag as a HistoryEntryReplacement enum

add source origin string on loaddata

add LoadOrigin

iframe: remove optional load-data

auxiliaries: add load-data into info

constellation: remove url from Pipeline::new

check load origin: link to whatwg issue

switch loadorigin toplevel to constellation
This commit is contained in:
Gregory Terzian 2019-05-12 17:37:19 +08:00
parent 973a3448a4
commit 571beec179
14 changed files with 402 additions and 220 deletions

View file

@ -10,6 +10,9 @@
<div id="log">FAILED (This TC requires JavaScript enabled)</div>
<p><a href="javascript:log('JS URL')"></a></p>
<script>log('inline script #1');
window.addEventListener("beforeunload", function( event ) {
log('beforeunload event');
});
if(document.links[0].click){
document.links[0].click();
}else{
@ -25,13 +28,26 @@
log( 'inline script #2' );
var t = async_test()
function test() {
function final_test() {
// The JS URL part is required to run in an additional task,
// altough that is not fully consistently implemented,
// see https://github.com/whatwg/html/issues/3730#issuecomment-492071447
assert_any(assert_array_equals, eventOrder, [
['inline script #1', 'end script #1', 'JS URL', 'inline script #2'],
['inline script #1', 'end script #1', 'inline script #2', 'JS URL']]);
['inline script #1', 'end script #1', 'beforeunload event', 'inline script #2', 'JS URL'],
['inline script #1', 'end script #1', 'inline script #2', 'beforeunload event', 'JS URL']]);
t.done();
}
onload = t.step_func(test)
function test_on_load() {
// When the page loads, a task to run the navigate steps
// previously enqueued as part of following-hyperlinks,
// should have run, and have enqueued another task to execute the JS URL.
assert_any(assert_array_equals, eventOrder, [
['inline script #1', 'end script #1', 'beforeunload event', 'inline script #2'],
['inline script #1', 'end script #1', 'inline script #2', 'beforeunload event']]);
t.step_timeout(final_test, 1000)
}
onload = t.step_func(test_on_load);
</script>
</body></html>