Commit 2cc7c102 authored by Yoshifumi Inoue's avatar Yoshifumi Inoue Committed by Commit Bot

Move same conditional expression...

Move same conditional expression AdjustSelection{Start,End}ToAvoidCrossingEditingBoundaries() to a function

This patch moves same conditional expression in
|AdjustSelection{Start,End}ToAvoidCrossingEditingBoundaries()| into
|ShouldAdjustPositionToAvoidCrossingEditingBoundaries()| to share code and
simplify if-statement for improving code health.

Change-Id: I05c4324d1758c991b75bf27dac3426479d8e30bb
Reviewed-on: https://chromium-review.googlesource.com/578755Reviewed-by: default avatarYoshifumi Inoue <yosin@chromium.org>
Reviewed-by: default avatarYoichi Osato <yoichio@chromium.org>
Commit-Queue: Yoshifumi Inoue <yosin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#488190}
parent 371065d2
......@@ -574,6 +574,18 @@ static Element* LowestEditableAncestor(Node* node) {
return nullptr;
}
template <typename Strategy>
static bool ShouldAdjustPositionToAvoidCrossingEditingBoundaries(
const PositionTemplate<Strategy>& position,
const ContainerNode* editable_root,
const Element* base_editable_ancestor) {
if (editable_root)
return true;
Element* const editable_ancestor =
LowestEditableAncestor(position.ComputeContainerNode());
return editable_ancestor != base_editable_ancestor;
}
// The selection ends in editable content or non-editable content inside a
// different editable ancestor, move backward until non-editable content inside
// the same lowest editable ancestor is reached.
......@@ -582,9 +594,8 @@ PositionTemplate<Strategy> AdjustSelectionEndToAvoidCrossingEditingBoundaries(
const PositionTemplate<Strategy>& end,
ContainerNode* end_root,
Element* base_editable_ancestor) {
Element* const end_editable_ancestor =
LowestEditableAncestor(end.ComputeContainerNode());
if (end_root || end_editable_ancestor != base_editable_ancestor) {
if (ShouldAdjustPositionToAvoidCrossingEditingBoundaries(
end, end_root, base_editable_ancestor)) {
PositionTemplate<Strategy> position =
PreviousVisuallyDistinctCandidate(end);
Element* shadow_ancestor = end_root ? end_root->OwnerShadowHost() : nullptr;
......@@ -616,9 +627,8 @@ PositionTemplate<Strategy> AdjustSelectionStartToAvoidCrossingEditingBoundaries(
const PositionTemplate<Strategy>& start,
ContainerNode* start_root,
Element* base_editable_ancestor) {
Element* const start_editable_ancestor =
LowestEditableAncestor(start.ComputeContainerNode());
if (start_root || start_editable_ancestor != base_editable_ancestor) {
if (ShouldAdjustPositionToAvoidCrossingEditingBoundaries(
start, start_root, base_editable_ancestor)) {
PositionTemplate<Strategy> position = NextVisuallyDistinctCandidate(start);
Element* shadow_ancestor =
start_root ? start_root->OwnerShadowHost() : nullptr;
......
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