<html>
<style type="text/css">
.firstDivStyle + .secondDivStyle { display: table-footer-group;  }
.rubyStyle { position: relative; }
.secondDivStyle { -webkit-appearance: button; }
.posAbsolute { position: absolute; }
</style>
<script type="text/javascript">
function dumpTest() {
    testRunner.notifyDone();
}
function runTest() {
    document.getElementById('ruby').innerHTML = '<audio controls="controls" id="aud" src="blah.ogg" class="posAbsolute"></audio>';
    height = document.body.clientHeight; // Force layout
    document.body.removeChild(document.getElementById('remove')); // Cause anonymous blocks containing 'secondDivStyle' and 'ruby' to be merged
    document.getElementById('aud').style.color = "blue"; // Force style recalc
    setTimeout('dumpTest()', 10);
    if (window.testRunner) {
        testRunner.waitUntilDone();
	testRunner.dumpAsText();
    }
}
window.onload = runTest;
</script>
<body>
PASS, if no exception or crash in debug
  <div class="firstDivStyle"></div>
  <div class="secondDivStyle"></div>
  <div id="remove"></div>
  <ruby id="ruby" class="rubyStyle"></ruby>
</body>
</html>
