Commit d01ebaa9 authored by Yoshifumi Inoue's avatar Yoshifumi Inoue Committed by Commit Bot

Introduce enum class SelectionModifyDirection as replacement of SelectionDirection

This patch introduces enum class |SelectionModifyDirection| as replacement of
|SelectionDirection| since it is used as a parameter of
|SelectinModifier::Modify()| for improving code readability.

Change-Id: Ib249d01106503138811214895c7e8018e48758c5
Reviewed-on: https://chromium-review.googlesource.com/579248
Commit-Queue: Yoshifumi Inoue <yosin@chromium.org>
Reviewed-by: default avatarYoichi Osato <yoichio@chromium.org>
Cr-Commit-Position: refs/heads/master@{#488602}
parent 71aba56b
......@@ -423,15 +423,15 @@ void DOMSelection::modify(const String& alter_string,
else
return;
SelectionDirection direction;
SelectionModifyDirection direction;
if (DeprecatedEqualIgnoringCase(direction_string, "forward"))
direction = kDirectionForward;
direction = SelectionModifyDirection::kForward;
else if (DeprecatedEqualIgnoringCase(direction_string, "backward"))
direction = kDirectionBackward;
direction = SelectionModifyDirection::kBackward;
else if (DeprecatedEqualIgnoringCase(direction_string, "left"))
direction = kDirectionLeft;
direction = SelectionModifyDirection::kLeft;
else if (DeprecatedEqualIgnoringCase(direction_string, "right"))
direction = kDirectionRight;
direction = SelectionModifyDirection::kRight;
else
return;
......
......@@ -342,7 +342,7 @@ static DispatchEventResult DispatchSelectStart(
// When |userTriggered| is |NotUserTrigged|, return value specifies whether
// selection is modified or not.
bool FrameSelection::Modify(SelectionModifyAlteration alter,
SelectionDirection direction,
SelectionModifyDirection direction,
TextGranularity granularity,
SetSelectionBy set_selection_by) {
SelectionModifier selection_modifier(*GetFrame(),
......
......@@ -51,6 +51,7 @@ class Range;
class SelectionEditor;
class LayoutSelection;
enum class SelectionModifyAlteration;
enum class SelectionModifyDirection;
class TextIteratorBehavior;
struct PaintInvalidatorContext;
......@@ -144,7 +145,7 @@ class CORE_EXPORT FrameSelection final
bool Contains(const LayoutPoint&);
bool Modify(SelectionModifyAlteration,
SelectionDirection,
SelectionModifyDirection,
TextGranularity,
SetSelectionBy = SetSelectionBy::kSystem);
......
......@@ -172,7 +172,8 @@ TEST_F(FrameSelectionTest, ModifyExtendWithFlatTree) {
.Extend(
ToPositionInDOMTree(PositionInFlatTree(GetDocument().body(), 2)))
.Build());
Selection().Modify(SelectionModifyAlteration::kExtend, kDirectionForward,
Selection().Modify(SelectionModifyAlteration::kExtend,
SelectionModifyDirection::kForward,
TextGranularity::kWord);
EXPECT_EQ(Position(two, 0), VisibleSelectionInDOMTree().Start());
EXPECT_EQ(Position(two, 3), VisibleSelectionInDOMTree().End());
......@@ -188,18 +189,18 @@ TEST_F(FrameSelectionTest, ModifyWithUserTriggered) {
Selection().SetSelection(
SelectionInDOMTree::Builder().Collapse(end_of_text).Build());
EXPECT_FALSE(
Selection().Modify(SelectionModifyAlteration::kMove, kDirectionForward,
TextGranularity::kCharacter, SetSelectionBy::kSystem))
EXPECT_FALSE(Selection().Modify(
SelectionModifyAlteration::kMove, SelectionModifyDirection::kForward,
TextGranularity::kCharacter, SetSelectionBy::kSystem))
<< "Selection.modify() returns false for non-user-triggered call when "
"selection isn't modified.";
EXPECT_EQ(end_of_text,
Selection().ComputeVisibleSelectionInDOMTreeDeprecated().Start())
<< "Selection isn't modified";
EXPECT_TRUE(Selection().Modify(SelectionModifyAlteration::kMove,
kDirectionForward, TextGranularity::kCharacter,
SetSelectionBy::kUser))
EXPECT_TRUE(Selection().Modify(
SelectionModifyAlteration::kMove, SelectionModifyDirection::kForward,
TextGranularity::kCharacter, SetSelectionBy::kUser))
<< "Selection.modify() returns true for user-triggered call";
EXPECT_EQ(end_of_text,
Selection().ComputeVisibleSelectionInDOMTreeDeprecated().Start())
......
......@@ -103,7 +103,7 @@ TextDirection SelectionModifier::DirectionOfSelection() const {
}
static bool IsBaseStart(const VisibleSelection& visible_selection,
SelectionDirection direction) {
SelectionModifyDirection direction) {
if (visible_selection.IsDirectional()) {
// Make base and extent match start and end so we extend the user-visible
// selection. This only matters for cases where base and extend point to
......@@ -112,16 +112,16 @@ static bool IsBaseStart(const VisibleSelection& visible_selection,
return visible_selection.IsBaseFirst();
}
switch (direction) {
case kDirectionRight:
case SelectionModifyDirection::kRight:
return DirectionOf(visible_selection) == TextDirection::kLtr;
case kDirectionForward:
case SelectionModifyDirection::kForward:
return true;
case kDirectionLeft:
case SelectionModifyDirection::kLeft:
return DirectionOf(visible_selection) != TextDirection::kLtr;
case kDirectionBackward:
case SelectionModifyDirection::kBackward:
return false;
}
NOTREACHED() << "We should handle " << direction;
NOTREACHED() << "We should handle " << static_cast<int>(direction);
return true;
}
......@@ -132,7 +132,7 @@ static bool IsBaseStart(const VisibleSelection& visible_selection,
// selection.
static SelectionInDOMTree PrepareToExtendSeelction(
const VisibleSelection& visible_selection,
SelectionDirection direction) {
SelectionModifyDirection direction) {
if (visible_selection.Start().IsNull())
return visible_selection.AsSelection();
const bool base_is_start = IsBaseStart(visible_selection, direction);
......@@ -561,7 +561,7 @@ static bool IsBoundary(TextGranularity granularity) {
}
bool SelectionModifier::Modify(SelectionModifyAlteration alter,
SelectionDirection direction,
SelectionModifyDirection direction,
TextGranularity granularity) {
DCHECK(!GetFrame()->GetDocument()->NeedsLayoutTreeUpdate());
DocumentLifecycle::DisallowTransitionScope disallow_transition(
......@@ -576,25 +576,25 @@ bool SelectionModifier::Modify(SelectionModifyAlteration alter,
VisiblePosition original_start_position = selection_.VisibleStart();
VisiblePosition position;
switch (direction) {
case kDirectionRight:
case SelectionModifyDirection::kRight:
if (alter == SelectionModifyAlteration::kMove)
position = ModifyMovingRight(granularity);
else
position = ModifyExtendingRight(granularity);
break;
case kDirectionForward:
case SelectionModifyDirection::kForward:
if (alter == SelectionModifyAlteration::kExtend)
position = ModifyExtendingForward(granularity);
else
position = ModifyMovingForward(granularity);
break;
case kDirectionLeft:
case SelectionModifyDirection::kLeft:
if (alter == SelectionModifyAlteration::kMove)
position = ModifyMovingLeft(granularity);
else
position = ModifyExtendingLeft(granularity);
break;
case kDirectionBackward:
case SelectionModifyDirection::kBackward:
if (alter == SelectionModifyAlteration::kExtend)
position = ModifyExtendingBackward(granularity);
else
......@@ -668,11 +668,11 @@ bool SelectionModifier::Modify(SelectionModifyAlteration alter,
.Build());
} else {
TextDirection text_direction = DirectionOfEnclosingBlock();
if (direction == kDirectionForward ||
if (direction == SelectionModifyDirection::kForward ||
(text_direction == TextDirection::kLtr &&
direction == kDirectionRight) ||
direction == SelectionModifyDirection::kRight) ||
(text_direction == TextDirection::kRtl &&
direction == kDirectionLeft)) {
direction == SelectionModifyDirection::kLeft)) {
selection_ = CreateVisibleSelection(
SelectionInDOMTree::Builder()
.Collapse(selection_.IsBaseFirst()
......@@ -726,8 +726,8 @@ bool SelectionModifier::ModifyWithPageGranularity(
if (alter == SelectionModifyAlteration::kExtend) {
selection_ = CreateVisibleSelection(PrepareToExtendSeelction(
selection_, direction == SelectionModifyVerticalDirection::kUp
? kDirectionBackward
: kDirectionForward));
? SelectionModifyDirection::kBackward
: SelectionModifyDirection::kForward));
}
VisiblePosition pos;
......
......@@ -38,6 +38,7 @@ class LocalFrame;
enum class SelectionModifyAlteration { kMove, kExtend };
enum class SelectionModifyVerticalDirection { kUp, kDown };
enum class SelectionModifyDirection { kBackward, kForward, kLeft, kRight };
class SelectionModifier {
STACK_ALLOCATED();
......@@ -54,7 +55,9 @@ class SelectionModifier {
}
const VisibleSelection& Selection() const { return selection_; }
bool Modify(SelectionModifyAlteration, SelectionDirection, TextGranularity);
bool Modify(SelectionModifyAlteration,
SelectionModifyDirection,
TextGranularity);
bool ModifyWithPageGranularity(SelectionModifyAlteration,
unsigned vertical_distance,
SelectionModifyVerticalDirection);
......
......@@ -42,12 +42,6 @@ namespace blink {
class SelectionAdjuster;
const TextAffinity kSelDefaultAffinity = TextAffinity::kDownstream;
enum SelectionDirection {
kDirectionForward,
kDirectionBackward,
kDirectionRight,
kDirectionLeft
};
template <typename Strategy>
class CORE_TEMPLATE_CLASS_EXPORT VisibleSelectionTemplate {
......
......@@ -744,11 +744,12 @@ void TypingCommand::DeleteKeyPressed(TextGranularity granularity,
SelectionModifier selection_modifier(*frame, EndingSelection());
selection_modifier.Modify(SelectionModifyAlteration::kExtend,
kDirectionBackward, granularity);
SelectionModifyDirection::kBackward, granularity);
if (kill_ring && selection_modifier.Selection().IsCaret() &&
granularity != TextGranularity::kCharacter) {
selection_modifier.Modify(SelectionModifyAlteration::kExtend,
kDirectionBackward, TextGranularity::kCharacter);
SelectionModifyDirection::kBackward,
TextGranularity::kCharacter);
}
const VisiblePosition& visible_start(EndingSelection().VisibleStart());
......@@ -803,7 +804,7 @@ void TypingCommand::DeleteKeyPressed(TextGranularity granularity,
// Extend the selection backward into the last cell, then deletion will
// handle the move.
selection_modifier.Modify(SelectionModifyAlteration::kExtend,
kDirectionBackward, granularity);
SelectionModifyDirection::kBackward, granularity);
// If the caret is just after a table, select the table and don't delete
// anything.
} else if (Element* table = TableElementJustBefore(visible_start)) {
......@@ -916,11 +917,12 @@ void TypingCommand::ForwardDeleteKeyPressed(TextGranularity granularity,
// root editable element or at the start of a document.
SelectionModifier selection_modifier(*frame, EndingSelection());
selection_modifier.Modify(SelectionModifyAlteration::kExtend,
kDirectionForward, granularity);
SelectionModifyDirection::kForward, granularity);
if (kill_ring && selection_modifier.Selection().IsCaret() &&
granularity != TextGranularity::kCharacter) {
selection_modifier.Modify(SelectionModifyAlteration::kExtend,
kDirectionForward, TextGranularity::kCharacter);
SelectionModifyDirection::kForward,
TextGranularity::kCharacter);
}
Position downstream_end = MostForwardCaretPosition(EndingSelection().End());
......@@ -959,7 +961,8 @@ void TypingCommand::ForwardDeleteKeyPressed(TextGranularity granularity,
selection_modifier.Selection().IsCaret() &&
IsEndOfParagraph(selection_modifier.Selection().VisibleEnd())) {
selection_modifier.Modify(SelectionModifyAlteration::kExtend,
kDirectionForward, TextGranularity::kCharacter);
SelectionModifyDirection::kForward,
TextGranularity::kCharacter);
}
const VisibleSelection& selection_to_delete = selection_modifier.Selection();
......
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