<!--

/*
-->
<!doctype html>
<title>navigating 2</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id=log></div>
<script>
var date;
var newDate;
</script>
<iframe></iframe>
<script>
var t = async_test();
var iframe = document.querySelector('iframe');
onload = t.step_func(function() {
  iframe.src = "001-1.html?" + Math.random();
});
var start_test = t.step_func(function() {
  window[0].document.links[0].click();
});
var after_load = t.step_func(function() {
  newDate = new Date();
  setTimeout(this.step_func(function() {
    assert_less_than(Number(date), Number(newDate));
    assert_equals(window[0].document.title, 'foo');
    this.done();
  }), 500);
});
</script>
<!--
*/
//-->

