<html>
<head>
<script src="../../http/tests/inspector/inspector-test.js"></script>
<script src="../../http/tests/inspector/debugger-test.js"></script>
<script>

function testFunction()
{
    debugger;
}

var test = function()
{
    InspectorTest.startDebuggerTest(step1);

    function step1()
    {
        InspectorTest.runTestFunctionAndWaitUntilPaused(step2);
    }

    function step2()
    {
        InspectorTest.reloadPage(step3);
    }

    function step3()
    {
        InspectorTest.completeDebuggerTest();
    }
}

</script>
</head>

<body onload="runTest()">
<p>
Tests "reload" from within inspector window while on pause.
</p>

</body>
</html>
