<!DOCTYPE html>
<html>
<style>
.style1 { display: table-row; content: counter(section); }
.style2 { position: fixed; }
.style3 { vertical-align: super; -webkit-appearance: button; -webkit-column-width: 100px; }
.style3:nth-of-type(2n) { display: list-item; }
</style>
<script>
window.onload = function() {
    div1 = document.createElement('div');
    document.documentElement.appendChild(div1);

    spanElem1 = document.createElement('span');
    spanElem1.setAttribute('class', 'style3');
    document.documentElement.appendChild(spanElem1);
    
    spanElem2 = document.createElement('span');
    spanElem1.appendChild(spanElem2);
    spanElem1.appendChild(document.createTextNode('abc'));

    textareaElem = document.createElement('textarea');
    textareaElem.setAttribute('class', 'style1');
    spanElem2.appendChild(textareaElem);

    canvasElem = document.createElement('canvas');
    spanElem2.appendChild(canvasElem);

    paragraphElem = document.createElement('p');
    paragraphElem.setAttribute('class', 'style2');
    spanElem2.appendChild(paragraphElem);

    document.execCommand("SelectAll", false, "");
    window.scrollBy(-15, -48);
    document.documentElement.offsetHeight;

    div1.setAttribute('class', 'style3');
    spanElem2.removeChild(paragraphElem);

    if (window.testRunner)
        testRunner.dumpAsText();
}
</script>
<body>
PASS, if no crash or assert in debug
</body>
</html>
