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

Side by Side Diff: third_party/WebKit/Source/core/editing/Editor.h

Issue 2374743002: [InputEvent] Support |deleteByDrag|, |insertFromDrop| and fire in sequential order (Closed)
Patch Set: Yosin's review Created 4 years, 2 months 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 26 matching lines...) Expand all
37 #include "core/editing/iterators/TextIterator.h" 37 #include "core/editing/iterators/TextIterator.h"
38 #include "core/editing/markers/DocumentMarker.h" 38 #include "core/editing/markers/DocumentMarker.h"
39 #include "core/events/InputEvent.h" 39 #include "core/events/InputEvent.h"
40 #include "platform/PasteMode.h" 40 #include "platform/PasteMode.h"
41 #include "platform/heap/Handle.h" 41 #include "platform/heap/Handle.h"
42 #include <memory> 42 #include <memory>
43 43
44 namespace blink { 44 namespace blink {
45 45
46 class CompositeEditCommand; 46 class CompositeEditCommand;
47 class DragData;
47 class DummyPageHolder; 48 class DummyPageHolder;
48 class EditCommandComposition; 49 class EditCommandComposition;
49 class EditorClient; 50 class EditorClient;
50 class EditorInternalCommand; 51 class EditorInternalCommand;
51 class LocalFrame; 52 class LocalFrame;
52 class HitTestResult; 53 class HitTestResult;
53 class KillRing; 54 class KillRing;
54 class Pasteboard; 55 class Pasteboard;
55 class SpellChecker; 56 class SpellChecker;
56 class StylePropertySet; 57 class StylePropertySet;
57 class TextEvent; 58 class TextEvent;
58 class UndoStack; 59 class UndoStack;
59 60
60 enum class DeleteDirection; 61 enum class DeleteDirection;
62 enum class SmartDelete { Yes, No };
yosin_UTC9 2016/10/03 09:19:03 How about enum class DeleteMode { Simple, Smart }?
chongz 2016/10/04 02:18:39 Done.
63 enum class SmartInsert { Yes, No };
yosin_UTC9 2016/10/03 09:19:03 How about enum class InsertMode { Simple, Smart }?
chongz 2016/10/04 02:18:39 Done.
64 enum class ChosePlainText { Yes, No };
yosin_UTC9 2016/10/03 09:19:03 How about DragSourceType { HTMLSource, PlainTextSo
chongz 2016/10/04 02:18:39 Done.
61 65
62 enum EditorCommandSource { CommandFromMenuOrKeyBinding, CommandFromDOM }; 66 enum EditorCommandSource { CommandFromMenuOrKeyBinding, CommandFromDOM };
63 enum EditorParagraphSeparator { EditorParagraphSeparatorIsDiv, EditorParagraphSe paratorIsP }; 67 enum EditorParagraphSeparator { EditorParagraphSeparatorIsDiv, EditorParagraphSe paratorIsP };
64 68
65 class CORE_EXPORT Editor final : public GarbageCollectedFinalized<Editor> { 69 class CORE_EXPORT Editor final : public GarbageCollectedFinalized<Editor> {
66 WTF_MAKE_NONCOPYABLE(Editor); 70 WTF_MAKE_NONCOPYABLE(Editor);
67 public: 71 public:
68 static Editor* create(LocalFrame&); 72 static Editor* create(LocalFrame&);
69 ~Editor(); 73 ~Editor();
70 74
(...skipping 28 matching lines...) Expand all
99 void transpose(); 103 void transpose();
100 104
101 void respondToChangedContents(const VisibleSelection& endingSelection); 105 void respondToChangedContents(const VisibleSelection& endingSelection);
102 106
103 bool selectionStartHasStyle(CSSPropertyID, const String& value) const; 107 bool selectionStartHasStyle(CSSPropertyID, const String& value) const;
104 TriState selectionHasStyle(CSSPropertyID, const String& value) const; 108 TriState selectionHasStyle(CSSPropertyID, const String& value) const;
105 String selectionStartCSSPropertyValue(CSSPropertyID); 109 String selectionStartCSSPropertyValue(CSSPropertyID);
106 110
107 void removeFormattingAndStyle(); 111 void removeFormattingAndStyle();
108 112
113 void registerCommandGroup(CompositeEditCommand* commandGroupWrapper);
109 void clearLastEditCommand(); 114 void clearLastEditCommand();
110 115
111 bool deleteWithDirection(DeleteDirection, TextGranularity, bool killRing, bo ol isTypingAction); 116 bool deleteWithDirection(DeleteDirection, TextGranularity, bool killRing, bo ol isTypingAction);
112 void deleteSelectionWithSmartDelete(bool smartDelete, InputEvent::InputType) ; 117 void deleteSelectionWithSmartDelete(bool smartDelete, InputEvent::InputType, const Position& referenceMovePosition = Position());
yosin_UTC9 2016/10/03 09:19:03 Is it better to use |SmartDelete| enum class inste
chongz 2016/10/04 02:18:39 Done.
113 118
114 void applyStyle(StylePropertySet*, InputEvent::InputType); 119 void applyStyle(StylePropertySet*, InputEvent::InputType);
115 void applyParagraphStyle(StylePropertySet*, InputEvent::InputType); 120 void applyParagraphStyle(StylePropertySet*, InputEvent::InputType);
116 void applyStyleToSelection(StylePropertySet*, InputEvent::InputType); 121 void applyStyleToSelection(StylePropertySet*, InputEvent::InputType);
117 void applyParagraphStyleToSelection(StylePropertySet*, InputEvent::InputType ); 122 void applyParagraphStyleToSelection(StylePropertySet*, InputEvent::InputType );
118 123
119 void appliedEditing(CompositeEditCommand*); 124 void appliedEditing(CompositeEditCommand*);
120 void unappliedEditing(EditCommandComposition*); 125 void unappliedEditing(EditCommandComposition*);
121 void reappliedEditing(EditCommandComposition*); 126 void reappliedEditing(EditCommandComposition*);
122 127
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 EditingBehavior behavior() const; 203 EditingBehavior behavior() const;
199 204
200 EphemeralRange selectedRange(); 205 EphemeralRange selectedRange();
201 206
202 void addToKillRing(const EphemeralRange&); 207 void addToKillRing(const EphemeralRange&);
203 208
204 void pasteAsFragment(DocumentFragment*, bool smartReplace, bool matchStyle); 209 void pasteAsFragment(DocumentFragment*, bool smartReplace, bool matchStyle);
205 void pasteAsPlainText(const String&, bool smartReplace); 210 void pasteAsPlainText(const String&, bool smartReplace);
206 211
207 Element* findEventTargetFrom(const VisibleSelection&) const; 212 Element* findEventTargetFrom(const VisibleSelection&) const;
213 Element* findEventTargetFromSelection() const;
208 214
209 bool findString(const String&, FindOptions); 215 bool findString(const String&, FindOptions);
210 216
211 Range* findStringAndScrollToVisible(const String&, Range*, FindOptions); 217 Range* findStringAndScrollToVisible(const String&, Range*, FindOptions);
212 Range* findRangeOfString(const String& target, const EphemeralRange& referen ceRange, FindOptions); 218 Range* findRangeOfString(const String& target, const EphemeralRange& referen ceRange, FindOptions);
213 Range* findRangeOfString(const String& target, const EphemeralRangeInFlatTre e& referenceRange, FindOptions); 219 Range* findRangeOfString(const String& target, const EphemeralRangeInFlatTre e& referenceRange, FindOptions);
214 220
215 const VisibleSelection& mark() const; // Mark, to be used as emacs uses it. 221 const VisibleSelection& mark() const; // Mark, to be used as emacs uses it.
216 void setMark(const VisibleSelection&); 222 void setMark(const VisibleSelection&);
217 223
218 void computeAndSetTypingStyle(StylePropertySet*, InputEvent::InputType); 224 void computeAndSetTypingStyle(StylePropertySet*, InputEvent::InputType);
219 225
220 // |firstRectForRange| requires up-to-date layout. 226 // |firstRectForRange| requires up-to-date layout.
221 IntRect firstRectForRange(const EphemeralRange&) const; 227 IntRect firstRectForRange(const EphemeralRange&) const;
222 228
223 void respondToChangedSelection(const VisibleSelection& oldSelection, FrameSe lection::SetSelectionOptions); 229 void respondToChangedSelection(const VisibleSelection& oldSelection, FrameSe lection::SetSelectionOptions);
224 230
225 bool markedTextMatchesAreHighlighted() const; 231 bool markedTextMatchesAreHighlighted() const;
226 void setMarkedTextMatchesAreHighlighted(bool); 232 void setMarkedTextMatchesAreHighlighted(bool);
227 233
228 void replaceSelectionWithFragment(DocumentFragment*, bool selectReplacement, bool smartReplace, bool matchStyle); 234 void replaceSelectionWithFragment(DocumentFragment*, bool selectReplacement, bool smartReplace, bool matchStyle);
229 void replaceSelectionWithText(const String&, bool selectReplacement, bool sm artReplace); 235 void replaceSelectionWithText(const String&, bool selectReplacement, bool sm artReplace);
230 236
231 // TODO(xiaochengh): Replace |bool| parameters by |enum|. 237 // TODO(xiaochengh): Replace |bool| parameters by |enum|.
232 void replaceSelectionAfterDragging(DocumentFragment*, bool smartReplace, boo l plainText); 238 void replaceSelectionAfterDragging(DocumentFragment*, bool smartReplace, boo l plainText);
233 void moveSelectionAfterDragging(DocumentFragment*, const Position&, bool sma rtInsert, bool smartDelete); 239
240 // Return false if frame was destroyed by event handler, should stop executi ng remaining actions.
241 bool deleteSelectionAfterDraggingWithEvents(Element* dragSource, SmartDelete , const Position& referenceMovePosition);
242 bool replaceSelectionAfterDraggingWithEvents(Element* dropTarget, DragData*, DocumentFragment*, Range* dropCaretRange, SmartInsert, ChosePlainText);
234 243
235 EditorParagraphSeparator defaultParagraphSeparator() const { return m_defaul tParagraphSeparator; } 244 EditorParagraphSeparator defaultParagraphSeparator() const { return m_defaul tParagraphSeparator; }
236 void setDefaultParagraphSeparator(EditorParagraphSeparator separator) { m_de faultParagraphSeparator = separator; } 245 void setDefaultParagraphSeparator(EditorParagraphSeparator separator) { m_de faultParagraphSeparator = separator; }
237 246
238 static void tidyUpHTMLStructure(Document&); 247 static void tidyUpHTMLStructure(Document&);
239 248
240 class RevealSelectionScope { 249 class RevealSelectionScope {
241 WTF_MAKE_NONCOPYABLE(RevealSelectionScope); 250 WTF_MAKE_NONCOPYABLE(RevealSelectionScope);
242 DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); 251 DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
243 public: 252 public:
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 bool canSmartReplaceWithPasteboard(Pasteboard*); 291 bool canSmartReplaceWithPasteboard(Pasteboard*);
283 void pasteAsPlainTextWithPasteboard(Pasteboard*); 292 void pasteAsPlainTextWithPasteboard(Pasteboard*);
284 void pasteWithPasteboard(Pasteboard*); 293 void pasteWithPasteboard(Pasteboard*);
285 void writeSelectionToPasteboard(); 294 void writeSelectionToPasteboard();
286 bool dispatchCPPEvent(const AtomicString&, DataTransferAccessPolicy, PasteMo de = AllMimeTypes); 295 bool dispatchCPPEvent(const AtomicString&, DataTransferAccessPolicy, PasteMo de = AllMimeTypes);
287 296
288 void revealSelectionAfterEditingOperation(const ScrollAlignment& = ScrollAli gnment::alignCenterIfNeeded, RevealExtentOption = DoNotRevealExtent); 297 void revealSelectionAfterEditingOperation(const ScrollAlignment& = ScrollAli gnment::alignCenterIfNeeded, RevealExtentOption = DoNotRevealExtent);
289 void changeSelectionAfterCommand(const VisibleSelection& newSelection, Frame Selection::SetSelectionOptions); 298 void changeSelectionAfterCommand(const VisibleSelection& newSelection, Frame Selection::SetSelectionOptions);
290 void notifyComponentsOnChangedSelection(); 299 void notifyComponentsOnChangedSelection();
291 300
292 Element* findEventTargetFromSelection() const;
293
294 SpellChecker& spellChecker() const; 301 SpellChecker& spellChecker() const;
295 302
296 bool handleEditingKeyboardEvent(KeyboardEvent*); 303 bool handleEditingKeyboardEvent(KeyboardEvent*);
297 }; 304 };
298 305
299 inline void Editor::setStartNewKillRingSequence(bool flag) 306 inline void Editor::setStartNewKillRingSequence(bool flag)
300 { 307 {
301 m_shouldStartNewKillRingSequence = flag; 308 m_shouldStartNewKillRingSequence = flag;
302 } 309 }
303 310
304 inline const VisibleSelection& Editor::mark() const 311 inline const VisibleSelection& Editor::mark() const
305 { 312 {
306 return m_mark; 313 return m_mark;
307 } 314 }
308 315
309 inline void Editor::setMark(const VisibleSelection& selection) 316 inline void Editor::setMark(const VisibleSelection& selection)
310 { 317 {
311 m_mark = selection; 318 m_mark = selection;
312 } 319 }
313 320
314 inline bool Editor::markedTextMatchesAreHighlighted() const 321 inline bool Editor::markedTextMatchesAreHighlighted() const
315 { 322 {
316 return m_areMarkedTextMatchesHighlighted; 323 return m_areMarkedTextMatchesHighlighted;
317 } 324 }
318 325
319 326
320 } // namespace blink 327 } // namespace blink
321 328
322 #endif // Editor_h 329 #endif // Editor_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698