Commit 69674f1d authored by Yoshifumi Inoue's avatar Yoshifumi Inoue Committed by Commit Bot

Utilize DeleteSelectionOptions in CompositeEditCommand::DeleteSelection()

This patch changes |CompositeEditCommand::DeleteSelection()| to utilize
|DeleteSelectionOptions| to avoid |bool| parameters for improving code health.

Change-Id: I9bdf8f37dbd0b272fc4eb9e43101ad8b5e9e61bc
Reviewed-on: https://chromium-review.googlesource.com/923615
Commit-Queue: Yoshifumi Inoue <yosin@chromium.org>
Reviewed-by: default avatarYoichi Osato <yoichio@chromium.org>
Cr-Commit-Position: refs/heads/master@{#537729}
parent 50885f55
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include "core/editing/VisiblePosition.h" #include "core/editing/VisiblePosition.h"
#include "core/editing/VisibleSelection.h" #include "core/editing/VisibleSelection.h"
#include "core/editing/VisibleUnits.h" #include "core/editing/VisibleUnits.h"
#include "core/editing/commands/DeleteSelectionOptions.h"
#include "core/editing/commands/EditingCommandsUtilities.h" #include "core/editing/commands/EditingCommandsUtilities.h"
#include "core/html/HTMLBRElement.h" #include "core/html/HTMLBRElement.h"
#include "core/html/HTMLElement.h" #include "core/html/HTMLElement.h"
...@@ -96,7 +97,10 @@ void BreakBlockquoteCommand::DoApply(EditingState* editing_state) { ...@@ -96,7 +97,10 @@ void BreakBlockquoteCommand::DoApply(EditingState* editing_state) {
// Delete the current selection. // Delete the current selection.
if (EndingSelection().IsRange()) { if (EndingSelection().IsRange()) {
if (!DeleteSelection(editing_state, false, false)) if (!DeleteSelection(editing_state, DeleteSelectionOptions::Builder()
.SetExpandForSpecialElements(true)
.SetSanitizeMarkup(true)
.Build()))
return; return;
} }
......
...@@ -612,24 +612,14 @@ void CompositeEditCommand::InsertNodeAtTabSpanPosition( ...@@ -612,24 +612,14 @@ void CompositeEditCommand::InsertNodeAtTabSpanPosition(
InsertNodeAt(node, PositionOutsideTabSpan(pos), editing_state); InsertNodeAt(node, PositionOutsideTabSpan(pos), editing_state);
} }
bool CompositeEditCommand::DeleteSelection(EditingState* editing_state, bool CompositeEditCommand::DeleteSelection(
bool smart_delete, EditingState* editing_state,
bool merge_blocks_after_delete, const DeleteSelectionOptions& options) {
bool expand_for_special_elements,
bool sanitize_markup) {
if (!EndingSelection().IsRange()) if (!EndingSelection().IsRange())
return true; return true;
ApplyCommandToComposite( ApplyCommandToComposite(
DeleteSelectionCommand::Create( DeleteSelectionCommand::Create(GetDocument(), options), editing_state);
GetDocument(),
DeleteSelectionOptions::Builder()
.SetSmartDelete(smart_delete)
.SetMergeBlocksAfterDelete(merge_blocks_after_delete)
.SetExpandForSpecialElements(expand_for_special_elements)
.SetSanitizeMarkup(sanitize_markup)
.Build()),
editing_state);
if (editing_state->IsAborted()) if (editing_state->IsAborted())
return false; return false;
...@@ -1332,7 +1322,9 @@ void CompositeEditCommand::MoveParagraphWithClones( ...@@ -1332,7 +1322,9 @@ void CompositeEditCommand::MoveParagraphWithClones(
SetEndingSelection(SelectionForUndoStep::From( SetEndingSelection(SelectionForUndoStep::From(
SelectionInDOMTree::Builder().Collapse(start).Extend(end).Build())); SelectionInDOMTree::Builder().Collapse(start).Extend(end).Build()));
if (!DeleteSelection(editing_state, false, false, false)) if (!DeleteSelection(
editing_state,
DeleteSelectionOptions::Builder().SetSanitizeMarkup(true).Build()))
return; return;
// There are bugs in deletion when it removes a fully selected table/list. // There are bugs in deletion when it removes a fully selected table/list.
...@@ -1512,7 +1504,9 @@ void CompositeEditCommand::MoveParagraphs( ...@@ -1512,7 +1504,9 @@ void CompositeEditCommand::MoveParagraphs(
SelectionInDOMTree::Builder().Collapse(start).Extend(end).Build()); SelectionInDOMTree::Builder().Collapse(start).Extend(end).Build());
SetEndingSelection( SetEndingSelection(
SelectionForUndoStep::From(selection_to_delete.AsSelection())); SelectionForUndoStep::From(selection_to_delete.AsSelection()));
if (!DeleteSelection(editing_state, false, false, false)) if (!DeleteSelection(
editing_state,
DeleteSelectionOptions::Builder().SetSanitizeMarkup(true).Build()))
return; return;
DCHECK(destination.DeepEquivalent().IsConnected()) << destination; DCHECK(destination.DeepEquivalent().IsConnected()) << destination;
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
namespace blink { namespace blink {
class DeleteSelectionOptions;
class EditingStyle; class EditingStyle;
class Element; class Element;
class HTMLBRElement; class HTMLBRElement;
...@@ -98,11 +99,7 @@ class CORE_EXPORT CompositeEditCommand : public EditCommand { ...@@ -98,11 +99,7 @@ class CORE_EXPORT CompositeEditCommand : public EditCommand {
void ApplyStyledElement(Element*, EditingState*); void ApplyStyledElement(Element*, EditingState*);
void RemoveStyledElement(Element*, EditingState*); void RemoveStyledElement(Element*, EditingState*);
// Returns |false| if the EditingState has been aborted. // Returns |false| if the EditingState has been aborted.
bool DeleteSelection(EditingState*, bool DeleteSelection(EditingState*, const DeleteSelectionOptions&);
bool smart_delete = false,
bool merge_blocks_after_delete = true,
bool expand_for_special_elements = true,
bool sanitize_markup = true);
virtual void DeleteTextFromNode(Text*, unsigned offset, unsigned count); virtual void DeleteTextFromNode(Text*, unsigned offset, unsigned count);
bool IsRemovableBlock(const Node*); bool IsRemovableBlock(const Node*);
void InsertNodeAfter(Node*, Node* ref_child, EditingState*); void InsertNodeAfter(Node*, Node* ref_child, EditingState*);
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
#include "core/editing/SelectionTemplate.h" #include "core/editing/SelectionTemplate.h"
#include "core/editing/VisiblePosition.h" #include "core/editing/VisiblePosition.h"
#include "core/editing/VisibleUnits.h" #include "core/editing/VisibleUnits.h"
#include "core/editing/commands/DeleteSelectionOptions.h"
#include "core/editing/commands/EditingCommandsUtilities.h" #include "core/editing/commands/EditingCommandsUtilities.h"
#include "core/frame/LocalFrame.h" #include "core/frame/LocalFrame.h"
#include "core/html/HTMLBRElement.h" #include "core/html/HTMLBRElement.h"
...@@ -65,7 +66,7 @@ bool InsertLineBreakCommand::ShouldUseBreakElement( ...@@ -65,7 +66,7 @@ bool InsertLineBreakCommand::ShouldUseBreakElement(
} }
void InsertLineBreakCommand::DoApply(EditingState* editing_state) { void InsertLineBreakCommand::DoApply(EditingState* editing_state) {
if (!DeleteSelection(editing_state)) if (!DeleteSelection(editing_state, DeleteSelectionOptions::NormalDelete()))
return; return;
GetDocument().UpdateStyleAndLayoutIgnorePendingStylesheets(); GetDocument().UpdateStyleAndLayoutIgnorePendingStylesheets();
......
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
#include "core/editing/VisiblePosition.h" #include "core/editing/VisiblePosition.h"
#include "core/editing/VisibleSelection.h" #include "core/editing/VisibleSelection.h"
#include "core/editing/VisibleUnits.h" #include "core/editing/VisibleUnits.h"
#include "core/editing/commands/DeleteSelectionOptions.h"
#include "core/editing/commands/EditingCommandsUtilities.h" #include "core/editing/commands/EditingCommandsUtilities.h"
#include "core/editing/commands/InsertLineBreakCommand.h" #include "core/editing/commands/InsertLineBreakCommand.h"
#include "core/html/HTMLBRElement.h" #include "core/html/HTMLBRElement.h"
...@@ -195,7 +196,7 @@ void InsertParagraphSeparatorCommand::DoApply(EditingState* editing_state) { ...@@ -195,7 +196,7 @@ void InsertParagraphSeparatorCommand::DoApply(EditingState* editing_state) {
if (EndingSelection().IsRange()) { if (EndingSelection().IsRange()) {
GetDocument().UpdateStyleAndLayoutIgnorePendingStylesheets(); GetDocument().UpdateStyleAndLayoutIgnorePendingStylesheets();
CalculateStyleBeforeInsertion(insertion_position); CalculateStyleBeforeInsertion(insertion_position);
if (!DeleteSelection(editing_state, false, true)) if (!DeleteSelection(editing_state, DeleteSelectionOptions::NormalDelete()))
return; return;
const VisibleSelection& visble_selection_after_delete = const VisibleSelection& visble_selection_after_delete =
EndingVisibleSelection(); EndingVisibleSelection();
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
#include "core/editing/SelectionTemplate.h" #include "core/editing/SelectionTemplate.h"
#include "core/editing/VisiblePosition.h" #include "core/editing/VisiblePosition.h"
#include "core/editing/VisibleUnits.h" #include "core/editing/VisibleUnits.h"
#include "core/editing/commands/DeleteSelectionOptions.h"
#include "core/editing/commands/EditingCommandsUtilities.h" #include "core/editing/commands/EditingCommandsUtilities.h"
#include "core/frame/LocalFrame.h" #include "core/frame/LocalFrame.h"
#include "core/html/HTMLSpanElement.h" #include "core/html/HTMLSpanElement.h"
...@@ -162,7 +163,9 @@ void InsertTextCommand::DoApply(EditingState* editing_state) { ...@@ -162,7 +163,9 @@ void InsertTextCommand::DoApply(EditingState* editing_state) {
GetDocument().UpdateStyleAndLayoutIgnorePendingStylesheets(); GetDocument().UpdateStyleAndLayoutIgnorePendingStylesheets();
bool end_of_selection_was_at_start_of_block = bool end_of_selection_was_at_start_of_block =
IsStartOfBlock(EndingVisibleSelection().VisibleEnd()); IsStartOfBlock(EndingVisibleSelection().VisibleEnd());
if (!DeleteSelection(editing_state, false, true, false, false)) if (!DeleteSelection(editing_state, DeleteSelectionOptions::Builder()
.SetMergeBlocksAfterDelete(true)
.Build()))
return; return;
// deleteSelection eventually makes a new endingSelection out of a Position. // deleteSelection eventually makes a new endingSelection out of a Position.
// If that Position doesn't have a layoutObject (e.g. it is on a <frameset> // If that Position doesn't have a layoutObject (e.g. it is on a <frameset>
......
...@@ -44,6 +44,7 @@ ...@@ -44,6 +44,7 @@
#include "core/editing/VisibleUnits.h" #include "core/editing/VisibleUnits.h"
#include "core/editing/commands/ApplyStyleCommand.h" #include "core/editing/commands/ApplyStyleCommand.h"
#include "core/editing/commands/BreakBlockquoteCommand.h" #include "core/editing/commands/BreakBlockquoteCommand.h"
#include "core/editing/commands/DeleteSelectionOptions.h"
#include "core/editing/commands/EditingCommandsUtilities.h" #include "core/editing/commands/EditingCommandsUtilities.h"
#include "core/editing/commands/SimplifyMarkupCommand.h" #include "core/editing/commands/SimplifyMarkupCommand.h"
#include "core/editing/commands/SmartReplace.h" #include "core/editing/commands/SmartReplace.h"
...@@ -1070,8 +1071,11 @@ void ReplaceSelectionCommand::InsertParagraphSeparatorIfNeeds( ...@@ -1070,8 +1071,11 @@ void ReplaceSelectionCommand::InsertParagraphSeparatorIfNeeds(
IsStartOfBlock(visible_start); IsStartOfBlock(visible_start);
// FIXME: We should only expand to include fully selected special elements // FIXME: We should only expand to include fully selected special elements
// if we are copying a selection and pasting it on top of itself. // if we are copying a selection and pasting it on top of itself.
if (!DeleteSelection(editing_state, false, merge_blocks_after_delete, if (!DeleteSelection(editing_state, DeleteSelectionOptions::Builder()
false)) .SetMergeBlocksAfterDelete(
merge_blocks_after_delete)
.SetSanitizeMarkup(true)
.Build()))
return; return;
if (fragment.HasInterchangeNewlineAtStart()) { if (fragment.HasInterchangeNewlineAtStart()) {
GetDocument().UpdateStyleAndLayoutIgnorePendingStylesheets(); GetDocument().UpdateStyleAndLayoutIgnorePendingStylesheets();
......
...@@ -1074,7 +1074,9 @@ void TypingCommand::ForwardDeleteKeyPressedInternal( ...@@ -1074,7 +1074,9 @@ void TypingCommand::ForwardDeleteKeyPressedInternal(
void TypingCommand::DeleteSelection(bool smart_delete, void TypingCommand::DeleteSelection(bool smart_delete,
EditingState* editing_state) { EditingState* editing_state) {
if (!CompositeEditCommand::DeleteSelection(editing_state, smart_delete)) if (!CompositeEditCommand::DeleteSelection(
editing_state, smart_delete ? DeleteSelectionOptions::SmartDelete()
: DeleteSelectionOptions::NormalDelete()))
return; return;
TypingAddedToOpenCommand(kDeleteSelection); TypingAddedToOpenCommand(kDeleteSelection);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment