| Index: third_party/WebKit/Source/core/editing/commands/TypingCommand.cpp
|
| diff --git a/third_party/WebKit/Source/core/editing/commands/TypingCommand.cpp b/third_party/WebKit/Source/core/editing/commands/TypingCommand.cpp
|
| index 85fbcce80f3d152ca099a2db1a65105d949a1e3a..9cad8777f9a0e655f0ed413413773dbf343e4683 100644
|
| --- a/third_party/WebKit/Source/core/editing/commands/TypingCommand.cpp
|
| +++ b/third_party/WebKit/Source/core/editing/commands/TypingCommand.cpp
|
| @@ -155,6 +155,24 @@ InputEvent::InputType inputTypeForTypingCommand(
|
| }
|
| }
|
|
|
| +RangeVector* targetRangesFromCurrentSelectionOrExtendCaret(
|
| + const LocalFrame& frame,
|
| + SelectionDirection direction,
|
| + TextGranularity granularity) {
|
| + frame.document()->updateStyleAndLayoutIgnorePendingStylesheets();
|
| + SelectionModifier selectionModifier(frame, frame.selection().selection());
|
| + if (selectionModifier.selection().isCaret()) {
|
| + selectionModifier.modify(FrameSelection::AlterationExtend, direction,
|
| + granularity);
|
| + }
|
| + RangeVector* ranges = new RangeVector;
|
| + // We only supports single selections.
|
| + if (selectionModifier.selection().isNone())
|
| + return ranges;
|
| + ranges->append(firstRangeOf(selectionModifier.selection()));
|
| + return ranges;
|
| +}
|
| +
|
| } // anonymous namespace
|
|
|
| using namespace HTMLNames;
|
| @@ -285,12 +303,6 @@ void TypingCommand::forwardDeleteKeyPressed(Document& document,
|
| ->apply(source);
|
| }
|
|
|
| -String TypingCommand::textDataForInputEvent() const {
|
| - if (m_inputType == InputEvent::InputType::InsertText)
|
| - return m_textToInsert;
|
| - return CompositeEditCommand::textDataForInputEvent();
|
| -}
|
| -
|
| void TypingCommand::updateSelectionIfDifferentFromCurrentSelection(
|
| TypingCommand* typingCommand,
|
| LocalFrame* frame) {
|
| @@ -570,6 +582,42 @@ InputEvent::InputType TypingCommand::inputType() const {
|
| return m_inputType;
|
| }
|
|
|
| +String TypingCommand::textDataForInputEvent() const {
|
| + if (m_inputType == InputEvent::InputType::InsertText)
|
| + return m_textToInsert;
|
| + return CompositeEditCommand::textDataForInputEvent();
|
| +}
|
| +
|
| +RangeVector* TypingCommand::targetRangesForInputEvent() const {
|
| + LocalFrame* frame = document().frame();
|
| + DCHECK(frame);
|
| +
|
| + using InputType = InputEvent::InputType;
|
| +
|
| + switch (m_inputType) {
|
| + case InputType::DeleteContentBackward:
|
| + return targetRangesFromCurrentSelectionOrExtendCaret(
|
| + *frame, DirectionBackward, CharacterGranularity);
|
| + case InputType::DeleteContentForward:
|
| + return targetRangesFromCurrentSelectionOrExtendCaret(
|
| + *frame, DirectionForward, CharacterGranularity);
|
| + case InputType::DeleteWordBackward:
|
| + return targetRangesFromCurrentSelectionOrExtendCaret(
|
| + *frame, DirectionBackward, WordGranularity);
|
| + case InputType::DeleteWordForward:
|
| + return targetRangesFromCurrentSelectionOrExtendCaret(
|
| + *frame, DirectionForward, WordGranularity);
|
| + case InputType::DeleteLineBackward:
|
| + return targetRangesFromCurrentSelectionOrExtendCaret(
|
| + *frame, DirectionBackward, LineGranularity);
|
| + case InputType::DeleteLineForward:
|
| + return targetRangesFromCurrentSelectionOrExtendCaret(
|
| + *frame, DirectionForward, LineGranularity);
|
| + default:
|
| + return CompositeEditCommand::targetRangesForInputEvent();
|
| + }
|
| +}
|
| +
|
| bool TypingCommand::willAddTypingToOpenCommand(EditCommandSource source,
|
| InputEvent::InputType inputType,
|
| const String& text) {
|
|
|