<mat:diff xmlns:mat="http://www.w3.org/1998/Math/MathML">
  <html xmlns="http://www.w3.org/1999/xhtml">  
    <head> 
      <script type="text/javascript">
        if (window.testRunner)
            testRunner.dumpAsText();

        function start()
        { 
          // select the span that's editable
          document.getElementById("insertlisthere").focus();

          // insert an ordered list into the span
          document.execCommand("insertorderedlist", false, null);
          log(document.getElementById("insertlisthere").outerHTML);
          log("PASS");
        }
        function log(str) {
            var li = document.createElement("li");
            li.appendChild(document.createTextNode(str));
            var console = document.getElementById("console");
            console.appendChild(li);
        }
      </script>
    </head>
    <body onload="start();">
      <div contenteditable="true" id="insertlisthere">.</div>
    <ul id="console"></ul>
    </body>
  </html>
</mat:diff>
