<!DOCTYPE html>
<div contenteditable test='empty'>
  <table contenteditable=false>
    <tr><td></td></tr>
  </table>
</div>

<div contenteditable test='with empty span'>
  <table contenteditable=false>
    <tr><td><span></span></td></tr>
  </table>
</div>

<div contenteditable test='with editable empty span'>
  <table contenteditable=false>
    <tr><td><span contenteditable></span></td></tr>
  </table>
</div>

<div contenteditable test='with editable non-empty span'>
  <table contenteditable=false>
    <tr><td><span contenteditable>Test 4.</span></td></tr>
  </table>
</div>

<div contenteditable test='with nested editable non-empty spans'>
  <table contenteditable=false>
    <tr><td><span contenteditable><span>Test 5.</span></span></td></tr>
  </table>
</div>

<div contenteditable test='with multiple editable non-empty spans'>
  <table contenteditable=false>
    <tr><td><span contenteditable>Test 6.</span><span contenteditable>More test 6.</span></td></tr>
  </table>
</div>

<div contenteditable test='with nested table'>
  <table contenteditable=false>
    <tr><td><span contenteditable>
      <table contenteditable=false>
        <tr><td>Test 7.</td></tr>
      </table>
    </span></td></tr>
  </table>
</div>

<div contenteditable test='with nested table containing editable non-empty span'>
  <table contenteditable=false>
    <tr><td><span contenteditable>
      <table contenteditable=false>
        <tr><td><span contenteditable>Test 8.</span></td></tr>
      </table>
    </span></td></tr>
  </table>
</div>

<pre>
Tests that tables that have empty-rendered cells during deletion are deleted
correctly.  Empty-rendered cells can be caused by empty cells, cells with
content that has no height, or cells with editable content such that the
content is deleted prior to the table's deletion.
</pre>

<script>
var console = document.getElementsByTagName('pre')[0];

function runTestForContainer(container) {
  container.focus();
  document.execCommand('SelectAll');
  document.execCommand('Delete');

  var testDescription = container.getAttribute('test');
  var result = container.innerText === '\n' ?
      'PASS ('  + testDescription + ')' :
      'FAIL (' + testDescription + '), should contain exactly one LF but was ' + container.innerText;
  console.appendChild(document.createTextNode('\n' + result));

  if (window.testRunner)
    document.body.removeChild(container);
}

Array.prototype.slice.call(document.getElementsByTagName('div')).forEach(runTestForContainer);

if (window.testRunner)
  testRunner.dumpAsText();
</script>
