Chromium Code Reviews| Index: third_party/WebKit/Source/core/editing/FrameSelection.cpp |
| diff --git a/third_party/WebKit/Source/core/editing/FrameSelection.cpp b/third_party/WebKit/Source/core/editing/FrameSelection.cpp |
| index 04308dacbf630f281dbec6db1ad22fe219fd31df..7461de7bdcc91271d0a42ce2eeb18122ebd03ec6 100644 |
| --- a/third_party/WebKit/Source/core/editing/FrameSelection.cpp |
| +++ b/third_party/WebKit/Source/core/editing/FrameSelection.cpp |
| @@ -168,15 +168,16 @@ void FrameSelection::moveCaretSelection(const IntPoint& point) { |
| visiblePositionForContentsPoint(point, frame()); |
| SelectionInDOMTree::Builder builder; |
| builder.setIsDirectional(selection().isDirectional()); |
| + builder.setIsHandleVisible(true); |
| if (position.isNotNull()) |
| builder.collapse(position.toPositionWithAffinity()); |
| - setSelection(builder.build(), |
| - CloseTyping | ClearTypingStyle | UserTriggered | HandleVisible); |
| + setSelection(builder.build(), CloseTyping | ClearTypingStyle | UserTriggered); |
| } |
| template <typename Strategy> |
| void FrameSelection::setSelectionAlgorithm( |
| const VisibleSelectionTemplate<Strategy>& newSelection, |
| + HandleVisibility handleVisibility, |
| SetSelectionOptions options, |
| CursorAlignOnScroll align, |
| TextGranularity granularity) { |
| @@ -188,9 +189,6 @@ void FrameSelection::setSelectionAlgorithm( |
| m_granularityStrategy->Clear(); |
| bool closeTyping = options & CloseTyping; |
| bool shouldClearTypingStyle = options & ClearTypingStyle; |
| - const HandleVisibility handleVisibility = options & HandleVisible |
| - ? HandleVisibility::Visible |
| - : HandleVisibility::NotVisible; |
| EUserTriggered userTriggered = selectionOptionsToUserTriggered(options); |
| // TODO(editing-dev): We should rename variable |s| to another name to avoid |
| @@ -304,8 +302,10 @@ void FrameSelection::setSelection(const SelectionInDOMTree& newSelection, |
| .document() |
| ->updateStyleAndLayoutIgnorePendingStylesheets(); |
| } |
| - setSelection(createVisibleSelection(newSelection), options, align, |
| - granularity); |
| + setSelection(createVisibleSelection(newSelection), |
| + newSelection.isHandleVisible() ? HandleVisibility::Visible |
| + : HandleVisibility::NotVisible, |
| + options, align, granularity); |
| } |
| // TODO(yosin): We will make |selectionInFlatTree| version of |SetSelection()| |
| @@ -322,25 +322,29 @@ void FrameSelection::setSelection(const SelectionInFlatTree& newSelection, |
| .document() |
| ->updateStyleAndLayoutIgnorePendingStylesheets(); |
| } |
| - setSelection(createVisibleSelection(newSelection), options, align, |
| - granularity); |
| + setSelection(createVisibleSelection(newSelection), |
| + newSelection.isHandleVisible() ? HandleVisibility::Visible |
| + : HandleVisibility::NotVisible, |
| + options, align, granularity); |
| } |
| void FrameSelection::setSelection(const VisibleSelection& newSelection, |
| + HandleVisibility handleVisibility, |
| SetSelectionOptions options, |
| CursorAlignOnScroll align, |
| TextGranularity granularity) { |
| - setSelectionAlgorithm<EditingStrategy>(newSelection, options, align, |
| - granularity); |
| + setSelectionAlgorithm<EditingStrategy>(newSelection, handleVisibility, |
| + options, align, granularity); |
| } |
| void FrameSelection::setSelection( |
| const VisibleSelectionInFlatTree& newSelection, |
| + HandleVisibility handleVisibility, |
| SetSelectionOptions options, |
| CursorAlignOnScroll align, |
| TextGranularity granularity) { |
| - setSelectionAlgorithm<EditingInFlatTreeStrategy>(newSelection, options, align, |
| - granularity); |
| + setSelectionAlgorithm<EditingInFlatTreeStrategy>( |
| + newSelection, handleVisibility, options, align, granularity); |
| } |
| static bool removingNodeRemovesPosition(Node& node, const Position& position) { |
| @@ -616,7 +620,7 @@ void FrameSelection::updateSelectionIfNeeded(const Position& base, |
| newSelection.setWithoutValidation(start, end); |
| else |
| newSelection.setWithoutValidation(end, start); |
| - setSelection(newSelection, DoNotSetFocus); |
| + setSelection(newSelection, HandleVisibility::NotVisible, DoNotSetFocus); |
|
yosin_UTC9
2017/02/06 05:33:28
To reduce code change, can we introduce:
FrameSel
|
| } |
| void FrameSelection::didChangeFocus() { |
| @@ -668,7 +672,8 @@ bool FrameSelection::modify(EAlteration alter, |
| const SetSelectionOptions options = |
| CloseTyping | ClearTypingStyle | userTriggered; |
| - setSelection(selectionModifier.selection(), options); |
| + setSelection(selectionModifier.selection(), HandleVisibility::NotVisible, |
| + options); |
| if (granularity == LineGranularity || granularity == ParagraphGranularity) |
| m_xPosForVerticalArrowNavigation = |
| @@ -691,7 +696,7 @@ bool FrameSelection::modify(EAlteration alter, |
| return false; |
| } |
| - setSelection(selectionModifier.selection(), |
| + setSelection(selectionModifier.selection(), HandleVisibility::NotVisible, |
| CloseTyping | ClearTypingStyle | UserTriggered, |
| alter == AlterationMove ? CursorAlignOnScroll::Always |
| : CursorAlignOnScroll::IfNeeded); |
| @@ -1362,10 +1367,9 @@ void FrameSelection::moveRangeSelectionExtent(const IntPoint& contentsPoint) { |
| VisibleSelection newSelection = |
| granularityStrategy()->updateExtent(contentsPoint, m_frame); |
| - setSelection(newSelection, |
| + setSelection(newSelection, HandleVisibility::Visible, |
| FrameSelection::CloseTyping | FrameSelection::ClearTypingStyle | |
| - FrameSelection::DoNotClearStrategy | UserTriggered | |
| - FrameSelection::HandleVisible, |
| + FrameSelection::DoNotClearStrategy | UserTriggered, |
| CursorAlignOnScroll::IfNeeded, CharacterGranularity); |
| } |
| @@ -1386,11 +1390,8 @@ void FrameSelection::moveRangeSelection(const VisiblePosition& basePosition, |
| if (newSelection.isNone()) |
| return; |
| - SetSelectionOptions options = CloseTyping | ClearTypingStyle; |
| - if (isHandleVisible()) |
| - options |= HandleVisible; |
| - setSelection(newSelection, options, CursorAlignOnScroll::IfNeeded, |
| - granularity); |
| + setSelection(newSelection, m_handleVisibility, CloseTyping | ClearTypingStyle, |
| + CursorAlignOnScroll::IfNeeded, granularity); |
| } |
| void FrameSelection::updateIfNeeded() { |