Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(215)

Unified Diff: third_party/WebKit/Source/core/editing/Editor.cpp

Issue 2576903002: [EditCommandSource] Pass source from |Editor::Command| to |Editor::apply*()/insert*()/...| (2/3) (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/editing/Editor.cpp
diff --git a/third_party/WebKit/Source/core/editing/Editor.cpp b/third_party/WebKit/Source/core/editing/Editor.cpp
index d6800be1b677f6a0bf346363ae24713bcca88213..81ffeb5c0492907fb70c7061cb3f638bfed0e97a 100644
--- a/third_party/WebKit/Source/core/editing/Editor.cpp
+++ b/third_party/WebKit/Source/core/editing/Editor.cpp
@@ -219,8 +219,9 @@ bool Editor::handleTextEvent(TextEvent* event) {
if (event->isPaste()) {
if (event->pastingFragment()) {
replaceSelectionWithFragment(
- event->pastingFragment(), false, event->shouldSmartReplace(),
- event->shouldMatchStyle(), InputEvent::InputType::InsertFromPaste);
+ CommandSource::MenuOrKeyBinding, event->pastingFragment(), false,
+ event->shouldSmartReplace(), event->shouldMatchStyle(),
+ InputEvent::InputType::InsertFromPaste);
} else {
replaceSelectionWithText(event->data(), false,
event->shouldSmartReplace(),
@@ -236,7 +237,8 @@ bool Editor::handleTextEvent(TextEvent* event) {
return insertParagraphSeparator();
}
- return insertTextWithoutSendingTextEvent(data, false, event);
+ return insertTextWithoutSendingTextEvent(CommandSource::MenuOrKeyBinding,
+ data, false, event);
}
bool Editor::canEdit() const {
@@ -316,7 +318,8 @@ bool Editor::isSelectTrailingWhitespaceEnabled() const {
return false;
}
-bool Editor::deleteWithDirection(DeleteDirection direction,
+bool Editor::deleteWithDirection(CommandSource source,
+ DeleteDirection direction,
TextGranularity granularity,
bool killRing,
bool isTypingAction) {
@@ -335,6 +338,7 @@ bool Editor::deleteWithDirection(DeleteDirection direction,
if (killRing)
addToKillRing(selectedRange());
deleteSelectionWithSmartDelete(
+ source,
canSmartCopyOrDelete() ? DeleteMode::Smart : DeleteMode::Simple,
deletionInputTypeFromTextGranularity(direction, granularity));
// Implicitly calls revealSelectionAfterEditingOperation().
@@ -372,6 +376,7 @@ bool Editor::deleteWithDirection(DeleteDirection direction,
}
void Editor::deleteSelectionWithSmartDelete(
+ CommandSource,
Xiaocheng 2016/12/15 03:27:50 Please add a TODO about future plan so that other
chongz 2016/12/16 00:45:22 Done.
DeleteMode deleteMode,
InputEvent::InputType inputType,
const Position& referenceMovePosition) {
@@ -564,7 +569,8 @@ bool Editor::canSmartReplaceWithPasteboard(Pasteboard* pasteboard) {
return smartInsertDeleteEnabled() && pasteboard->canSmartReplace();
}
-void Editor::replaceSelectionWithFragment(DocumentFragment* fragment,
+void Editor::replaceSelectionWithFragment(CommandSource,
Xiaocheng 2016/12/15 03:27:50 Please add a TODO about future plan so that other
chongz 2016/12/16 00:45:22 Done.
+ DocumentFragment* fragment,
bool selectReplacement,
bool smartReplace,
bool matchStyle,
@@ -593,10 +599,11 @@ void Editor::replaceSelectionWithFragment(DocumentFragment* fragment,
void Editor::replaceSelectionWithText(const String& text,
bool selectReplacement,
bool smartReplace,
- InputEvent::InputType inputType) {
- replaceSelectionWithFragment(createFragmentFromText(selectedRange(), text),
- selectReplacement, smartReplace, true,
- inputType);
+ InputEvent::InputType inputType,
+ CommandSource source) {
+ replaceSelectionWithFragment(
+ source, createFragmentFromText(selectedRange(), text), selectReplacement,
+ smartReplace, true, inputType);
}
// TODO(xiaochengh): Merge it with |replaceSelectionWithFragment()|.
@@ -634,8 +641,9 @@ bool Editor::deleteSelectionAfterDraggingWithEvents(
return false;
if (shouldDelete && dragSource->isConnected()) {
- deleteSelectionWithSmartDelete(
- deleteMode, InputEvent::InputType::DeleteByDrag, referenceMovePosition);
+ deleteSelectionWithSmartDelete(CommandSource::MenuOrKeyBinding, deleteMode,
+ InputEvent::InputType::DeleteByDrag,
+ referenceMovePosition);
}
return true;
@@ -699,7 +707,7 @@ void Editor::respondToChangedContents(const VisibleSelection& endingSelection) {
client().respondToChangedContents();
}
-void Editor::removeFormattingAndStyle() {
+void Editor::removeFormattingAndStyle(CommandSource) {
Xiaocheng 2016/12/15 03:27:50 Please add a TODO about future plan so that other
chongz 2016/12/16 00:45:22 Done.
DCHECK(frame().document());
RemoveFormatCommand::create(*frame().document())->apply();
}
@@ -725,14 +733,15 @@ Element* Editor::findEventTargetFromSelection() const {
return findEventTargetFrom(frame().selection().selection());
}
-void Editor::applyStyle(StylePropertySet* style,
+void Editor::applyStyle(CommandSource source,
+ StylePropertySet* style,
InputEvent::InputType inputType) {
switch (frame().selection().getSelectionType()) {
case NoSelection:
// do nothing
break;
case CaretSelection:
- computeAndSetTypingStyle(style, inputType);
+ computeAndSetTypingStyle(source, style, inputType);
break;
case RangeSelection:
if (style) {
@@ -745,7 +754,8 @@ void Editor::applyStyle(StylePropertySet* style,
}
}
-void Editor::applyParagraphStyle(StylePropertySet* style,
+void Editor::applyParagraphStyle(CommandSource,
Xiaocheng 2016/12/15 03:27:50 Please add a TODO about future plan so that other
chongz 2016/12/16 00:45:22 Done.
+ StylePropertySet* style,
InputEvent::InputType inputType) {
if (frame().selection().isNone() || !style)
return;
@@ -755,20 +765,22 @@ void Editor::applyParagraphStyle(StylePropertySet* style,
->apply();
}
-void Editor::applyStyleToSelection(StylePropertySet* style,
+void Editor::applyStyleToSelection(CommandSource source,
+ StylePropertySet* style,
InputEvent::InputType inputType) {
if (!style || style->isEmpty() || !canEditRichly())
return;
- applyStyle(style, inputType);
+ applyStyle(source, style, inputType);
}
-void Editor::applyParagraphStyleToSelection(StylePropertySet* style,
+void Editor::applyParagraphStyleToSelection(CommandSource source,
+ StylePropertySet* style,
InputEvent::InputType inputType) {
if (!style || style->isEmpty() || !canEditRichly())
return;
- applyParagraphStyle(style, inputType);
+ applyParagraphStyle(source, style, inputType);
}
bool Editor::selectionStartHasStyle(CSSPropertyID propertyID,
@@ -954,7 +966,8 @@ bool Editor::insertText(const String& text, KeyboardEvent* triggeringEvent) {
return frame().eventHandler().handleTextInputEvent(text, triggeringEvent);
}
-bool Editor::insertTextWithoutSendingTextEvent(const String& text,
+bool Editor::insertTextWithoutSendingTextEvent(CommandSource source,
+ const String& text,
bool selectInsertedText,
TextEvent* triggeringEvent) {
if (text.isEmpty())
@@ -1059,7 +1072,7 @@ void Editor::cut(CommandSource source) {
return;
}
deleteSelectionWithSmartDelete(
- canSmartCopyOrDelete() ? DeleteMode::Smart : DeleteMode::Simple,
+ source, canSmartCopyOrDelete() ? DeleteMode::Smart : DeleteMode::Simple,
InputEvent::InputType::DeleteByCut);
}
}
@@ -1136,7 +1149,7 @@ void Editor::pasteAsPlainText(CommandSource source) {
pasteAsPlainTextWithPasteboard(Pasteboard::generalPasteboard());
}
-void Editor::performDelete() {
+void Editor::performDelete(CommandSource source) {
if (!canDelete())
return;
@@ -1149,7 +1162,7 @@ void Editor::performDelete() {
// TODO(chongz): |Editor::performDelete()| has no direction.
// https://github.com/w3c/editing/issues/130
deleteSelectionWithSmartDelete(
- canSmartCopyOrDelete() ? DeleteMode::Smart : DeleteMode::Simple,
+ source, canSmartCopyOrDelete() ? DeleteMode::Smart : DeleteMode::Simple,
InputEvent::InputType::DeleteContentBackward);
// clear the "start new kill ring sequence" setting, because it was set to
@@ -1236,7 +1249,7 @@ bool Editor::canUndo() {
return m_undoStack->canUndo();
}
-void Editor::undo() {
+void Editor::undo(CommandSource) {
Xiaocheng 2016/12/15 03:27:50 How are we going to use CommandSource here?
chongz 2016/12/16 00:45:22 We are going to fire a 'beforeinput' for user trig
m_undoStack->undo();
}
@@ -1244,7 +1257,7 @@ bool Editor::canRedo() {
return m_undoStack->canRedo();
}
-void Editor::redo() {
+void Editor::redo(CommandSource) {
Xiaocheng 2016/12/15 03:27:50 Same question as undo.
chongz 2016/12/16 00:45:22 Same as above.
m_undoStack->redo();
}
@@ -1268,7 +1281,8 @@ void Editor::setBaseWritingDirection(WritingDirection direction) {
: direction == RightToLeftWritingDirection ? "rtl" : "inherit",
false);
applyParagraphStyleToSelection(
- style, InputEvent::InputType::FormatSetBlockTextDirection);
+ CommandSource::MenuOrKeyBinding, style,
+ InputEvent::InputType::FormatSetBlockTextDirection);
}
void Editor::revealSelectionAfterEditingOperation(
@@ -1279,7 +1293,7 @@ void Editor::revealSelectionAfterEditingOperation(
frame().selection().revealSelection(alignment, revealExtentOption);
}
-void Editor::transpose() {
+void Editor::transpose(CommandSource source) {
if (!canEdit())
return;
@@ -1317,7 +1331,7 @@ void Editor::transpose() {
// TODO(chongz): Once we add |InsertTranspose| in |InputEvent::InputType|, we
// should use it instead of |InsertFromPaste|.
replaceSelectionWithText(transposed, false, false,
- InputEvent::InputType::InsertFromPaste);
+ InputEvent::InputType::InsertFromPaste, source);
}
void Editor::addToKillRing(const EphemeralRange& range) {
@@ -1397,7 +1411,8 @@ IntRect Editor::firstRectForRange(const EphemeralRange& range) const {
startCaretRect.height());
}
-void Editor::computeAndSetTypingStyle(StylePropertySet* style,
+void Editor::computeAndSetTypingStyle(CommandSource,
Xiaocheng 2016/12/15 03:27:50 Please add a TODO about future plan so that other
chongz 2016/12/16 00:45:22 Done.
+ StylePropertySet* style,
InputEvent::InputType inputType) {
if (!style || style->isEmpty()) {
frame().selection().clearTypingStyle();

Powered by Google App Engine
This is Rietveld 408576698