<html>
<head>
    <script src="resources/cross-frame-access.js"></script>
    <script>
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.dumpChildFramesAsText();
            testRunner.waitUntilDone();
        }

        receiver = function(e)
        {
            if (e.data == "setValuesComplete")
                deleteTest();
        }
        addEventListener('message', receiver, false);

        deleteTest = function()
        {
            targetWindow = frames[0];

            shouldBe("eval('delete targetWindow.existingProperty')", "false");
            shouldBe("eval('delete targetWindow[1]')", "false");
            shouldBe("eval('delete targetWindow.history.existingProperty')", "false");
            shouldBe("eval('delete targetWindow.history[1]')", "false");
            shouldBe("eval('delete targetWindow.location.existingProperty')", "false");
            shouldBe("eval('delete targetWindow.location[1]')", "false");

            targetWindow.postMessage("deletingValuesComplete", "*");
        }
    </script>
</head>
<body>
    <iframe src="http://localhost:8000/security/resources/cross-frame-iframe-for-delete-test.html"></iframe>
    <pre id="console"></pre>
</body>
</html>
