<html>
    <head>
        <script>
            function test()
            {
                if (window.layoutTestController) {
                    layoutTestController.dumpAsText();
                    layoutTestController.waitUntilDone();
                }
                
                window.crash = "crash";
                delete window.crash;
                    
                if (window.navigationController)
                    navigationController.evalAfterBackForwardNavigation("continueTestAfterNavigation()");
            }
            
            function continueTestAfterNavigation()
            {
                print("PASS: You didn't crash");
                
                if (window.layoutTestController)
                    layoutTestController.notifyDone();
            }

            function print(message) {
                var paragraph = document.createElement("p");
                paragraph.appendChild(document.createTextNode(message));
                document.getElementById("console").appendChild(paragraph);
            }
        </script>
    </head>

    <body onload="test()">
        <p>Bug: rdar://problem/4465598 REGRESSION (TOT): Crash occurs at http://maps.google.com/?output=html ( KJS::Identifier::add(KJS::UString::Rep*)</p> 
        <p>This cause for this bug was that the code to save the window object's property map tried to use
        the deleted property sentinel key as a normal pointer.</p>
        <p>To run this test in Safari:</p>
        <ol>
            <li><a href="resources/go-back.html">Click here to do a back/forward navigation.</a></li>
            <li>You should not crash.</li>
        </ol>
        <p>When the automated version of this test passes, you'll see a PASS message below.
        (The automated version is currently disabled because DumpRenderTree doesn't work
        with the back/forward cache enabled.)</p>
        <hr>
        <div id="console"></div>
    </body>
</html>