<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
    <script src="../../../resources/js-test-pre.js"></script>
</head>
<body>
<iframe src="blank.html"></iframe>
<script language="JavaScript" type="text/javascript">
    var resetWidth;
    var resetHeight;
    var resetX;
    var resetY;

    function reset()
    {
        window.moveTo(0, 0);
        window.resizeTo(300, 200);
        resetWidth = window.outerWidth;
        resetHeight = window.outerHeight;
        resetX = window.screenX;
        resetY = window.screenY;
    }

    if (window.testRunner)
        testRunner.dumpAsText();

    reset();

    description("This tests that you can't move/resize a window by calling a move/resize on a subframe.");

    // resizeTo /////////////////////////
    debug('');
    debug('frames[0].resizeTo Tests');
    debug('');

    frames[0].resizeTo(100, 100);
    shouldBe('window.outerWidth', 'resetWidth');
    shouldBe('window.outerHeight', 'resetHeight');
    reset();

    // resizeBy /////////////////////////
    debug('');
    debug('frames[0].resizeBy Tests');
    debug('');

    frames[0].resizeBy(100, 100);
    shouldBe('window.outerWidth', 'resetWidth');
    shouldBe('window.outerHeight', 'resetHeight');
    reset();

    // moveTo /////////////////////////
    debug('');
    debug('frames[0].moveTo Tests');
    debug('');

    frames[0].moveTo(100, 100);
    shouldBe('window.screenX', 'resetX');
    shouldBe('window.screenY', 'resetY');
    reset();

    // moveBy /////////////////////////
    debug('');
    debug('frames[0].moveBy Tests');
    debug('');

    frames[0].moveBy(100, 100);
    shouldBe('window.screenX', 'resetX');
    shouldBe('window.screenY', 'resetY');
    reset();
</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>
