<script>
if (window.testRunner) {
     testRunner.dumpAsText();
     testRunner.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="" 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>
