<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>CSS Test: Run in - dynamically removed block should allow running in</title>
  <link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu"/>
  <link rel="reviewer" title="Microsoft" href="http://www.microsoft.com/" />
  <link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#run-in"/>
  <link rel="match" href="run-in-basic-ref.xht"/>
  <meta name="flags" content="dom" />
  <meta name="assert"
        content="Tests that run-ins run in if a list-item is dynamically removed
                 from between them and the block."/>
  <style type="text/css"><![CDATA[
    div { display: block; }
    .run-in { display: run-in; font-weight: bold }
    #target { border: 2px solid black; }
    #r { display: list-item; }
  ]]></style>
  <script type="text/javascript"><![CDATA[
    function flushLayout(elt) {
      elt.offsetWidth; /* Just undefined on non-elements, but that's ok */
      for (var i = 0; i < elt.childNodes.length; ++i) {
        flushLayout(elt.childNodes[i]);
      }
    }
    window.onload = function() {
      flushLayout(document.documentElement);
      var r = document.getElementById("r");
      r.parentNode.removeChild(r);
    }
  ]]></script>
 </head>
 <body>
   <div class="run-in">Run-in header</div>
   <div id="r">Some text.</div>
   <div id="target">Start of block.  The run-in header should be inside the
    border around this block and there should be no space between the word
    "header" and the word "Start".</div>
 </body>
</html>
