Created attachment 154080 [details] test case See the attached example. There are blockquotes between each line (except that last). The correct behavior is to not create any blockquotes between the lines. I have a patch for this (SplitElementCommand should be a no-op if m_atChild == m_element2->firstChild)
Hmm it turns out that this fix breaks the outdent-selection.html and break-out-of-empty-list-item.html tests. I'm investigating why this breaks
Created attachment 155346 [details] Reduction of breakage of outdent-selection I've resolved the issue that caused the breakage in break-out-of-empty-list-item.html However, the breakage in outdent-selection.html is a little more complicated, and it has to do with a preexisting unrelated bug w.r.t. preserving the selection after outdent. See the attached reduction. The selection is not maintained correctly (the last character is not selected). This happens whenever <br> is added after an inline node that ends with '\n'. The '\n' gets treated as an uncollapsable space, which in turn causes the endIndex in ApplyBlockElementCommand::doApply to become off by one. I found bug 21545, which describes issues with visual selection with outdent, but that bug has to do with lists (ol and ul), so I think the issue here is completely different. I'll enter a new bug for the issue here.
Created bug 92672. I'll need to fix that issue before I can submit the patch for this issue.