chromium/third_party/blink/web_tests/editing/selection/5131716-1.html

<!doctype html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../assert_selection.js"></script>
<script>
const kAttr = 'style="padding: 25px;"';

function click(x, y) {
  if (!window.eventSender)
    throw 'This test requires eventSender';
  eventSender.mouseMoveTo(x, y);
  eventSender.mouseDown();
  eventSender.mouseUp();
}

function clickLeftSide(selection) {
  const target = selection.document.getElementById('target');
  click(selection.computeLeft(target) -10,
        selection.computeTop(target) + target.offsetHeight / 2);
}

function clickBottomSide(selection) {
  const target = selection.document.getElementById('target');
  click(selection.computeLeft(target) + target.offsetWidth / 2,
        selection.computeTop(target) + target.offsetHeight + 10);
}

selection_test(
  [
    `<div contenteditable ${kAttr}>`,
      '<div id="target">ab</div>',
      '<table contenteditable="false"><tbody><tr>',
          '<td>\u00A0</td>',
          '<td contenteditable>CD</td>',
      '</tr></tbody></table>',
      '<div>ef</div>',
    '</div>',
  ],
  selection => clickLeftSide(selection),
  [
    `<div contenteditable ${kAttr}>`,
      '<div id="target">|ab</div>',
      '<table contenteditable="false"><tbody><tr>',
          '<td>\u00A0</td>',
          '<td contenteditable>CD</td>',
      '</tr></tbody></table>',
      '<div>ef</div>',
    '</div>',
  ],
  '1. Click left of the first paragraph');

selection_test(
  [
    `<div contenteditable ${kAttr}>`,
      '<div>ab</div>',
      '<table contenteditable="false" id="target"><tbody><tr>',
          '<td>\u00A0</td>',
          '<td contenteditable>CD</td>',
      '</tr></tbody></table>',
      '<div>ef</div>',
    '</div>',
  ],
  selection => clickLeftSide(selection),
  [
    `<div contenteditable ${kAttr}>`,
      '<div>ab</div>',
      '|<table contenteditable="false" id="target"><tbody><tr>',
          '<td>\u00A0</td>',
          '<td contenteditable>CD</td>',
      '</tr></tbody></table>',
      '<div>ef</div>',
    '</div>',
  ],
  '2. Click left of TABLE');

selection_test(
  [
    `<div contenteditable ${kAttr}>`,
      '<div>ab</div>',
      '<table contenteditable="false"><tbody><tr>',
          '<td>\u00A0</td>',
          '<td contenteditable>CD</td>',
      '</tr></tbody></table>',
      '<div id="target">ef</div>',
    '</div>',
  ],
  selection => clickLeftSide(selection),
  [
    `<div contenteditable ${kAttr}>`,
      '<div>ab</div>',
      '<table contenteditable="false"><tbody><tr>',
          '<td>\u00A0</td>',
          '<td contenteditable>CD</td>',
      '</tr></tbody></table>',
      '<div id="target">|ef</div>',
    '</div>',
  ],
  '3. Click left of second paragraph');

selection_test(
  [
    `<div contenteditable ${kAttr}>`,
      '<div>ab</div>',
      '<table contenteditable="false"><tbody><tr>',
          '<td>\u00A0</td>',
          '<td contenteditable>CD</td>',
      '</tr></tbody></table>',
      '<div id="target">ef</div>',
    '</div>',
  ],
  selection => clickBottomSide(selection),
  [
    `<div contenteditable ${kAttr}>`,
      '<div>ab</div>',
      '<table contenteditable="false"><tbody><tr>',
          '<td>\u00A0</td>',
          '<td contenteditable>CD</td>',
      '</tr></tbody></table>',
      '<div id="target">ef|</div>',
    '</div>',
  ],
  '4. Click middle of second paragraph');
</script>