Commit d4727fc8 authored by Zhuoyu Qian's avatar Zhuoyu Qian Committed by Commit Bot

Stop using VisiblePosition in VisiblePosition{Before/After}Node

This patch stops passing VisiblePosition to the functions, and hoists
creation of VisiblePosition to the callers, to decrease the usage of
VisiblePosition.

Bug: 657237
Change-Id: I52a6a34e240aa0180d2459c262b2db919fab4674
Reviewed-on: https://chromium-review.googlesource.com/c/1309568Reviewed-by: default avatarDominic Mazzoni <dmazzoni@chromium.org>
Reviewed-by: default avatarXiaocheng Hu <xiaochengh@chromium.org>
Commit-Queue: Zhuoyu Qian <zhuoyu.qian@samsung.com>
Cr-Commit-Position: refs/heads/master@{#604830}
parent d6fa3cad
......@@ -1644,8 +1644,10 @@ bool CompositeEditCommand::BreakOutOfEmptyListItem(
if (ContainerNode* block_enclosing_list = list_node->parentNode()) {
if (IsHTMLLIElement(
*block_enclosing_list)) { // listNode is inside another list item
if (VisiblePositionAfterNode(*block_enclosing_list).DeepEquivalent() ==
VisiblePositionAfterNode(*list_node).DeepEquivalent()) {
if (CreateVisiblePosition(PositionAfterNode(*block_enclosing_list))
.DeepEquivalent() ==
CreateVisiblePosition(PositionAfterNode(*list_node))
.DeepEquivalent()) {
// If listNode appears at the end of the outer list item, then move
// listNode outside of this list item, e.g.
// <ul><li>hello <ul><li><br></li></ul> </li></ul>
......@@ -1981,7 +1983,7 @@ bool CompositeEditCommand::IsNodeVisiblyContainedWithin(
return true;
bool start_is_visually_same =
VisiblePositionBeforeNode(node).DeepEquivalent() ==
CreateVisiblePosition(PositionBeforeNode(node)).DeepEquivalent() ==
CreateVisiblePosition(selected_range.StartPosition()).DeepEquivalent();
if (start_is_visually_same &&
ComparePositions(Position::InParentAfterNode(node),
......@@ -1989,7 +1991,7 @@ bool CompositeEditCommand::IsNodeVisiblyContainedWithin(
return true;
bool end_is_visually_same =
VisiblePositionAfterNode(node).DeepEquivalent() ==
CreateVisiblePosition(PositionAfterNode(node)).DeepEquivalent() ==
CreateVisiblePosition(selected_range.EndPosition()).DeepEquivalent();
if (end_is_visually_same &&
ComparePositions(selected_range.StartPosition(),
......
......@@ -378,11 +378,13 @@ bool InsertListCommand::DoApplyForSingleParagraph(
IsNodeVisiblyContainedWithin(*list_element,
EphemeralRange(&current_selection))) {
bool range_start_is_in_list =
VisiblePositionBeforeNode(*list_element).DeepEquivalent() ==
CreateVisiblePosition(PositionBeforeNode(*list_element))
.DeepEquivalent() ==
CreateVisiblePosition(current_selection.StartPosition())
.DeepEquivalent();
bool range_end_is_in_list =
VisiblePositionAfterNode(*list_element).DeepEquivalent() ==
CreateVisiblePosition(PositionAfterNode(*list_element))
.DeepEquivalent() ==
CreateVisiblePosition(current_selection.EndPosition())
.DeepEquivalent();
......
......@@ -1086,24 +1086,24 @@ Element* TableElementJustAfter(const VisiblePosition& visible_position) {
return nullptr;
}
// Returns the visible position at the beginning of a node
VisiblePosition VisiblePositionBeforeNode(const Node& node) {
// Returns the position at the beginning of a node
Position PositionBeforeNode(const Node& node) {
DCHECK(!NeedsLayoutTreeUpdate(node));
if (node.hasChildren())
return CreateVisiblePosition(FirstPositionInOrBeforeNode(node));
return FirstPositionInOrBeforeNode(node);
DCHECK(node.parentNode()) << node;
DCHECK(!node.parentNode()->IsShadowRoot()) << node.parentNode();
return VisiblePosition::InParentBeforeNode(node);
return Position::InParentBeforeNode(node);
}
// Returns the visible position at the ending of a node
VisiblePosition VisiblePositionAfterNode(const Node& node) {
// Returns the position at the ending of a node
Position PositionAfterNode(const Node& node) {
DCHECK(!NeedsLayoutTreeUpdate(node));
if (node.hasChildren())
return CreateVisiblePosition(LastPositionInOrAfterNode(node));
return LastPositionInOrAfterNode(node);
DCHECK(node.parentNode()) << node.parentNode();
DCHECK(!node.parentNode()->IsShadowRoot()) << node.parentNode();
return VisiblePosition::InParentAfterNode(node);
return Position::InParentAfterNode(node);
}
bool IsHTMLListElement(const Node* n) {
......
......@@ -260,15 +260,14 @@ PositionWithAffinity PositionRespectingEditingBoundary(
Node* target_node);
Position ComputePositionForNodeRemoval(const Position&, const Node&);
// TODO(editing-dev): These two functions should be eliminated.
CORE_EXPORT Position PositionBeforeNode(const Node&);
Position PositionAfterNode(const Node&);
// -------------------------------------------------------------------------
// VisiblePosition
// -------------------------------------------------------------------------
// Functions returning VisiblePosition
CORE_EXPORT VisiblePosition VisiblePositionBeforeNode(const Node&);
VisiblePosition VisiblePositionAfterNode(const Node&);
int ComparePositions(const VisiblePosition&, const VisiblePosition&);
CORE_EXPORT int IndexForVisiblePosition(const VisiblePosition&,
......
......@@ -2430,7 +2430,8 @@ static VisiblePosition ToVisiblePosition(AXObject* obj, int offset) {
if (!parent)
return VisiblePosition();
VisiblePosition node_position = blink::VisiblePositionBeforeNode(*node);
VisiblePosition node_position =
CreateVisiblePosition(blink::PositionBeforeNode(*node));
int node_index = blink::IndexForVisiblePosition(node_position, parent);
return blink::VisiblePositionForIndex(node_index + offset, parent);
}
......
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