docshell/test/mochitest/test_bug640387_2.html
author Brian Grinstead <bgrinstead@mozilla.com>
Tue, 16 Apr 2019 03:50:44 +0000
changeset 469640 c9c0c6f2eed54a187e124942e53c3660b4cf17d8
parent 465756 cb0dd2254bc35f7c7f52ed546f9461a00dc7786c
permissions -rw-r--r--
Bug 1544322 - Part 2.1 - Remove the [type] attribute for one-liner <script> tags loading files in /tests/SimpleTest/ in everything except for dom/ r=bzbarsky This excludes dom/, otherwise 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/D27456

<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=640387
-->
<head>
  <title>Test for Bug 640387</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=640387">Mozilla Bug 640387</a>

<!-- Test that, when going from

  http://example.com/#foo

to

  http://example.com/

via a non-history load, we do a true load, rather than a scroll. -->

<script type='application/javascript'>
SimpleTest.waitForExplicitFinish();

var callbackOnLoad = false;
function childLoad() {
  if (callbackOnLoad) {
    callbackOnLoad = false;
    gGen.next();
  }
}

var errorOnHashchange = false;
var callbackOnHashchange = false;
function childHashchange() {
  if (errorOnHashchange) {
    ok(false, "Got unexpected hashchange.");
  }
  if (callbackOnHashchange) {
    callbackOnHashchange = false;
    gGen.next();
  }
}

function* run_test() {
  var iframe = $("iframe").contentWindow;

  ok(true, "Got first load");

  // Spin the event loop so we exit the onload handler.
  SimpleTest.executeSoon(function() { gGen.next(); });
  yield undefined;

  let origLocation = iframe.location + "";
  callbackOnHashchange = true;
  iframe.location.hash = "#1";
  // Wait for a hashchange event.
  yield undefined;

  ok(true, "Got hashchange.");

  iframe.location = origLocation;
  // This should produce a load event and *not* a hashchange, because the
  // result of the load is a different document than we had previously.
  callbackOnLoad = true;
  errorOnHashchange = true;
  yield undefined;

  ok(true, "Got final load.");

  // Spin the event loop to give hashchange a chance to fire, if it's going to.
  SimpleTest.executeSoon(function() { gGen.next(); });
  yield undefined;

  SimpleTest.finish();
}

callbackOnLoad = true;
var gGen = run_test();

</script>

<iframe id='iframe' src='file_bug640387.html'></iframe>

</body>
</html>