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( ...@@ -243,46 +243,48 @@ VisiblePosition SelectionModifier::ModifyExtendingRight(
return AdjustBackwardPositionForUserSelectAll(pos); return AdjustBackwardPositionForUserSelectAll(pos);
} }
VisiblePosition SelectionModifier::ModifyExtendingForward( VisiblePosition SelectionModifier::ModifyExtendingForwardInternal(
TextGranularity granularity) { TextGranularity granularity) {
VisiblePosition pos =
CreateVisiblePosition(selection_.Extent(), selection_.Affinity());
switch (granularity) { switch (granularity) {
case TextGranularity::kCharacter: case TextGranularity::kCharacter:
pos = NextPositionOf(pos, kCanSkipOverEditingBoundary); return NextPositionOf(
break; CreateVisiblePosition(selection_.Extent(), selection_.Affinity()),
kCanSkipOverEditingBoundary);
case TextGranularity::kWord: case TextGranularity::kWord:
pos = NextWordPositionForPlatform(pos); return NextWordPositionForPlatform(
break; CreateVisiblePosition(selection_.Extent(), selection_.Affinity()));
case TextGranularity::kSentence: case TextGranularity::kSentence:
pos = NextSentencePosition(pos); return NextSentencePosition(
break; CreateVisiblePosition(selection_.Extent(), selection_.Affinity()));
case TextGranularity::kLine: case TextGranularity::kLine:
pos = NextLinePosition(pos, LineDirectionPointForBlockDirectionNavigation( return NextLinePosition(
selection_.Extent())); CreateVisiblePosition(selection_.Extent(), selection_.Affinity()),
break; LineDirectionPointForBlockDirectionNavigation(selection_.Extent()));
case TextGranularity::kParagraph: case TextGranularity::kParagraph:
pos = NextParagraphPosition( return NextParagraphPosition(
pos, CreateVisiblePosition(selection_.Extent(), selection_.Affinity()),
LineDirectionPointForBlockDirectionNavigation(selection_.Extent())); LineDirectionPointForBlockDirectionNavigation(selection_.Extent()));
break;
case TextGranularity::kSentenceBoundary: case TextGranularity::kSentenceBoundary:
pos = EndOfSentence(EndForPlatform()); return EndOfSentence(EndForPlatform());
break;
case TextGranularity::kLineBoundary: case TextGranularity::kLineBoundary:
pos = LogicalEndOfLine(EndForPlatform()); return LogicalEndOfLine(EndForPlatform());
break;
case TextGranularity::kParagraphBoundary: case TextGranularity::kParagraphBoundary:
pos = EndOfParagraph(EndForPlatform()); return EndOfParagraph(EndForPlatform());
break; break;
case TextGranularity::kDocumentBoundary: case TextGranularity::kDocumentBoundary: {
pos = EndForPlatform(); const VisiblePosition& pos = EndForPlatform();
if (IsEditablePosition(pos.DeepEquivalent())) if (IsEditablePosition(pos.DeepEquivalent()))
pos = EndOfEditableContent(pos); return EndOfEditableContent(pos);
else return EndOfDocument(pos);
pos = EndOfDocument(pos); }
break;
} }
NOTREACHED() << static_cast<int>(granularity);
return VisiblePosition();
}
VisiblePosition SelectionModifier::ModifyExtendingForward(
TextGranularity granularity) {
const VisiblePosition pos = ModifyExtendingForwardInternal(granularity);
if (DirectionOfEnclosingBlock() == TextDirection::kLtr) if (DirectionOfEnclosingBlock() == TextDirection::kLtr)
return AdjustForwardPositionForUserSelectAll(pos); return AdjustForwardPositionForUserSelectAll(pos);
return AdjustBackwardPositionForUserSelectAll(pos); return AdjustBackwardPositionForUserSelectAll(pos);
......
...@@ -69,6 +69,7 @@ class SelectionModifier { ...@@ -69,6 +69,7 @@ class SelectionModifier {
LayoutUnit LineDirectionPointForBlockDirectionNavigation(const Position&); LayoutUnit LineDirectionPointForBlockDirectionNavigation(const Position&);
VisiblePosition ModifyExtendingRight(TextGranularity); VisiblePosition ModifyExtendingRight(TextGranularity);
VisiblePosition ModifyExtendingForward(TextGranularity); VisiblePosition ModifyExtendingForward(TextGranularity);
VisiblePosition ModifyExtendingForwardInternal(TextGranularity);
VisiblePosition ModifyMovingRight(TextGranularity); VisiblePosition ModifyMovingRight(TextGranularity);
VisiblePosition ModifyMovingForward(TextGranularity); VisiblePosition ModifyMovingForward(TextGranularity);
VisiblePosition ModifyExtendingLeft(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