<script>
onload = function() {
  if (location.search.substring(1).length == 0) {
    sessionStorage.testStage = 0;
    if (window.testRunner) {
      testRunner.dumpAsText();
      testRunner.dumpBackForwardList();
      testRunner.waitUntilDone();
    }
  }

  // Location changes need to happen outside the onload handler to generate history entries.
  setTimeout(function() {
      switch (sessionStorage.testStage++) {
      case 0:
        location = "?a";
        break;
      case 1:
        location = "?b";
        break;
      case 2:
        history.back();
        break;
      case 3:
        history.pushState(null, null);
        if (window.testRunner)
          testRunner.notifyDone();
        break;
      }
    }, 0);
}
onunload = function() {
  // disable page cache
}
</script>
<body>
You should NOT see an active forward button.
</body>
