Commit 598ba808 authored by Yoshifumi Inoue's avatar Yoshifumi Inoue Committed by Commit Bot

Refactor SelectionModifier::ModifyExtendingForward()

This patch changes SelectionModifier::ModifyExtendingForward() to utilize
early-return style for improving readability.

Change-Id: I005c7064bacafca1ffaf2f805b31d5860f326389
Reviewed-on: https://chromium-review.googlesource.com/566203
Commit-Queue: Yoshifumi Inoue <yosin@chromium.org>
Reviewed-by: default avatarYoichi Osato <yoichio@chromium.org>
Cr-Commit-Position: refs/heads/master@{#485836}
parent 669c449c
......@@ -243,46 +243,48 @@ VisiblePosition SelectionModifier::ModifyExtendingRight(
return AdjustBackwardPositionForUserSelectAll(pos);
}
VisiblePosition SelectionModifier::ModifyExtendingForward(
VisiblePosition SelectionModifier::ModifyExtendingForwardInternal(
TextGranularity granularity) {
VisiblePosition pos =
CreateVisiblePosition(selection_.Extent(), selection_.Affinity());
switch (granularity) {
case TextGranularity::kCharacter:
pos = NextPositionOf(pos, kCanSkipOverEditingBoundary);
break;
return NextPositionOf(
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()),
kCanSkipOverEditingBoundary);
case TextGranularity::kWord:
pos = NextWordPositionForPlatform(pos);
break;
return NextWordPositionForPlatform(
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()));
case TextGranularity::kSentence:
pos = NextSentencePosition(pos);
break;
return NextSentencePosition(
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()));
case TextGranularity::kLine:
pos = NextLinePosition(pos, LineDirectionPointForBlockDirectionNavigation(
selection_.Extent()));
break;
return NextLinePosition(
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()),
LineDirectionPointForBlockDirectionNavigation(selection_.Extent()));
case TextGranularity::kParagraph:
pos = NextParagraphPosition(
pos,
return NextParagraphPosition(
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()),
LineDirectionPointForBlockDirectionNavigation(selection_.Extent()));
break;
case TextGranularity::kSentenceBoundary:
pos = EndOfSentence(EndForPlatform());
break;
return EndOfSentence(EndForPlatform());
case TextGranularity::kLineBoundary:
pos = LogicalEndOfLine(EndForPlatform());
break;
return LogicalEndOfLine(EndForPlatform());
case TextGranularity::kParagraphBoundary:
pos = EndOfParagraph(EndForPlatform());
return EndOfParagraph(EndForPlatform());
break;
case TextGranularity::kDocumentBoundary:
pos = EndForPlatform();
case TextGranularity::kDocumentBoundary: {
const VisiblePosition& pos = EndForPlatform();
if (IsEditablePosition(pos.DeepEquivalent()))
pos = EndOfEditableContent(pos);
else
pos = EndOfDocument(pos);
break;
return EndOfEditableContent(pos);
return EndOfDocument(pos);
}
}
NOTREACHED() << static_cast<int>(granularity);
return VisiblePosition();
}
VisiblePosition SelectionModifier::ModifyExtendingForward(
TextGranularity granularity) {
const VisiblePosition pos = ModifyExtendingForwardInternal(granularity);
if (DirectionOfEnclosingBlock() == TextDirection::kLtr)
return AdjustForwardPositionForUserSelectAll(pos);
return AdjustBackwardPositionForUserSelectAll(pos);
......
......@@ -69,6 +69,7 @@ class SelectionModifier {
LayoutUnit LineDirectionPointForBlockDirectionNavigation(const Position&);
VisiblePosition ModifyExtendingRight(TextGranularity);
VisiblePosition ModifyExtendingForward(TextGranularity);
VisiblePosition ModifyExtendingForwardInternal(TextGranularity);
VisiblePosition ModifyMovingRight(TextGranularity);
VisiblePosition ModifyMovingForward(TextGranularity);
VisiblePosition ModifyExtendingLeft(TextGranularity);
......
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