chromium/third_party/blink/web_tests/editing/inserting/break-out-of-nested-lists.html

<!DOCTYPE>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../assert_selection.js"></script>
<script>
// Tests breaking out of empty list item in case of nested lists.
function insertNewline(selection) {
  selection.document.execCommand('insertText', false, '\n')
}

selection_test(
    [
        '<div contenteditable><ol>',
            '<li>one</li>',
            '<ul><li>1|</li><li>2</li></ul>',
            '<li>two</li>',
        '</ol></div>'
    ],
    insertNewline,
    [
        '<div contenteditable><ol>',
            '<li>one</li>',
            '<ul><li>1</li><li>|<br></li><li>2</li></ul>',
            '<li>two</li>',
        '</ol></div>'
    ],
    'Split the inner list into two');
selection_test(
    [
        '<div contenteditable><ol>',
            '<li>one</li>',
            '<ul><li>1</li><li>|<br></li><li>2</li></ul>',
            '<li>two</li>',
        '</ol></div>'
    ],
    insertNewline,
    [
        '<div contenteditable><ol>',
            '<li>one</li>',
            '<ul><li>1</li></ul>',
            '<li>|<br></li>',
            '<ul><li>2</li></ul>',
            '<li>two</li>',
        '</ol></div>'
    ],
    'Break out of the first inner list');
selection_test(
    [
        '<div contenteditable><ol>',
            '<li>one</li>',
            '<ul><li>1</li></ul>',
            '<li>|<br></li>',
            '<ul><li>2</li></ul>',
            '<li>two</li>',
        '</ol></div>'
    ],
    insertNewline,
    [
        '<div contenteditable><ol>',
            '<li>one</li>',
            '<ul><li>1</li></ul>',
        '</ol>',
        '<div>|<br></div>',
        '<ol>',
            '<ul><li>2</li></ul>',
            '<li>two</li>',
        '</ol></div>'
    ],
    'Break out of the outer list');

selection_test(
    [
        '<div contenteditable><ol>',
            '<li>one</li>',
            '<ul><li>1</li></ul>',
            '<li>|<br></li>',
            '<ul><li>2</li></ul>',
            '<li>two</li>',
        '</ol></div>'
    ],
    'insertText XYZ',
    [
        '<div contenteditable><ol>',
            '<li>one</li>',
            '<ul><li>1</li></ul>',
            '<li>XYZ|</li>',
            '<ul><li>2</li></ul>',
            '<li>two</li>',
        '</ol></div>'
    ],
    'insert XYZ');
</script>