| <!doctype html> |
| <title>Queue a task to fire hashchange event</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <div id="log"></div> |
| <script> |
| t = async_test(); |
| window.onload = t.step_func(function () { |
| if (location.href.toString().indexOf("#") > -1) { |
| location.href = location.href.replace(/#.*$/,''); |
| return; |
| } |
| var root = location.href; |
| var oldURLs = []; |
| var newURLs = []; |
| |
| var timer = null; |
| |
| location.hash = 'foo'; |
| window.onhashchange = t.step_func(function (e) { |
| assert_true(e.isTrusted); |
| assert_equals(e.target, window); |
| assert_equals(e.type, "hashchange"); |
| assert_true(e instanceof HashChangeEvent); |
| assert_true(e.bubbles, "bubble"); |
| assert_false(e.cancelable, "cancelable"); |
| oldURLs.push(e.oldURL); |
| newURLs.push(e.newURL); |
| if (newURLs.length === 2) { |
| check_result(); |
| } else if (timer === null) { |
| timer = setTimeout(function() {check_result()}, 500); |
| } |
| }) |
| |
| check_result = t.step_func(function() { |
| clearTimeout(timer); |
| try { |
| assert_array_equals([root, root+"#foo"], oldURLs, "e.newURL"); |
| assert_array_equals([root+"#foo", root+"#bar"], newURLs, "e.newURL"); |
| t.done(); |
| } finally { |
| location.hash = ""; |
| } |
| }); |
| |
| location.hash = 'bar'; |
| }); |
| </script> |