chromium/third_party/blink/web_tests/editing/selection/modify_move/move_right_character_over_ineditable.html

<!DOCTYPE html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../assert_selection.js"></script>
<script>
// Regression tests for crbug.com/936613

selection_test(
    [
      '<div contenteditable>',
        '|<span contenteditable="false">line 1</span>',
      '</div>'
    ].join(''),
    selection => selection.modify('move', 'right', 'character'),
    [
      '<div contenteditable>',
        '<span contenteditable="false">line 1</span>|',
      '</div>'
    ].join(''),
    'Move right over ineditable inline');

selection_test(
    [
      '<div contenteditable>',
        '|<span contenteditable="false">line 1</span>',
      '</div>',
      'some more content'
    ].join(''),
    selection => selection.modify('move', 'right', 'character'),
    [
      '<div contenteditable>',
        '<span contenteditable="false">line 1</span>|',
      '</div>',
      'some more content'
    ].join(''),
    'Move right over ineditable inline ignoring content outside editing host');

selection_test(
    [
      '<div contenteditable>',
        '|<span contenteditable="false">line 1</span><br>',
        'line 2',
      '</div>',
    ].join(''),
    selection => selection.modify('move', 'right', 'character'),
    [
      '<div contenteditable>',
        '<span contenteditable="false">line 1</span>|<br>',
        'line 2',
      '</div>',
    ].join(''),
    'Move right over ineditable inline with another editable line');

selection_test(
    [
      '<div contenteditable>',
        '|<span contenteditable="false">line 1</span>',
        '<div>line 2</div>',
      '</div>',
    ].join(''),
    selection => selection.modify('move', 'right', 'character'),
    [
      '<div contenteditable>',
        // TODO(editing-dev): "</span>|" seems to be a better result. The
        // current behavior might be an artifact of crrev.com/412925.
        '<span contenteditable="false">line 1</span>',
        '<div>|line 2</div>',
      '</div>'
    ].join(''),
    'Move right over ineditable inline with another editable block');
</script>