gecko-dev/dom/base/test/test_bug622088.html
Brian Grinstead 0d460e3432 Bug 1544322 - Part 2.2 - Remove the [type] attribute for one-liner <script> tags loading files in /tests/SimpleTest/ in dom/ r=bzbarsky
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
2019-04-16 03:53:28 +00:00

97 lines
3.4 KiB
HTML

<!DOCTYPE HTML>
<html>
<head>
<title>Bug 622088 - Test that XHR gives the referrer corresponding to the dynamic script context.</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<script src="/tests/SimpleTest/EventUtils.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=622088">Mozilla Bug 622088</a>
<pre id="test">
<iframe id='iframe' src='file_bug622088_inner.html'></iframe>
<iframe id='dataWindow' srcdoc="<html><head>
<script>function getXHRObject() { return new XMLHttpRequest(); }</script>
</head><body onload='parent.dataWindowLoaded()'>Hello!!</body></html>"></iframe>
<script class="testbody" type="application/javascript">
// Bug 622088 - Test that XHR gives the referrer corresponding to the
// dynamic script context.
const kOriginalLocation = location.href;
SimpleTest.waitForExplicitFinish();
var innerFinishedLoading = false;
function innerLoaded(inner) {
// Here, we're being called through inner's onload handler, so our referrer
// should be inner's URL.
var referrer = inner.doXHR();
is (referrer, String(inner.document.location), 'Expected inner frame location');
// Now change the location of the inner frame. This should be reflected in
// the XHR's referrer.
inner.history.pushState('', '', Math.random());
referrer = inner.doXHR();
is (referrer, String(inner.document.location), 'Expected inner frame location after pushstate');
innerFinishedLoading = true;
}
var dataWindowFinishedLoading = false;
function dataWindowLoaded() {
dataWindowFinishedLoading = true;
}
function callXHR() {
if (innerFinishedLoading && dataWindowFinishedLoading) {
var inner = document.getElementById('iframe').contentWindow;
var referrer = inner.doXHR();
is (referrer, String(inner.document.location),
'Expected inner frame location when called from outer frame.');
var referrer = inner.doXHR(new XMLHttpRequest());
is (referrer, String(document.location),
"Expected outer frame location when called with outer's XHR object.");
// Now do a request within the inner window using an XMLHttpRequest
// retrieved from a data: URI. The referrer should be this window, not the
// data: URI.
var dataWindow = document.getElementById('dataWindow').contentWindow;
var referrer = inner.doXHR(dataWindow.getXHRObject());
is (referrer, String(document.location),
"Expected outer frame location when called with data's XHR object.");
// Now do that test again, but after having changed the outer window's URI.
// This currently fails, due to basically bug 631949. It's not even clear
// what the right behavior is. So marking as a todo for now.
history.replaceState('', '', Math.random());
var referrer = inner.doXHR(dataWindow.getXHRObject());
todo_is (referrer, String(document.location),
"Expected outer frame location when called with data's XHR object " +
"after replaceState.");
// In case you're temped, you probably don't want to do history.pushState
// here and test again with the outer frame. Calling pushState on the
// outer frame messes up Mochitest in subtle ways.
history.replaceState('', '', kOriginalLocation);
SimpleTest.finish();
}
else {
// ugh.
setTimeout(callXHR, 0);
}
}
callXHR();
</script>
</pre>
</body>
</html>