<head>
<script> 
// Test that the very first navigation made on a newly created IFRAME does not
// create another session history entry, even if the IFRAME is already attached
// to the document and the page has fully loaded.
function runTest() {
  var f = document.createElement("iframe");
  document.body.appendChild(f);

  f.src = "data:,hello";

  f.onload = function() {
    document.body.innerText = "history.length = " + history.length;
    if (window.testRunner)
      testRunner.notifyDone();
  }
}

onunload = function() {
  // Disable page cache
}

onload = function() {
  if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.dumpBackForwardList();
    testRunner.clearBackForwardList();
    testRunner.waitUntilDone();
  }
  setTimeout(runTest, 0);
}
</script> 
</head>
<body></body>
