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

Side by Side Diff: Source/core/editing/EditorCommand.cpp

Issue 769053004: Make the execCommand() userInterface argument explicitly do nothing (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/editing/Editor.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
4 * Copyright (C) 2009 Igalia S.L. 4 * Copyright (C) 2009 Igalia S.L.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 } 103 }
104 104
105 static bool applyCommandToFrame(LocalFrame& frame, EditorCommandSource source, E ditAction action, StylePropertySet* style) 105 static bool applyCommandToFrame(LocalFrame& frame, EditorCommandSource source, E ditAction action, StylePropertySet* style)
106 { 106 {
107 // FIXME: We don't call shouldApplyStyle when the source is DOM; is there a good reason for that? 107 // FIXME: We don't call shouldApplyStyle when the source is DOM; is there a good reason for that?
108 switch (source) { 108 switch (source) {
109 case CommandFromMenuOrKeyBinding: 109 case CommandFromMenuOrKeyBinding:
110 frame.editor().applyStyleToSelection(style, action); 110 frame.editor().applyStyleToSelection(style, action);
111 return true; 111 return true;
112 case CommandFromDOM: 112 case CommandFromDOM:
113 case CommandFromDOMWithUserInterface:
114 frame.editor().applyStyle(style); 113 frame.editor().applyStyle(style);
115 return true; 114 return true;
116 } 115 }
117 ASSERT_NOT_REACHED(); 116 ASSERT_NOT_REACHED();
118 return false; 117 return false;
119 } 118 }
120 119
121 static bool executeApplyStyle(LocalFrame& frame, EditorCommandSource source, Edi tAction action, CSSPropertyID propertyID, const String& propertyValue) 120 static bool executeApplyStyle(LocalFrame& frame, EditorCommandSource source, Edi tAction action, CSSPropertyID propertyID, const String& propertyValue)
122 { 121 {
123 RefPtrWillBeRawPtr<MutableStylePropertySet> style = MutableStylePropertySet: :create(); 122 RefPtrWillBeRawPtr<MutableStylePropertySet> style = MutableStylePropertySet: :create();
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 static bool executeApplyParagraphStyle(LocalFrame& frame, EditorCommandSource so urce, EditAction action, CSSPropertyID propertyID, const String& propertyValue) 177 static bool executeApplyParagraphStyle(LocalFrame& frame, EditorCommandSource so urce, EditAction action, CSSPropertyID propertyID, const String& propertyValue)
179 { 178 {
180 RefPtrWillBeRawPtr<MutableStylePropertySet> style = MutableStylePropertySet: :create(); 179 RefPtrWillBeRawPtr<MutableStylePropertySet> style = MutableStylePropertySet: :create();
181 style->setProperty(propertyID, propertyValue); 180 style->setProperty(propertyID, propertyValue);
182 // FIXME: We don't call shouldApplyStyle when the source is DOM; is there a good reason for that? 181 // FIXME: We don't call shouldApplyStyle when the source is DOM; is there a good reason for that?
183 switch (source) { 182 switch (source) {
184 case CommandFromMenuOrKeyBinding: 183 case CommandFromMenuOrKeyBinding:
185 frame.editor().applyParagraphStyleToSelection(style.get(), action); 184 frame.editor().applyParagraphStyleToSelection(style.get(), action);
186 return true; 185 return true;
187 case CommandFromDOM: 186 case CommandFromDOM:
188 case CommandFromDOMWithUserInterface:
189 frame.editor().applyParagraphStyle(style.get()); 187 frame.editor().applyParagraphStyle(style.get());
190 return true; 188 return true;
191 } 189 }
192 ASSERT_NOT_REACHED(); 190 ASSERT_NOT_REACHED();
193 return false; 191 return false;
194 } 192 }
195 193
196 static bool executeInsertFragment(LocalFrame& frame, PassRefPtrWillBeRawPtr<Docu mentFragment> fragment) 194 static bool executeInsertFragment(LocalFrame& frame, PassRefPtrWillBeRawPtr<Docu mentFragment> fragment)
197 { 195 {
198 ASSERT(frame.document()); 196 ASSERT(frame.document());
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 } 295 }
298 296
299 static bool executeCopy(LocalFrame& frame, Event*, EditorCommandSource, const St ring&) 297 static bool executeCopy(LocalFrame& frame, Event*, EditorCommandSource, const St ring&)
300 { 298 {
301 frame.editor().copy(); 299 frame.editor().copy();
302 return true; 300 return true;
303 } 301 }
304 302
305 static bool executeCreateLink(LocalFrame& frame, Event*, EditorCommandSource, co nst String& value) 303 static bool executeCreateLink(LocalFrame& frame, Event*, EditorCommandSource, co nst String& value)
306 { 304 {
307 // FIXME: If userInterface is true, we should display a dialog box to let th e user enter a URL.
308 if (value.isEmpty()) 305 if (value.isEmpty())
309 return false; 306 return false;
310 ASSERT(frame.document()); 307 ASSERT(frame.document());
311 CreateLinkCommand::create(*frame.document(), value)->apply(); 308 CreateLinkCommand::create(*frame.document(), value)->apply();
312 return true; 309 return true;
313 } 310 }
314 311
315 static bool executeCut(LocalFrame& frame, Event*, EditorCommandSource, const Str ing&) 312 static bool executeCut(LocalFrame& frame, Event*, EditorCommandSource, const Str ing&)
316 { 313 {
317 frame.editor().cut(); 314 frame.editor().cut();
(...skipping 12 matching lines...) Expand all
330 327
331 static bool executeDelete(LocalFrame& frame, Event*, EditorCommandSource source, const String&) 328 static bool executeDelete(LocalFrame& frame, Event*, EditorCommandSource source, const String&)
332 { 329 {
333 switch (source) { 330 switch (source) {
334 case CommandFromMenuOrKeyBinding: { 331 case CommandFromMenuOrKeyBinding: {
335 // Doesn't modify the text if the current selection isn't a range. 332 // Doesn't modify the text if the current selection isn't a range.
336 frame.editor().performDelete(); 333 frame.editor().performDelete();
337 return true; 334 return true;
338 } 335 }
339 case CommandFromDOM: 336 case CommandFromDOM:
340 case CommandFromDOMWithUserInterface:
341 // If the current selection is a caret, delete the preceding character. IE performs forwardDelete, but we currently side with Firefox. 337 // If the current selection is a caret, delete the preceding character. IE performs forwardDelete, but we currently side with Firefox.
342 // Doesn't scroll to make the selection visible, or modify the kill ring (this time, siding with IE, not Firefox). 338 // Doesn't scroll to make the selection visible, or modify the kill ring (this time, siding with IE, not Firefox).
343 ASSERT(frame.document()); 339 ASSERT(frame.document());
344 TypingCommand::deleteKeyPressed(*frame.document(), frame.selection().gra nularity() == WordGranularity ? TypingCommand::SmartDelete : 0); 340 TypingCommand::deleteKeyPressed(*frame.document(), frame.selection().gra nularity() == WordGranularity ? TypingCommand::SmartDelete : 0);
345 return true; 341 return true;
346 } 342 }
347 ASSERT_NOT_REACHED(); 343 ASSERT_NOT_REACHED();
348 return false; 344 return false;
349 } 345 }
350 346
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 return command->didApply(); 462 return command->didApply();
467 } 463 }
468 464
469 static bool executeForwardDelete(LocalFrame& frame, Event*, EditorCommandSource source, const String&) 465 static bool executeForwardDelete(LocalFrame& frame, Event*, EditorCommandSource source, const String&)
470 { 466 {
471 switch (source) { 467 switch (source) {
472 case CommandFromMenuOrKeyBinding: 468 case CommandFromMenuOrKeyBinding:
473 frame.editor().deleteWithDirection(DirectionForward, CharacterGranularit y, false, true); 469 frame.editor().deleteWithDirection(DirectionForward, CharacterGranularit y, false, true);
474 return true; 470 return true;
475 case CommandFromDOM: 471 case CommandFromDOM:
476 case CommandFromDOMWithUserInterface:
477 // Doesn't scroll to make the selection visible, or modify the kill ring . 472 // Doesn't scroll to make the selection visible, or modify the kill ring .
478 // ForwardDelete is not implemented in IE or Firefox, so this behavior i s only needed for 473 // ForwardDelete is not implemented in IE or Firefox, so this behavior i s only needed for
479 // backward compatibility with ourselves, and for consistency with Delet e. 474 // backward compatibility with ourselves, and for consistency with Delet e.
480 ASSERT(frame.document()); 475 ASSERT(frame.document());
481 TypingCommand::forwardDeleteKeyPressed(*frame.document()); 476 TypingCommand::forwardDeleteKeyPressed(*frame.document());
482 return true; 477 return true;
483 } 478 }
484 ASSERT_NOT_REACHED(); 479 ASSERT_NOT_REACHED();
485 return false; 480 return false;
486 } 481 }
(...skipping 26 matching lines...) Expand all
513 } 508 }
514 509
515 static bool executeInsertHTML(LocalFrame& frame, Event*, EditorCommandSource, co nst String& value) 510 static bool executeInsertHTML(LocalFrame& frame, Event*, EditorCommandSource, co nst String& value)
516 { 511 {
517 ASSERT(frame.document()); 512 ASSERT(frame.document());
518 return executeInsertFragment(frame, createFragmentFromMarkup(*frame.document (), value, "")); 513 return executeInsertFragment(frame, createFragmentFromMarkup(*frame.document (), value, ""));
519 } 514 }
520 515
521 static bool executeInsertImage(LocalFrame& frame, Event*, EditorCommandSource, c onst String& value) 516 static bool executeInsertImage(LocalFrame& frame, Event*, EditorCommandSource, c onst String& value)
522 { 517 {
523 // FIXME: If userInterface is true, we should display a dialog box and let t he user choose a local image.
524 ASSERT(frame.document()); 518 ASSERT(frame.document());
525 RefPtrWillBeRawPtr<HTMLImageElement> image = HTMLImageElement::create(*frame .document()); 519 RefPtrWillBeRawPtr<HTMLImageElement> image = HTMLImageElement::create(*frame .document());
526 image->setSrc(value); 520 image->setSrc(value);
527 return executeInsertElement(frame, image.release()); 521 return executeInsertElement(frame, image.release());
528 } 522 }
529 523
530 static bool executeInsertLineBreak(LocalFrame& frame, Event* event, EditorComman dSource source, const String&) 524 static bool executeInsertLineBreak(LocalFrame& frame, Event* event, EditorComman dSource source, const String&)
531 { 525 {
532 switch (source) { 526 switch (source) {
533 case CommandFromMenuOrKeyBinding: 527 case CommandFromMenuOrKeyBinding:
534 return targetFrame(frame, event)->eventHandler().handleTextInputEvent("\ n", event, TextEventInputLineBreak); 528 return targetFrame(frame, event)->eventHandler().handleTextInputEvent("\ n", event, TextEventInputLineBreak);
535 case CommandFromDOM: 529 case CommandFromDOM:
536 case CommandFromDOMWithUserInterface:
537 // Doesn't scroll to make the selection visible, or modify the kill ring . 530 // Doesn't scroll to make the selection visible, or modify the kill ring .
538 // InsertLineBreak is not implemented in IE or Firefox, so this behavior is only needed for 531 // InsertLineBreak is not implemented in IE or Firefox, so this behavior is only needed for
539 // backward compatibility with ourselves, and for consistency with other commands. 532 // backward compatibility with ourselves, and for consistency with other commands.
540 ASSERT(frame.document()); 533 ASSERT(frame.document());
541 TypingCommand::insertLineBreak(*frame.document(), 0); 534 TypingCommand::insertLineBreak(*frame.document(), 0);
542 return true; 535 return true;
543 } 536 }
544 ASSERT_NOT_REACHED(); 537 ASSERT_NOT_REACHED();
545 return false; 538 return false;
546 } 539 }
(...skipping 702 matching lines...) Expand 10 before | Expand all | Expand 10 after
1249 { 1242 {
1250 return frame.editor().selectionForCommand(event).rootEditableElement(); 1243 return frame.editor().selectionForCommand(event).rootEditableElement();
1251 } 1244 }
1252 1245
1253 static bool enabledDelete(LocalFrame& frame, Event* event, EditorCommandSource s ource) 1246 static bool enabledDelete(LocalFrame& frame, Event* event, EditorCommandSource s ource)
1254 { 1247 {
1255 switch (source) { 1248 switch (source) {
1256 case CommandFromMenuOrKeyBinding: 1249 case CommandFromMenuOrKeyBinding:
1257 return frame.editor().canDelete(); 1250 return frame.editor().canDelete();
1258 case CommandFromDOM: 1251 case CommandFromDOM:
1259 case CommandFromDOMWithUserInterface:
1260 // "Delete" from DOM is like delete/backspace keypress, affects selected range if non-empty, 1252 // "Delete" from DOM is like delete/backspace keypress, affects selected range if non-empty,
1261 // otherwise removes a character 1253 // otherwise removes a character
1262 return enabledInEditableText(frame, event, source); 1254 return enabledInEditableText(frame, event, source);
1263 } 1255 }
1264 ASSERT_NOT_REACHED(); 1256 ASSERT_NOT_REACHED();
1265 return false; 1257 return false;
1266 } 1258 }
1267 1259
1268 static bool enabledInEditableTextOrCaretBrowsing(LocalFrame& frame, Event* event , EditorCommandSource) 1260 static bool enabledInEditableTextOrCaretBrowsing(LocalFrame& frame, Event* event , EditorCommandSource)
1269 { 1261 {
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after
1753 } 1745 }
1754 1746
1755 bool Editor::Command::isSupported() const 1747 bool Editor::Command::isSupported() const
1756 { 1748 {
1757 if (!m_command) 1749 if (!m_command)
1758 return false; 1750 return false;
1759 switch (m_source) { 1751 switch (m_source) {
1760 case CommandFromMenuOrKeyBinding: 1752 case CommandFromMenuOrKeyBinding:
1761 return true; 1753 return true;
1762 case CommandFromDOM: 1754 case CommandFromDOM:
1763 case CommandFromDOMWithUserInterface:
1764 return m_command->isSupportedFromDOM(m_frame.get()); 1755 return m_command->isSupportedFromDOM(m_frame.get());
1765 } 1756 }
1766 ASSERT_NOT_REACHED(); 1757 ASSERT_NOT_REACHED();
1767 return false; 1758 return false;
1768 } 1759 }
1769 1760
1770 bool Editor::Command::isEnabled(Event* triggeringEvent) const 1761 bool Editor::Command::isEnabled(Event* triggeringEvent) const
1771 { 1762 {
1772 if (!isSupported() || !m_frame) 1763 if (!isSupported() || !m_frame)
1773 return false; 1764 return false;
(...skipping 20 matching lines...) Expand all
1794 { 1785 {
1795 return m_command && m_command->isTextInsertion; 1786 return m_command && m_command->isTextInsertion;
1796 } 1787 }
1797 1788
1798 int Editor::Command::idForHistogram() const 1789 int Editor::Command::idForHistogram() const
1799 { 1790 {
1800 return isSupported() ? m_command->idForUserMetrics : 0; 1791 return isSupported() ? m_command->idForUserMetrics : 0;
1801 } 1792 }
1802 1793
1803 } // namespace blink 1794 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/editing/Editor.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698