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