Commit 0c5d1c88 authored by tanvir.rizvi's avatar tanvir.rizvi Committed by Commit Bot

Introduce ComputeVisibleExtent() in SelectionModifier

Currently we have  many calls to function
CreateVisiblePosition(selection_.Extent(), selection_.Affinity())
in SelectionModifier. So to reduce the source code
introduced ComputeVisibleExtent() in SelectionModifier.cpp

BUG=749380

Change-Id: I31521e1d4956817131719b30f3dede21fe0221ba
Reviewed-on: https://chromium-review.googlesource.com/591727Reviewed-by: default avatarYoshifumi Inoue <yosin@chromium.org>
Commit-Queue: Yoshifumi Inoue <yosin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#491247}
parent 9dae0129
...@@ -77,6 +77,12 @@ SelectionModifier::SelectionModifier(const LocalFrame& frame, ...@@ -77,6 +77,12 @@ SelectionModifier::SelectionModifier(const LocalFrame& frame,
const VisibleSelection& selection) const VisibleSelection& selection)
: SelectionModifier(frame, selection, NoXPosForVerticalArrowNavigation()) {} : SelectionModifier(frame, selection, NoXPosForVerticalArrowNavigation()) {}
static VisiblePosition ComputeVisibleExtent(
const VisibleSelection& visible_selection) {
return CreateVisiblePosition(visible_selection.Extent(),
visible_selection.Affinity());
}
TextDirection SelectionModifier::DirectionOfEnclosingBlock() const { TextDirection SelectionModifier::DirectionOfEnclosingBlock() const {
return DirectionOfEnclosingBlockOf(selection_.Extent()); return DirectionOfEnclosingBlockOf(selection_.Extent());
} }
...@@ -209,20 +215,16 @@ VisiblePosition SelectionModifier::ModifyExtendingRightInternal( ...@@ -209,20 +215,16 @@ VisiblePosition SelectionModifier::ModifyExtendingRightInternal(
switch (granularity) { switch (granularity) {
case TextGranularity::kCharacter: case TextGranularity::kCharacter:
if (DirectionOfEnclosingBlock() == TextDirection::kLtr) { if (DirectionOfEnclosingBlock() == TextDirection::kLtr) {
return NextPositionOf( return NextPositionOf(ComputeVisibleExtent(selection_),
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()), kCanSkipOverEditingBoundary);
kCanSkipOverEditingBoundary);
} }
return PreviousPositionOf( return PreviousPositionOf(ComputeVisibleExtent(selection_),
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()), kCanSkipOverEditingBoundary);
kCanSkipOverEditingBoundary);
case TextGranularity::kWord: case TextGranularity::kWord:
if (DirectionOfEnclosingBlock() == TextDirection::kLtr) { if (DirectionOfEnclosingBlock() == TextDirection::kLtr) {
return NextWordPositionForPlatform( return NextWordPositionForPlatform(ComputeVisibleExtent(selection_));
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()));
} }
return PreviousWordPosition( return PreviousWordPosition(ComputeVisibleExtent(selection_));
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()));
case TextGranularity::kLineBoundary: case TextGranularity::kLineBoundary:
if (DirectionOfEnclosingBlock() == TextDirection::kLtr) if (DirectionOfEnclosingBlock() == TextDirection::kLtr)
return ModifyExtendingForwardInternal(granularity); return ModifyExtendingForwardInternal(granularity);
...@@ -252,22 +254,19 @@ VisiblePosition SelectionModifier::ModifyExtendingForwardInternal( ...@@ -252,22 +254,19 @@ VisiblePosition SelectionModifier::ModifyExtendingForwardInternal(
TextGranularity granularity) { TextGranularity granularity) {
switch (granularity) { switch (granularity) {
case TextGranularity::kCharacter: case TextGranularity::kCharacter:
return NextPositionOf( return NextPositionOf(ComputeVisibleExtent(selection_),
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()), kCanSkipOverEditingBoundary);
kCanSkipOverEditingBoundary);
case TextGranularity::kWord: case TextGranularity::kWord:
return NextWordPositionForPlatform( return NextWordPositionForPlatform(ComputeVisibleExtent(selection_));
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()));
case TextGranularity::kSentence: case TextGranularity::kSentence:
return NextSentencePosition( return NextSentencePosition(ComputeVisibleExtent(selection_));
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()));
case TextGranularity::kLine: case TextGranularity::kLine:
return NextLinePosition( return NextLinePosition(
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()), ComputeVisibleExtent(selection_),
LineDirectionPointForBlockDirectionNavigation(selection_.Extent())); LineDirectionPointForBlockDirectionNavigation(selection_.Extent()));
case TextGranularity::kParagraph: case TextGranularity::kParagraph:
return NextParagraphPosition( return NextParagraphPosition(
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()), ComputeVisibleExtent(selection_),
LineDirectionPointForBlockDirectionNavigation(selection_.Extent())); LineDirectionPointForBlockDirectionNavigation(selection_.Extent()));
case TextGranularity::kSentenceBoundary: case TextGranularity::kSentenceBoundary:
return EndOfSentence(EndForPlatform()); return EndOfSentence(EndForPlatform());
...@@ -300,8 +299,7 @@ VisiblePosition SelectionModifier::ModifyMovingRight( ...@@ -300,8 +299,7 @@ VisiblePosition SelectionModifier::ModifyMovingRight(
switch (granularity) { switch (granularity) {
case TextGranularity::kCharacter: case TextGranularity::kCharacter:
if (!selection_.IsRange()) { if (!selection_.IsRange()) {
return RightPositionOf( return RightPositionOf(ComputeVisibleExtent(selection_));
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()));
} }
if (DirectionOfSelection() == TextDirection::kLtr) if (DirectionOfSelection() == TextDirection::kLtr)
return CreateVisiblePosition(selection_.End(), selection_.Affinity()); return CreateVisiblePosition(selection_.End(), selection_.Affinity());
...@@ -310,9 +308,8 @@ VisiblePosition SelectionModifier::ModifyMovingRight( ...@@ -310,9 +308,8 @@ VisiblePosition SelectionModifier::ModifyMovingRight(
const bool skips_space_when_moving_right = const bool skips_space_when_moving_right =
GetFrame() && GetFrame() &&
GetFrame()->GetEditor().Behavior().ShouldSkipSpaceWhenMovingRight(); GetFrame()->GetEditor().Behavior().ShouldSkipSpaceWhenMovingRight();
return RightWordPosition( return RightWordPosition(ComputeVisibleExtent(selection_),
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()), skips_space_when_moving_right);
skips_space_when_moving_right);
} }
case TextGranularity::kSentence: case TextGranularity::kSentence:
case TextGranularity::kLine: case TextGranularity::kLine:
...@@ -338,15 +335,12 @@ VisiblePosition SelectionModifier::ModifyMovingForward( ...@@ -338,15 +335,12 @@ VisiblePosition SelectionModifier::ModifyMovingForward(
case TextGranularity::kCharacter: case TextGranularity::kCharacter:
if (selection_.IsRange()) if (selection_.IsRange())
return CreateVisiblePosition(selection_.End(), selection_.Affinity()); return CreateVisiblePosition(selection_.End(), selection_.Affinity());
return NextPositionOf( return NextPositionOf(ComputeVisibleExtent(selection_),
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()), kCanSkipOverEditingBoundary);
kCanSkipOverEditingBoundary);
case TextGranularity::kWord: case TextGranularity::kWord:
return NextWordPositionForPlatform( return NextWordPositionForPlatform(ComputeVisibleExtent(selection_));
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()));
case TextGranularity::kSentence: case TextGranularity::kSentence:
return NextSentencePosition( return NextSentencePosition(ComputeVisibleExtent(selection_));
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()));
case TextGranularity::kLine: { case TextGranularity::kLine: {
// down-arrowing from a range selection that ends at the start of a line // down-arrowing from a range selection that ends at the start of a line
// needs to leave the selection at that line start (no need to call // needs to leave the selection at that line start (no need to call
...@@ -390,20 +384,16 @@ VisiblePosition SelectionModifier::ModifyExtendingLeftInternal( ...@@ -390,20 +384,16 @@ VisiblePosition SelectionModifier::ModifyExtendingLeftInternal(
switch (granularity) { switch (granularity) {
case TextGranularity::kCharacter: case TextGranularity::kCharacter:
if (DirectionOfEnclosingBlock() == TextDirection::kLtr) { if (DirectionOfEnclosingBlock() == TextDirection::kLtr) {
return PreviousPositionOf( return PreviousPositionOf(ComputeVisibleExtent(selection_),
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()), kCanSkipOverEditingBoundary);
kCanSkipOverEditingBoundary);
} }
return NextPositionOf( return NextPositionOf(ComputeVisibleExtent(selection_),
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()), kCanSkipOverEditingBoundary);
kCanSkipOverEditingBoundary);
case TextGranularity::kWord: case TextGranularity::kWord:
if (DirectionOfEnclosingBlock() == TextDirection::kLtr) { if (DirectionOfEnclosingBlock() == TextDirection::kLtr) {
return PreviousWordPosition( return PreviousWordPosition(ComputeVisibleExtent(selection_));
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()));
} }
return NextWordPositionForPlatform( return NextWordPositionForPlatform(ComputeVisibleExtent(selection_));
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()));
case TextGranularity::kLineBoundary: case TextGranularity::kLineBoundary:
if (DirectionOfEnclosingBlock() == TextDirection::kLtr) if (DirectionOfEnclosingBlock() == TextDirection::kLtr)
return ModifyExtendingBackwardInternal(granularity); return ModifyExtendingBackwardInternal(granularity);
...@@ -436,22 +426,19 @@ VisiblePosition SelectionModifier::ModifyExtendingBackwardInternal( ...@@ -436,22 +426,19 @@ VisiblePosition SelectionModifier::ModifyExtendingBackwardInternal(
// VPs to iterate over everything. // VPs to iterate over everything.
switch (granularity) { switch (granularity) {
case TextGranularity::kCharacter: case TextGranularity::kCharacter:
return PreviousPositionOf( return PreviousPositionOf(ComputeVisibleExtent(selection_),
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()), kCanSkipOverEditingBoundary);
kCanSkipOverEditingBoundary);
case TextGranularity::kWord: case TextGranularity::kWord:
return PreviousWordPosition( return PreviousWordPosition(ComputeVisibleExtent(selection_));
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()));
case TextGranularity::kSentence: case TextGranularity::kSentence:
return PreviousSentencePosition( return PreviousSentencePosition(ComputeVisibleExtent(selection_));
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()));
case TextGranularity::kLine: case TextGranularity::kLine:
return PreviousLinePosition( return PreviousLinePosition(
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()), ComputeVisibleExtent(selection_),
LineDirectionPointForBlockDirectionNavigation(selection_.Extent())); LineDirectionPointForBlockDirectionNavigation(selection_.Extent()));
case TextGranularity::kParagraph: case TextGranularity::kParagraph:
return PreviousParagraphPosition( return PreviousParagraphPosition(
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()), ComputeVisibleExtent(selection_),
LineDirectionPointForBlockDirectionNavigation(selection_.Extent())); LineDirectionPointForBlockDirectionNavigation(selection_.Extent()));
case TextGranularity::kSentenceBoundary: case TextGranularity::kSentenceBoundary:
return StartOfSentence(StartForPlatform()); return StartOfSentence(StartForPlatform());
...@@ -483,8 +470,7 @@ VisiblePosition SelectionModifier::ModifyMovingLeft( ...@@ -483,8 +470,7 @@ VisiblePosition SelectionModifier::ModifyMovingLeft(
switch (granularity) { switch (granularity) {
case TextGranularity::kCharacter: case TextGranularity::kCharacter:
if (!selection_.IsRange()) { if (!selection_.IsRange()) {
return LeftPositionOf( return LeftPositionOf(ComputeVisibleExtent(selection_));
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()));
} }
if (DirectionOfSelection() == TextDirection::kLtr) if (DirectionOfSelection() == TextDirection::kLtr)
return CreateVisiblePosition(selection_.Start(), selection_.Affinity()); return CreateVisiblePosition(selection_.Start(), selection_.Affinity());
...@@ -493,9 +479,8 @@ VisiblePosition SelectionModifier::ModifyMovingLeft( ...@@ -493,9 +479,8 @@ VisiblePosition SelectionModifier::ModifyMovingLeft(
const bool skips_space_when_moving_right = const bool skips_space_when_moving_right =
GetFrame() && GetFrame() &&
GetFrame()->GetEditor().Behavior().ShouldSkipSpaceWhenMovingRight(); GetFrame()->GetEditor().Behavior().ShouldSkipSpaceWhenMovingRight();
return LeftWordPosition( return LeftWordPosition(ComputeVisibleExtent(selection_),
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()), skips_space_when_moving_right);
skips_space_when_moving_right);
} }
case TextGranularity::kSentence: case TextGranularity::kSentence:
case TextGranularity::kLine: case TextGranularity::kLine:
...@@ -518,20 +503,18 @@ VisiblePosition SelectionModifier::ModifyMovingBackward( ...@@ -518,20 +503,18 @@ VisiblePosition SelectionModifier::ModifyMovingBackward(
VisiblePosition pos; VisiblePosition pos;
switch (granularity) { switch (granularity) {
case TextGranularity::kCharacter: case TextGranularity::kCharacter:
if (selection_.IsRange()) if (selection_.IsRange()) {
pos = CreateVisiblePosition(selection_.Start(), selection_.Affinity()); pos = CreateVisiblePosition(selection_.Start(), selection_.Affinity());
else } else {
pos = PreviousPositionOf( pos = PreviousPositionOf(ComputeVisibleExtent(selection_),
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()), kCanSkipOverEditingBoundary);
kCanSkipOverEditingBoundary); }
break; break;
case TextGranularity::kWord: case TextGranularity::kWord:
pos = PreviousWordPosition( pos = PreviousWordPosition(ComputeVisibleExtent(selection_));
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()));
break; break;
case TextGranularity::kSentence: case TextGranularity::kSentence:
pos = PreviousSentencePosition( pos = PreviousSentencePosition(ComputeVisibleExtent(selection_));
CreateVisiblePosition(selection_.Extent(), selection_.Affinity()));
break; break;
case TextGranularity::kLine: case TextGranularity::kLine:
pos = PreviousLinePosition( pos = PreviousLinePosition(
...@@ -754,7 +737,7 @@ bool SelectionModifier::ModifyWithPageGranularity( ...@@ -754,7 +737,7 @@ bool SelectionModifier::ModifyWithPageGranularity(
: selection_.End()); : selection_.End());
break; break;
case SelectionModifyAlteration::kExtend: case SelectionModifyAlteration::kExtend:
pos = CreateVisiblePosition(selection_.Extent(), selection_.Affinity()); pos = ComputeVisibleExtent(selection_);
x_pos = x_pos =
LineDirectionPointForBlockDirectionNavigation(selection_.Extent()); LineDirectionPointForBlockDirectionNavigation(selection_.Extent());
break; break;
......
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