<html>
<head>
<script src="../../resources/gc.js"></script>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

function load()
{
    style = document.createElement('style');
    style.textContent = '@font-face { font-family: "A"; }';
    document.head.appendChild(style);
    rulestyle = document.styleSheets[0].cssRules[0].style;
    document.head.removeChild(style);
    style = null;
    setTimeout(crash, 0);
}

function crash()
{
    gc();
    obj = rulestyle.parentRule;
    // If the gc() actually successfully reaps everything it can, then obj
    // will end up null (post-fix). gc() is not guaranteed to reap the font-face
    // rule, however, particularly in the browser context.
    if (obj)
        obj = obj.foo;
    document.body.innerText = 'PASS';
    if (window.testRunner)
        testRunner.notifyDone()
}
</script>
</head>
<body onload="load()"></body>
</html>
