<html>
<head>
    <script src="resources/cross-frame-access.js"></script>
</head>
<body>
<iframe src="http://localhost:8000/security/resources/cross-frame-iframe-for-get-test.html" style=""></iframe>
<pre id="console"></pre>
<script>

window.targetWindow = frames[0];

window.onload = function()
{
    if (window.layoutTestController)
        layoutTestController.dumpAsText();

    log("\n----- tests for getting/setting window.location and its properties -----\n");

    shouldBeTrue("canGet('targetWindow.location')");
    shouldBe("toString('targetWindow.location', '')", "''");

    log("Firefox allows access to 'location.toString' but throws an exception when you call it.");
    shouldBeFalse("canGet('targetWindow.location.toString')");
    shouldBeFalse("canSet('targetWindow.location.toString')");

    shouldBeFalse("canGet('targetWindow.location.href')");
    shouldBeFalse("canGet('targetWindow.location.hash')");
    shouldBeFalse("canGet('targetWindow.location.host')");
    shouldBeFalse("canGet('targetWindow.location.hostname')");
    shouldBeFalse("canGet('targetWindow.location.pathname')");
    shouldBeFalse("canGet('targetWindow.location.port')");
    shouldBeFalse("canGet('targetWindow.location.protocol')");
    shouldBeFalse("canGet('targetWindow.location.search')");

    // FIXME -- not sure these settable tests actually test anything (because you can't read the results)
    shouldBeFalse("canSet('targetWindow.location')");
    shouldBeFalse("canSet('targetWindow.location.href')");
    shouldBeFalse("canSet('targetWindow.location.hash')");
    shouldBeFalse("canSet('targetWindow.location.host')");
    shouldBeFalse("canSet('targetWindow.location.hostname')");
    shouldBeFalse("canSet('targetWindow.location.pathname')");
    shouldBeFalse("canSet('targetWindow.location.port')");
    shouldBeFalse("canSet('targetWindow.location.protocol')");
    shouldBeFalse("canSet('targetWindow.location.search')");

    shouldBeTrue("canGet('targetWindow.location.assign')");
    shouldBeTrue("canGet('targetWindow.location.reload')");
    shouldBeTrue("canGet('targetWindow.location.replace')");

    log("Firefox allows calling the 'location' functions exception, bizzarely, 'assign'");
    shouldBeTrue("canCall('targetWindow.location.assign', 'data:text/html,<p>in ur location object</p>')");
    shouldBeTrue("canCall('targetWindow.location.reload')");
    shouldBeTrue("canCall('targetWindow.location.replace', 'data:text/html,<p>in ur location object</p>')");

    // Work around DRT bug that causes subsequent tests to fail.
    window.stop();
}
</script>
</body>
</html>
