<!doctype html>
<title>beforeunload in iframe on navigation of parent</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
beforeunload_fired = false;
var t = async_test();

var base_count = 0;

onload = function() {setTimeout(t.step_func(function() {
  var iframe = document.getElementsByTagName("iframe")[0]
  iframe.onload = t.step_func(function() {
    iframe.onload = null;
    history.go(-1);
  });

  iframe.src = "beforeunload-on-navigation-of-parent-1.html";
}), 100)};

base_show = t.step_func(function() {
  base_count++;
  if (base_count > 1) {
    assert_true(beforeunload_fired);
    t.done();
  }
});

</script>
<iframe src="base.html"></iframe>
