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 @@
#include "core/editing/VisiblePosition.h"
#include "core/editing/VisibleSelection.h"
#include "core/editing/VisibleUnits.h"
#include "core/editing/commands/DeleteSelectionOptions.h"
#include "core/editing/commands/EditingCommandsUtilities.h"
#include "core/html/HTMLBRElement.h"
#include "core/html/HTMLElement.h"
......@@ -96,7 +97,10 @@ void BreakBlockquoteCommand::DoApply(EditingState* editing_state) {
// Delete the current selection.
if (EndingSelection().IsRange()) {
if (!DeleteSelection(editing_state, false, false))
if (!DeleteSelection(editing_state, DeleteSelectionOptions::Builder()
.SetExpandForSpecialElements(true)
.SetSanitizeMarkup(true)
.Build()))
return;
}
......
......@@ -612,24 +612,14 @@ void CompositeEditCommand::InsertNodeAtTabSpanPosition(
InsertNodeAt(node, PositionOutsideTabSpan(pos), editing_state);
}
bool CompositeEditCommand::DeleteSelection(EditingState* editing_state,
bool smart_delete,
bool merge_blocks_after_delete,
bool expand_for_special_elements,
bool sanitize_markup) {
bool CompositeEditCommand::DeleteSelection(
EditingState* editing_state,
const DeleteSelectionOptions& options) {
if (!EndingSelection().IsRange())
return true;
ApplyCommandToComposite(
DeleteSelectionCommand::Create(
GetDocument(),
DeleteSelectionOptions::Builder()
.SetSmartDelete(smart_delete)
.SetMergeBlocksAfterDelete(merge_blocks_after_delete)
.SetExpandForSpecialElements(expand_for_special_elements)
.SetSanitizeMarkup(sanitize_markup)
.Build()),
editing_state);
DeleteSelectionCommand::Create(GetDocument(), options), editing_state);
if (editing_state->IsAborted())
return false;
......@@ -1332,7 +1322,9 @@ void CompositeEditCommand::MoveParagraphWithClones(
SetEndingSelection(SelectionForUndoStep::From(
SelectionInDOMTree::Builder().Collapse(start).Extend(end).Build()));
if (!DeleteSelection(editing_state, false, false, false))
if (!DeleteSelection(
editing_state,
DeleteSelectionOptions::Builder().SetSanitizeMarkup(true).Build()))
return;
// There are bugs in deletion when it removes a fully selected table/list.
......@@ -1512,7 +1504,9 @@ void CompositeEditCommand::MoveParagraphs(
SelectionInDOMTree::Builder().Collapse(start).Extend(end).Build());
SetEndingSelection(
SelectionForUndoStep::From(selection_to_delete.AsSelection()));
if (!DeleteSelection(editing_state, false, false, false))
if (!DeleteSelection(
editing_state,
DeleteSelectionOptions::Builder().SetSanitizeMarkup(true).Build()))
return;
DCHECK(destination.DeepEquivalent().IsConnected()) << destination;
......
......@@ -36,6 +36,7 @@
namespace blink {
class DeleteSelectionOptions;
class EditingStyle;
class Element;
class HTMLBRElement;
......@@ -98,11 +99,7 @@ class CORE_EXPORT CompositeEditCommand : public EditCommand {
void ApplyStyledElement(Element*, EditingState*);
void RemoveStyledElement(Element*, EditingState*);
// Returns |false| if the EditingState has been aborted.
bool DeleteSelection(EditingState*,
bool smart_delete = false,
bool merge_blocks_after_delete = true,
bool expand_for_special_elements = true,
bool sanitize_markup = true);
bool DeleteSelection(EditingState*, const DeleteSelectionOptions&);
virtual void DeleteTextFromNode(Text*, unsigned offset, unsigned count);
bool IsRemovableBlock(const Node*);
void InsertNodeAfter(Node*, Node* ref_child, EditingState*);
......
......@@ -33,6 +33,7 @@
#include "core/editing/SelectionTemplate.h"
#include "core/editing/VisiblePosition.h"
#include "core/editing/VisibleUnits.h"
#include "core/editing/commands/DeleteSelectionOptions.h"
#include "core/editing/commands/EditingCommandsUtilities.h"
#include "core/frame/LocalFrame.h"
#include "core/html/HTMLBRElement.h"
......@@ -65,7 +66,7 @@ bool InsertLineBreakCommand::ShouldUseBreakElement(
}
void InsertLineBreakCommand::DoApply(EditingState* editing_state) {
if (!DeleteSelection(editing_state))
if (!DeleteSelection(editing_state, DeleteSelectionOptions::NormalDelete()))
return;
GetDocument().UpdateStyleAndLayoutIgnorePendingStylesheets();
......
......@@ -34,6 +34,7 @@
#include "core/editing/VisiblePosition.h"
#include "core/editing/VisibleSelection.h"
#include "core/editing/VisibleUnits.h"
#include "core/editing/commands/DeleteSelectionOptions.h"
#include "core/editing/commands/EditingCommandsUtilities.h"
#include "core/editing/commands/InsertLineBreakCommand.h"
#include "core/html/HTMLBRElement.h"
......@@ -195,7 +196,7 @@ void InsertParagraphSeparatorCommand::DoApply(EditingState* editing_state) {
if (EndingSelection().IsRange()) {
GetDocument().UpdateStyleAndLayoutIgnorePendingStylesheets();
CalculateStyleBeforeInsertion(insertion_position);
if (!DeleteSelection(editing_state, false, true))
if (!DeleteSelection(editing_state, DeleteSelectionOptions::NormalDelete()))
return;
const VisibleSelection& visble_selection_after_delete =
EndingVisibleSelection();
......
......@@ -33,6 +33,7 @@
#include "core/editing/SelectionTemplate.h"
#include "core/editing/VisiblePosition.h"
#include "core/editing/VisibleUnits.h"
#include "core/editing/commands/DeleteSelectionOptions.h"
#include "core/editing/commands/EditingCommandsUtilities.h"
#include "core/frame/LocalFrame.h"
#include "core/html/HTMLSpanElement.h"
......@@ -162,7 +163,9 @@ void InsertTextCommand::DoApply(EditingState* editing_state) {
GetDocument().UpdateStyleAndLayoutIgnorePendingStylesheets();
bool end_of_selection_was_at_start_of_block =
IsStartOfBlock(EndingVisibleSelection().VisibleEnd());
if (!DeleteSelection(editing_state, false, true, false, false))
if (!DeleteSelection(editing_state, DeleteSelectionOptions::Builder()
.SetMergeBlocksAfterDelete(true)
.Build()))
return;
// 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>
......
......@@ -44,6 +44,7 @@
#include "core/editing/VisibleUnits.h"
#include "core/editing/commands/ApplyStyleCommand.h"
#include "core/editing/commands/BreakBlockquoteCommand.h"
#include "core/editing/commands/DeleteSelectionOptions.h"
#include "core/editing/commands/EditingCommandsUtilities.h"
#include "core/editing/commands/SimplifyMarkupCommand.h"
#include "core/editing/commands/SmartReplace.h"
......@@ -1070,8 +1071,11 @@ void ReplaceSelectionCommand::InsertParagraphSeparatorIfNeeds(
IsStartOfBlock(visible_start);
// 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 (!DeleteSelection(editing_state, false, merge_blocks_after_delete,
false))
if (!DeleteSelection(editing_state, DeleteSelectionOptions::Builder()
.SetMergeBlocksAfterDelete(
merge_blocks_after_delete)
.SetSanitizeMarkup(true)
.Build()))
return;
if (fragment.HasInterchangeNewlineAtStart()) {
GetDocument().UpdateStyleAndLayoutIgnorePendingStylesheets();
......
......@@ -1074,7 +1074,9 @@ void TypingCommand::ForwardDeleteKeyPressedInternal(
void TypingCommand::DeleteSelection(bool smart_delete,
EditingState* editing_state) {
if (!CompositeEditCommand::DeleteSelection(editing_state, smart_delete))
if (!CompositeEditCommand::DeleteSelection(
editing_state, smart_delete ? DeleteSelectionOptions::SmartDelete()
: DeleteSelectionOptions::NormalDelete()))
return;
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