<!doctype html>
<title>Restoring window.name on cross-origin history traversal</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<pre id="step_log"></pre>
<iframe id="test"></iframe>
<script>

var t = async_test(undefined, {timeout:10000});
var f = document.getElementById("test");
var l = document.getElementById("step_log");
var navigated = false;

log = function(t) {l.textContent += ("\n" + t)}

var steps = [
  function() {f.src = "browsing_context_name-1.html"},
  function() {
                var navigated = true;
                assert_equals(f.contentWindow.name, "test", "Initial load");
                setTimeout(next, 0);
              },
  function() {f.src = f.src.replace("http://", "http://www.").replace("browsing_context_name-1", "browsing_context_name-2");},
  function() {
               setTimeout(next, 0);
             },
  function() {history.back(); setTimeout(next, 500)},
  function() {
               assert_equals(f.contentWindow.name, "test", "After navigation");
               t.done();
             }
].map(function(x) {return t.step_func(function() {log("Step " + step); x()})});

var step = 0;
next = t.step_func(function() {steps[step++]()});

f.onload=next;

onload = setTimeout(next, 0);
</script>
