Commit 3e5c1180 authored by Yoshifumi Inoue's avatar Yoshifumi Inoue Committed by Commit Bot

Move same conditional expression of while-statement...

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

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

This patch is similar to the patch[1].

[1] Tree is open (suspected flake, https://crbug.com/743069)
Reply
More   
 Move same conditional expression AdjustSelection{Start,End}ToAvoidCrossingEditingBoundaries() to a function

Change-Id: I3662b9bcc78add3c465987b370bde82e7b38008f
Reviewed-on: https://chromium-review.googlesource.com/580114
Commit-Queue: Yoshifumi Inoue <yosin@chromium.org>
Commit-Queue: Yoichi Osato <yoichio@chromium.org>
Reviewed-by: default avatarYoichi Osato <yoichio@chromium.org>
Cr-Commit-Position: refs/heads/master@{#488627}
parent 546e3610
......@@ -586,6 +586,20 @@ static Element* LowestEditableAncestor(Node* node) {
return nullptr;
}
// Returns true if |position| is editable or its lowest editable root is not
// |base_editable_ancestor|.
template <typename Strategy>
static bool ShouldContinueSearchEditingBoundary(
const PositionTemplate<Strategy>& position,
Element* base_editable_ancestor) {
if (position.IsNull())
return false;
if (IsEditablePosition(position))
return true;
return LowestEditableAncestor(position.ComputeContainerNode()) !=
base_editable_ancestor;
}
template <typename Strategy>
static bool ShouldAdjustPositionToAvoidCrossingEditingBoundaries(
const PositionTemplate<Strategy>& position,
......@@ -613,10 +627,8 @@ PositionTemplate<Strategy> AdjustSelectionEndToAvoidCrossingEditingBoundaries(
Element* shadow_ancestor = end_root ? end_root->OwnerShadowHost() : nullptr;
if (position.IsNull() && shadow_ancestor)
position = PositionTemplate<Strategy>::AfterNode(*shadow_ancestor);
while (position.IsNotNull() &&
!(LowestEditableAncestor(position.ComputeContainerNode()) ==
base_editable_ancestor &&
!IsEditablePosition(position))) {
while (
ShouldContinueSearchEditingBoundary(position, base_editable_ancestor)) {
Element* root = RootEditableElementOf(position);
shadow_ancestor = root ? root->OwnerShadowHost() : nullptr;
position = IsAtomicNode(position.ComputeContainerNode())
......@@ -646,10 +658,8 @@ PositionTemplate<Strategy> AdjustSelectionStartToAvoidCrossingEditingBoundaries(
start_root ? start_root->OwnerShadowHost() : nullptr;
if (position.IsNull() && shadow_ancestor)
position = PositionTemplate<Strategy>::BeforeNode(*shadow_ancestor);
while (position.IsNotNull() &&
!(LowestEditableAncestor(position.ComputeContainerNode()) ==
base_editable_ancestor &&
!IsEditablePosition(position))) {
while (
ShouldContinueSearchEditingBoundary(position, base_editable_ancestor)) {
Element* root = RootEditableElementOf(position);
shadow_ancestor = root ? root->OwnerShadowHost() : nullptr;
position = IsAtomicNode(position.ComputeContainerNode())
......
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