* If the current selection exceeds the BODY at the beginning of a command, we should shrink it to (BODY, 0) - (BODY, BODY.childCount).
* If the result of any functions to move positions/selections is not in the BODY, we should move/shrink it to the inside of the BODY.
e.g. startOfParagraph() for a position in the BODY can return a position in HEAD now.
In https://codereview.chromium.org/2753193002/, we tried to change VisibleUnits.cpp so that a position didn't move across the BODY. However, we concluded that VisibleUnits should be simplified, and special handling for BODY should be done in the execCommands layer.
Comment 1 by dtapu...@chromium.org
, Dec 4 2017