<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.contentWindow.location = "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>
