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

function testFunction()
{
    testFunction.invocationCount++;
    debugger;
}

testFunction.invocationCount = 0;

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

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

    function step2()
    {
        InspectorTest.evaluateInConsole("testFunction(); testFunction.invocationCount", step3);
        InspectorTest.addResult("Set timer for test function.");
    }

    function step3(result)
    {
        InspectorTest.addResult("testFunction.invocationCount = " + result);
        InspectorTest.completeDebuggerTest();
    }
}

</script>
</head>

<body onload="runTest()">
<p>
Tests that debugger will skip breakpoint hit when script execution is already paused. <a href="https://bugs.webkit.org/show_bug.cgi?id=41768">See bug</a>
</p>

</body>
</html>
