DescriptionMake {Character,Directional}GranularityStrategy::updateExtent() to handle null position
From patch[1], |GranularityStrategy::updateExtent()| returns invalid
|SelectionInDOMTree|, which base is non-null and extent is null, when
|updateExtent()| is called with |IntPoint| points an element which can not
contain caret, e.g. VIDEO, SELECT, etc. This invalid selection can cause
|nullptr| reference in |SelectionInDOMtree::computeStartPositon()| in
|Position::operator<()|.
Before patch[1], |GranularityStrategy::updateExtent()| returns empty
|VisibleSelection| for invalid |SelectionInDOMTree|, base is non-null and
extent is null, by |VisibleSelection::validate()|.
This patch changes |{Character,Directional}GranularityStrategy::updateExtent()|
to handle above case by checking result of
|visiblePositionForContentsPoint()|.
[1] http://crrev.com/2735143002: Make GranularityStrategy::updateExtent() to
return SelectionInDOM instead of VisibleSelection
BUG=704529
TEST=run_webkit_unit_tests --gtest_filter=UpdateExtentWithNullPositionForCharacter
TEST=run_webkit_unit_tests --gtest_filter=UpdateExtentWithNullPositionForDirectional
Review-Url: https://codereview.chromium.org/2772163002
Cr-Commit-Position: refs/heads/master@{#459725}
Committed: https://chromium.googlesource.com/chromium/src/+/a4e860c32d99883c2178a332708e69049307209a
Patch Set 1 : 2017-03-25T23:16:42 #
Total comments: 2
Patch Set 2 : 2017-03-27T13:42:09 ASSERT_EQ(visiblePositionForContentsPoint(IntPoint(0, 0))) #
Messages
Total messages: 22 (16 generated)
|