<script>
if (window.layoutTestController)
     layoutTestController.dumpEditingCallbacks();
</script>
<script type="text/javascript" src="../editing.js"></script>
<div contenteditable>
<table><tbody><tr><td>
    <table style="position: relative; z-index: 0;">
        <tbody><tr>
            <td>
                <font class="Apple-style-span" color="red">
                    <span class="Apple-style-span" style="text-decoration:underline;">
                        <td>
                            <a href="http://www.cantonrep.com/index.php?ID=373537&Category=17&subCategoryID=30" id=r-11i_1119206349>
                                <img src=http://news.google.com/news?imgefp=Se6UJuKIqiUJ&imgurl=www.cantonrep.com/photos/2007/08/m_31mOhio_State.jpg width=80 height=80 alt="" border=1>
                                <br>
                                <font size=-2>Canton Repository (subscription)</font>
                            </a>
                        </td>
                        <td valign=top>
                            <a href="http://news.google.com/?ned=us&ncl=1119206349&hl=en&topic=s">
                                <b id="test">all 79 news articles</b>
                            </a>
                        </td>
                    </span>
                </font>
            </td>
            <td valign=top>
                <br>
            <td>
        </tr></tbody>
    </table>
</td></tr></tbody></table>
</div>
<script>
var e = document.getElementById("test").firstChild;
var s = window.getSelection();

setSelectionCommand(e, 5, e, 5);
insertHTMLCommand("hello world")
</script>
