<style>
body {
    font-family: ahem;
    -webkit-font-smoothing: none;
}
</style>

<div>
  <span>1</span>
  <span id='c2'>2</span>
</div>

<script>
    if ("webkitRequestFullScreen" in Element.prototype) {
        if (window.layoutTestController) 
            layoutTestController.waitUntilDone();

        var callback;
        var fullscreenChanged = function(event)
        {
            if (callback)
                callback(event)
        };
        document.addEventListener('webkitfullscreenchange', fullscreenChanged);

        document.body.offsetTop;
        var span = document.getElementById('c2');
        var div = span.parentNode;

        var spanEnteredFullScreen = function(event) {
            setTimeout(function () {
                span.appendChild(document.createElement('div'));
                callback = function() {
                    if (window.layoutTestController)
                        layoutTestController.notifyDone();
                }
                document.webkitCancelFullScreen();
            }, 0);
        };

        callback = spanEnteredFullScreen;

        document.addEventListener('keydown', function () {
            span.webkitRequestFullScreen();
        });
        if (window.eventSender)
            eventSender.keyDown('a');
    }
</script>
