<!doctype html>
<!-- this tests the spec as it hopefully will be once bug https://www.w3.org/Bugs/Public/show_bug.cgi?id=17155 is fixed -->
<title>Fragment Navigation: hashchange event multiple changes old/newURL</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<body>
<div id="log"></div>
<script>
var t = async_test();
t.step(function() {
  var original_url = location.href;
  assert_equals(location.hash, "", "Page must be loaded with no hash");
  location.hash = "test";

  var count = 0;
  var mid_url = location.href;

  addEventListener("hashchange",
                   t.step_func(function(e) {
                     if (count === 0) {
                       assert_equals(e.oldURL, original_url, "oldURL property first update");
                       assert_equals(e.newURL, mid_url, "newURL property first update");
                       count = 1;
                     } else if (count === 1) {
                       assert_equals(e.oldURL, mid_url, "oldURL property second update");
                       assert_equals(e.newURL, location.href, "newURL property second update");
                       location.hash = "";
                       t.done();
                     }
                   }), true);

  location.hash = "test1";
});
</script>
