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( ...@@ -1644,8 +1644,10 @@ bool CompositeEditCommand::BreakOutOfEmptyListItem(
if (ContainerNode* block_enclosing_list = list_node->parentNode()) { if (ContainerNode* block_enclosing_list = list_node->parentNode()) {
if (IsHTMLLIElement( if (IsHTMLLIElement(
*block_enclosing_list)) { // listNode is inside another list item *block_enclosing_list)) { // listNode is inside another list item
if (VisiblePositionAfterNode(*block_enclosing_list).DeepEquivalent() == if (CreateVisiblePosition(PositionAfterNode(*block_enclosing_list))
VisiblePositionAfterNode(*list_node).DeepEquivalent()) { .DeepEquivalent() ==
CreateVisiblePosition(PositionAfterNode(*list_node))
.DeepEquivalent()) {
// If listNode appears at the end of the outer list item, then move // If listNode appears at the end of the outer list item, then move
// listNode outside of this list item, e.g. // listNode outside of this list item, e.g.
// <ul><li>hello <ul><li><br></li></ul> </li></ul> // <ul><li>hello <ul><li><br></li></ul> </li></ul>
...@@ -1981,7 +1983,7 @@ bool CompositeEditCommand::IsNodeVisiblyContainedWithin( ...@@ -1981,7 +1983,7 @@ bool CompositeEditCommand::IsNodeVisiblyContainedWithin(
return true; return true;
bool start_is_visually_same = bool start_is_visually_same =
VisiblePositionBeforeNode(node).DeepEquivalent() == CreateVisiblePosition(PositionBeforeNode(node)).DeepEquivalent() ==
CreateVisiblePosition(selected_range.StartPosition()).DeepEquivalent(); CreateVisiblePosition(selected_range.StartPosition()).DeepEquivalent();
if (start_is_visually_same && if (start_is_visually_same &&
ComparePositions(Position::InParentAfterNode(node), ComparePositions(Position::InParentAfterNode(node),
...@@ -1989,7 +1991,7 @@ bool CompositeEditCommand::IsNodeVisiblyContainedWithin( ...@@ -1989,7 +1991,7 @@ bool CompositeEditCommand::IsNodeVisiblyContainedWithin(
return true; return true;
bool end_is_visually_same = bool end_is_visually_same =
VisiblePositionAfterNode(node).DeepEquivalent() == CreateVisiblePosition(PositionAfterNode(node)).DeepEquivalent() ==
CreateVisiblePosition(selected_range.EndPosition()).DeepEquivalent(); CreateVisiblePosition(selected_range.EndPosition()).DeepEquivalent();
if (end_is_visually_same && if (end_is_visually_same &&
ComparePositions(selected_range.StartPosition(), ComparePositions(selected_range.StartPosition(),
......
...@@ -378,11 +378,13 @@ bool InsertListCommand::DoApplyForSingleParagraph( ...@@ -378,11 +378,13 @@ bool InsertListCommand::DoApplyForSingleParagraph(
IsNodeVisiblyContainedWithin(*list_element, IsNodeVisiblyContainedWithin(*list_element,
EphemeralRange(&current_selection))) { EphemeralRange(&current_selection))) {
bool range_start_is_in_list = bool range_start_is_in_list =
VisiblePositionBeforeNode(*list_element).DeepEquivalent() == CreateVisiblePosition(PositionBeforeNode(*list_element))
.DeepEquivalent() ==
CreateVisiblePosition(current_selection.StartPosition()) CreateVisiblePosition(current_selection.StartPosition())
.DeepEquivalent(); .DeepEquivalent();
bool range_end_is_in_list = bool range_end_is_in_list =
VisiblePositionAfterNode(*list_element).DeepEquivalent() == CreateVisiblePosition(PositionAfterNode(*list_element))
.DeepEquivalent() ==
CreateVisiblePosition(current_selection.EndPosition()) CreateVisiblePosition(current_selection.EndPosition())
.DeepEquivalent(); .DeepEquivalent();
......
...@@ -1086,24 +1086,24 @@ Element* TableElementJustAfter(const VisiblePosition& visible_position) { ...@@ -1086,24 +1086,24 @@ Element* TableElementJustAfter(const VisiblePosition& visible_position) {
return nullptr; return nullptr;
} }
// Returns the visible position at the beginning of a node // Returns the position at the beginning of a node
VisiblePosition VisiblePositionBeforeNode(const Node& node) { Position PositionBeforeNode(const Node& node) {
DCHECK(!NeedsLayoutTreeUpdate(node)); DCHECK(!NeedsLayoutTreeUpdate(node));
if (node.hasChildren()) if (node.hasChildren())
return CreateVisiblePosition(FirstPositionInOrBeforeNode(node)); return FirstPositionInOrBeforeNode(node);
DCHECK(node.parentNode()) << node; DCHECK(node.parentNode()) << node;
DCHECK(!node.parentNode()->IsShadowRoot()) << node.parentNode(); DCHECK(!node.parentNode()->IsShadowRoot()) << node.parentNode();
return VisiblePosition::InParentBeforeNode(node); return Position::InParentBeforeNode(node);
} }
// Returns the visible position at the ending of a node // Returns the position at the ending of a node
VisiblePosition VisiblePositionAfterNode(const Node& node) { Position PositionAfterNode(const Node& node) {
DCHECK(!NeedsLayoutTreeUpdate(node)); DCHECK(!NeedsLayoutTreeUpdate(node));
if (node.hasChildren()) if (node.hasChildren())
return CreateVisiblePosition(LastPositionInOrAfterNode(node)); return LastPositionInOrAfterNode(node);
DCHECK(node.parentNode()) << node.parentNode(); DCHECK(node.parentNode()) << node.parentNode();
DCHECK(!node.parentNode()->IsShadowRoot()) << node.parentNode(); DCHECK(!node.parentNode()->IsShadowRoot()) << node.parentNode();
return VisiblePosition::InParentAfterNode(node); return Position::InParentAfterNode(node);
} }
bool IsHTMLListElement(const Node* n) { bool IsHTMLListElement(const Node* n) {
......
...@@ -260,15 +260,14 @@ PositionWithAffinity PositionRespectingEditingBoundary( ...@@ -260,15 +260,14 @@ PositionWithAffinity PositionRespectingEditingBoundary(
Node* target_node); Node* target_node);
Position ComputePositionForNodeRemoval(const Position&, const 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 // VisiblePosition
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// Functions returning VisiblePosition
CORE_EXPORT VisiblePosition VisiblePositionBeforeNode(const Node&);
VisiblePosition VisiblePositionAfterNode(const Node&);
int ComparePositions(const VisiblePosition&, const VisiblePosition&); int ComparePositions(const VisiblePosition&, const VisiblePosition&);
CORE_EXPORT int IndexForVisiblePosition(const VisiblePosition&, CORE_EXPORT int IndexForVisiblePosition(const VisiblePosition&,
......
...@@ -2430,7 +2430,8 @@ static VisiblePosition ToVisiblePosition(AXObject* obj, int offset) { ...@@ -2430,7 +2430,8 @@ static VisiblePosition ToVisiblePosition(AXObject* obj, int offset) {
if (!parent) if (!parent)
return VisiblePosition(); return VisiblePosition();
VisiblePosition node_position = blink::VisiblePositionBeforeNode(*node); VisiblePosition node_position =
CreateVisiblePosition(blink::PositionBeforeNode(*node));
int node_index = blink::IndexForVisiblePosition(node_position, parent); int node_index = blink::IndexForVisiblePosition(node_position, parent);
return blink::VisiblePositionForIndex(node_index + offset, 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