Commit 8a94b70e authored by Zhuoyu Qian's avatar Zhuoyu Qian Committed by Commit Bot

Stop creating VisiblePosition in VisiblePositionForContentsPoint()

This patch moves CreateVisiblePosition() out of
VisiblePositionForContentsPoint() to the callers.
Rename VisiblePositionForContentsPoint() to
PositionForContentsPointRespectingEditingBoundary().

Bug: 657237
Change-Id: I00c60a783c35d5e5a59b9163eb3e42b7e9fa2b38
Reviewed-on: https://chromium-review.googlesource.com/c/1307315
Commit-Queue: Zhuoyu Qian <zhuoyu.qian@samsung.com>
Reviewed-by: default avatarKent Tamura <tkent@chromium.org>
Reviewed-by: default avatarXiaocheng Hu <xiaochengh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#604500}
parent f6c6f779
...@@ -165,8 +165,8 @@ void FrameSelection::MoveCaretSelection(const IntPoint& point) { ...@@ -165,8 +165,8 @@ void FrameSelection::MoveCaretSelection(const IntPoint& point) {
if (!editable) if (!editable)
return; return;
const VisiblePosition position = const VisiblePosition position = CreateVisiblePosition(
VisiblePositionForContentsPoint(point, GetFrame()); PositionForContentsPointRespectingEditingBoundary(point, GetFrame()));
SelectionInDOMTree::Builder builder; SelectionInDOMTree::Builder builder;
if (position.IsNotNull()) if (position.IsNotNull())
builder.Collapse(position.ToPositionWithAffinity()); builder.Collapse(position.ToPositionWithAffinity());
...@@ -1145,9 +1145,11 @@ void FrameSelection::MoveRangeSelection(const IntPoint& base_point, ...@@ -1145,9 +1145,11 @@ void FrameSelection::MoveRangeSelection(const IntPoint& base_point,
const IntPoint& extent_point, const IntPoint& extent_point,
TextGranularity granularity) { TextGranularity granularity) {
const VisiblePosition& base_position = const VisiblePosition& base_position =
VisiblePositionForContentsPoint(base_point, GetFrame()); CreateVisiblePosition(PositionForContentsPointRespectingEditingBoundary(
base_point, GetFrame()));
const VisiblePosition& extent_position = const VisiblePosition& extent_position =
VisiblePositionForContentsPoint(extent_point, GetFrame()); CreateVisiblePosition(PositionForContentsPointRespectingEditingBoundary(
extent_point, GetFrame()));
MoveRangeSelectionInternal( MoveRangeSelectionInternal(
SelectionInDOMTree::Builder() SelectionInDOMTree::Builder()
.SetBaseAndExtentDeprecated(base_position.DeepEquivalent(), .SetBaseAndExtentDeprecated(base_position.DeepEquivalent(),
......
...@@ -72,8 +72,8 @@ void CharacterGranularityStrategy::Clear() {} ...@@ -72,8 +72,8 @@ void CharacterGranularityStrategy::Clear() {}
SelectionInDOMTree CharacterGranularityStrategy::UpdateExtent( SelectionInDOMTree CharacterGranularityStrategy::UpdateExtent(
const IntPoint& extent_point, const IntPoint& extent_point,
LocalFrame* frame) { LocalFrame* frame) {
const VisiblePosition& extent_position = const VisiblePosition& extent_position = CreateVisiblePosition(
VisiblePositionForContentsPoint(extent_point, frame); PositionForContentsPointRespectingEditingBoundary(extent_point, frame));
const VisibleSelection& selection = const VisibleSelection& selection =
frame->Selection().ComputeVisibleSelectionInDOMTree(); frame->Selection().ComputeVisibleSelectionInDOMTree();
if (extent_position.IsNull() || selection.VisibleBase().DeepEquivalent() == if (extent_position.IsNull() || selection.VisibleBase().DeepEquivalent() ==
...@@ -133,7 +133,8 @@ SelectionInDOMTree DirectionGranularityStrategy::UpdateExtent( ...@@ -133,7 +133,8 @@ SelectionInDOMTree DirectionGranularityStrategy::UpdateExtent(
} }
VisiblePosition new_offset_extent_position = VisiblePosition new_offset_extent_position =
VisiblePositionForContentsPoint(new_offset_extent_point, frame); CreateVisiblePosition(PositionForContentsPointRespectingEditingBoundary(
new_offset_extent_point, frame));
if (new_offset_extent_position.IsNull()) if (new_offset_extent_position.IsNull())
return selection.AsSelection(); return selection.AsSelection();
IntPoint new_offset_location = PositionLocation(new_offset_extent_position); IntPoint new_offset_location = PositionLocation(new_offset_extent_position);
...@@ -145,8 +146,8 @@ SelectionInDOMTree DirectionGranularityStrategy::UpdateExtent( ...@@ -145,8 +146,8 @@ SelectionInDOMTree DirectionGranularityStrategy::UpdateExtent(
offset_ = 0; offset_ = 0;
granularity_ = TextGranularity::kCharacter; granularity_ = TextGranularity::kCharacter;
new_offset_extent_point = extent_point; new_offset_extent_point = extent_point;
new_offset_extent_position = new_offset_extent_position = CreateVisiblePosition(
VisiblePositionForContentsPoint(extent_point, frame); PositionForContentsPointRespectingEditingBoundary(extent_point, frame));
} }
const VisiblePosition base = selection.VisibleBase(); const VisiblePosition base = selection.VisibleBase();
......
...@@ -720,11 +720,13 @@ TEST_F(GranularityStrategyTest, UpdateExtentWithNullPositionForCharacter) { ...@@ -720,11 +720,13 @@ TEST_F(GranularityStrategyTest, UpdateExtentWithNullPositionForCharacter) {
.SetIsDirectional(true) .SetIsDirectional(true)
.Build()); .Build());
// Since, it is not obvious that |visiblePositionForContentsPoint()| returns // Since, it is not obvious that
// null position, we verify here. // |PositionForContentsPointRespectingEditingBoundary()| returns null
ASSERT_EQ(Position(), // position, we verify here.
VisiblePositionForContentsPoint(IntPoint(0, 0), &GetFrame()) ASSERT_EQ(Position(), CreateVisiblePosition(
.DeepEquivalent()) PositionForContentsPointRespectingEditingBoundary(
IntPoint(0, 0), &GetFrame()))
.DeepEquivalent())
<< "This test requires null position."; << "This test requires null position.";
// Point to RANGE inside shadow root to get null position from // Point to RANGE inside shadow root to get null position from
...@@ -756,11 +758,13 @@ TEST_F(GranularityStrategyTest, UpdateExtentWithNullPositionForDirectional) { ...@@ -756,11 +758,13 @@ TEST_F(GranularityStrategyTest, UpdateExtentWithNullPositionForDirectional) {
.SetIsDirectional(true) .SetIsDirectional(true)
.Build()); .Build());
// Since, it is not obvious that |visiblePositionForContentsPoint()| returns // Since, it is not obvious that
// null position, we verify here. // |PositionForContentsPointRespectingEditingBoundary()| returns null
ASSERT_EQ(Position(), // position, we verify here.
VisiblePositionForContentsPoint(IntPoint(0, 0), &GetFrame()) ASSERT_EQ(Position(), CreateVisiblePosition(
.DeepEquivalent()) PositionForContentsPointRespectingEditingBoundary(
IntPoint(0, 0), &GetFrame()))
.DeepEquivalent())
<< "This test requires null position."; << "This test requires null position.";
// Point to RANGE inside shadow root to get null position from // Point to RANGE inside shadow root to get null position from
......
...@@ -564,8 +564,9 @@ bool HasRenderedNonAnonymousDescendantsWithHeight( ...@@ -564,8 +564,9 @@ bool HasRenderedNonAnonymousDescendantsWithHeight(
return false; return false;
} }
VisiblePosition VisiblePositionForContentsPoint(const IntPoint& contents_point, PositionWithAffinity PositionForContentsPointRespectingEditingBoundary(
LocalFrame* frame) { const IntPoint& contents_point,
LocalFrame* frame) {
HitTestRequest request = HitTestRequest::kMove | HitTestRequest::kReadOnly | HitTestRequest request = HitTestRequest::kMove | HitTestRequest::kReadOnly |
HitTestRequest::kActive | HitTestRequest::kActive |
HitTestRequest::kIgnoreClipping; HitTestRequest::kIgnoreClipping;
...@@ -574,11 +575,11 @@ VisiblePosition VisiblePositionForContentsPoint(const IntPoint& contents_point, ...@@ -574,11 +575,11 @@ VisiblePosition VisiblePositionForContentsPoint(const IntPoint& contents_point,
frame->GetDocument()->GetLayoutView()->HitTest(location, result); frame->GetDocument()->GetLayoutView()->HitTest(location, result);
if (Node* node = result.InnerNode()) { if (Node* node = result.InnerNode()) {
return CreateVisiblePosition(PositionRespectingEditingBoundary( return PositionRespectingEditingBoundary(
frame->Selection().ComputeVisibleSelectionInDOMTreeDeprecated().Start(), frame->Selection().ComputeVisibleSelectionInDOMTreeDeprecated().Start(),
result.LocalPoint(), node)); result.LocalPoint(), node);
} }
return VisiblePosition(); return PositionWithAffinity();
} }
// TODO(yosin): We should use |AssociatedLayoutObjectOf()| in "visible_units.cc" // TODO(yosin): We should use |AssociatedLayoutObjectOf()| in "visible_units.cc"
......
...@@ -245,10 +245,11 @@ CORE_EXPORT bool IsEndOfEditableOrNonEditableContent( ...@@ -245,10 +245,11 @@ CORE_EXPORT bool IsEndOfEditableOrNonEditableContent(
bool HasRenderedNonAnonymousDescendantsWithHeight(const LayoutObject*); bool HasRenderedNonAnonymousDescendantsWithHeight(const LayoutObject*);
// Returns a hit-tested VisiblePosition for the given point in contents-space // TODO(editing-dev): We should move this functions to somewhere else.
// coordinates. // Returns a hit-tested PositionWithAffinity for the given point in
CORE_EXPORT VisiblePosition VisiblePositionForContentsPoint(const IntPoint&, // contents-space coordinates.
LocalFrame*); CORE_EXPORT PositionWithAffinity
PositionForContentsPointRespectingEditingBoundary(const IntPoint&, LocalFrame*);
CORE_EXPORT bool RendersInDifferentPosition(const Position&, const Position&); CORE_EXPORT bool RendersInDifferentPosition(const Position&, const Position&);
......
...@@ -2431,10 +2431,10 @@ void WebLocalFrameImpl::ExtractSmartClipData(WebRect rect_in_viewport, ...@@ -2431,10 +2431,10 @@ void WebLocalFrameImpl::ExtractSmartClipData(WebRect rect_in_viewport,
static String CreateMarkupInRect(LocalFrame* frame, static String CreateMarkupInRect(LocalFrame* frame,
const IntPoint& start_point, const IntPoint& start_point,
const IntPoint& end_point) { const IntPoint& end_point) {
VisiblePosition start_visible_position = VisiblePosition start_visible_position = CreateVisiblePosition(
VisiblePositionForContentsPoint(start_point, frame); PositionForContentsPointRespectingEditingBoundary(start_point, frame));
VisiblePosition end_visible_position = VisiblePosition end_visible_position = CreateVisiblePosition(
VisiblePositionForContentsPoint(end_point, frame); PositionForContentsPointRespectingEditingBoundary(end_point, frame));
Position start_position = start_visible_position.DeepEquivalent(); Position start_position = start_visible_position.DeepEquivalent();
Position end_position = end_visible_position.DeepEquivalent(); Position end_position = end_visible_position.DeepEquivalent();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment