<html>
<head>
<title></title>
<script type='text/javascript'>
function doGC()
{
    if (window.GCController)
        return GCController.collect();

    if (window.gc)
        return window.gc();

    for (var i = 0; i < 10000; i++)
        var s = new String("");
}

function sendTouchUp()
{
    doGC();
    // This touchend will cause a crash if the bug is present.
    eventSender.releaseTouchPoint(0);
    eventSender.touchEnd();
    // This touchstart will finish the test when we don't crash.
    eventSender.addTouchPoint(10,10);
    eventSender.touchStart();
}

function finishTest(e)
{
    testRunner.notifyDone();
}

document.ontouchstart =  finishTest;
</script>
</head>
<body onload="sendTouchUp();">
<p>If the test doesn't crash, then PASS</p>
</body>
</html>
