trimmed release 18.0.1025.162
trimmed release 19.0.1084.52
trimmed release 20.0.1132.47
trimmed release 20.0.1132.57
trimmed release 21.0.1180.60
trimmed release 23.0.1271.97
trimmed release 24.0.1312.52
trimmed release 24.0.1312.56
trimmed release 25.0.1364.84
trimmed release 25.0.1364.152
trimmed release 26.0.1410.33
trimmed release 26.0.1410.43
trimmed release 27.0.1453.73
trimmed release 27.0.1453.94
trimmed release 27.0.1453.110
trimmed release 28.0.1500.95
trimmed release 29.0.1547.76
trimmed release 30.0.1599.101
Fix localCaretRect for blocks with inline children

DRQS 48542454

This fixes an upstream bug where RenderBlock::localCaretRect simply calls
RenderBox::localCaretRect if there are children.  However, this doesn't work
when the block contains inline children, and the caret is in-between these
children.

In this commit, we detect this situation and find the InlineBox for the child
where the caret is at.  The caret is either before the first inline child, or
in-between two inline children, or after the last inline child.  We use the
computed layout of the InlineBox to determine the caret rect.

Also, Position::getInlineBoxAndOffset has some logic for RenderBlocks that
doesn't seem to do what is intended if the children are inline, so we will skip
that whole block of code.

Also, searchAheadForBetterMatch should stop searching if it comes across a
read-only text node.  This prevents the caret from inadvertently being placed
inside a read-only text node.
trimmed release 31.0.1650.63