<html>
<head>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}
function dotest()
{
    document.getElementById('theelement').style.setProperty('visibility','hidden','');
    document.getElementById('theelement').style.removeProperty('-webkit-perspective');

    // force layout
    document.body.offsetTop;

    if (window.testRunner)
        testRunner.notifyDone();
}
</script>
</head>
<body onload="setTimeout(dotest,0)">
<p>This test verifies no assertion failure is raised when visibility and need for compositing are turned off at same time.</p>

<div id="theelement" class="abstop" style="position: absolute; -webkit-perspective: 1">This line should be invisible</div>
</body>
</html>
