Bug 1549661 - part 1: Create EditorCommand::DoCommandParam(Command aCommand, TextEditor& aTextEditor) and make it just call DoCommand() r=m_kato

Most `EditorCommand` classes don't require additional params for executing
a command.  All of them just calls their `DoCommand()` or returns same result.
So, we can create new virtual method,
`EditorCommand::DoCommandParam(Command aCommand, TextEditor& aTextEditor)`,
which just delegates to `DoCommand()`.

This patch adds some undeclared commands but which are handled by
`EditorCommand` subclasses, and changes `CommandInt` type from `int8_t` to
`uint8_t` since the count of `Command` items becomes over 128.

Differential Revision: https://phabricator.services.mozilla.com/D30495

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Masayuki Nakano 2019-05-21 07:44:11 +00:00
parent a93a98c46e
commit ef7e3647d8
6 changed files with 319 additions and 197 deletions

View File

@ -84,6 +84,17 @@ EditorCommand::DoCommandParams(const char* aCommandName,
} else {
command = GetInternalCommand(aCommandName);
}
EditorCommandParamType paramType = EditorCommand::GetParamType(command);
if (paramType == EditorCommandParamType::None) {
nsresult rv =
DoCommandParam(command, MOZ_KnownLive(*editor->AsTextEditor()));
NS_WARNING_ASSERTION(
NS_SUCCEEDED(rv),
"Failed to do command from nsIControllerCommand::DoCommandParams()");
return rv;
}
nsresult rv = DoCommandParams(command, MOZ_KnownLive(params),
MOZ_KnownLive(*editor->AsTextEditor()));
NS_WARNING_ASSERTION(
@ -137,12 +148,6 @@ nsresult UndoCommand::DoCommand(Command aCommand,
return aTextEditor.Undo(1);
}
nsresult UndoCommand::DoCommandParams(Command aCommand,
nsCommandParams* aParams,
TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult UndoCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -169,12 +174,6 @@ nsresult RedoCommand::DoCommand(Command aCommand,
return aTextEditor.Redo(1);
}
nsresult RedoCommand::DoCommandParams(Command aCommand,
nsCommandParams* aParams,
TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult RedoCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -201,11 +200,6 @@ nsresult CutCommand::DoCommand(Command aCommand,
return aTextEditor.Cut();
}
nsresult CutCommand::DoCommandParams(Command aCommand, nsCommandParams* aParams,
TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult CutCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -241,12 +235,6 @@ nsresult CutOrDeleteCommand::DoCommand(Command aCommand,
return aTextEditor.Cut();
}
nsresult CutOrDeleteCommand::DoCommandParams(Command aCommand,
nsCommandParams* aParams,
TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult CutOrDeleteCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -273,12 +261,6 @@ nsresult CopyCommand::DoCommand(Command aCommand,
return aTextEditor.Copy();
}
nsresult CopyCommand::DoCommandParams(Command aCommand,
nsCommandParams* aParams,
TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult CopyCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -314,12 +296,6 @@ nsresult CopyOrDeleteCommand::DoCommand(Command aCommand,
return aTextEditor.Copy();
}
nsresult CopyOrDeleteCommand::DoCommandParams(Command aCommand,
nsCommandParams* aParams,
TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult CopyOrDeleteCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -347,12 +323,6 @@ nsresult PasteCommand::DoCommand(Command aCommand,
return aTextEditor.PasteAsAction(nsIClipboard::kGlobalClipboard, true);
}
nsresult PasteCommand::DoCommandParams(Command aCommand,
nsCommandParams* aParams,
TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult PasteCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -446,11 +416,6 @@ nsresult SwitchTextDirectionCommand::DoCommand(Command aCommand,
return aTextEditor.ToggleTextDirection();
}
nsresult SwitchTextDirectionCommand::DoCommandParams(
Command aCommand, nsCommandParams* aParams, TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult SwitchTextDirectionCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -519,12 +484,6 @@ nsresult DeleteCommand::DoCommand(Command aCommand,
return NS_OK;
}
nsresult DeleteCommand::DoCommandParams(Command aCommand,
nsCommandParams* aParams,
TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult DeleteCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -559,12 +518,6 @@ nsresult SelectAllCommand::DoCommand(Command aCommand,
return aTextEditor.SelectAll();
}
nsresult SelectAllCommand::DoCommandParams(Command aCommand,
nsCommandParams* aParams,
TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult SelectAllCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -696,12 +649,6 @@ nsresult SelectionMoveCommands::DoCommand(Command aCommand,
return NS_ERROR_FAILURE;
}
nsresult SelectionMoveCommands::DoCommandParams(Command aCommand,
nsCommandParams* aParams,
TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult SelectionMoveCommands::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -790,11 +737,6 @@ nsresult InsertParagraphCommand::DoCommand(Command aCommand,
return htmlEditor->InsertParagraphSeparatorAsAction();
}
nsresult InsertParagraphCommand::DoCommandParams(
Command aCommand, nsCommandParams* aParams, TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult InsertParagraphCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -825,11 +767,6 @@ nsresult InsertLineBreakCommand::DoCommand(Command aCommand,
return MOZ_KnownLive(htmlEditor)->InsertLineBreakAsAction();
}
nsresult InsertLineBreakCommand::DoCommandParams(
Command aCommand, nsCommandParams* aParams, TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult InsertLineBreakCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -862,12 +799,6 @@ nsresult PasteQuotationCommand::DoCommand(Command aCommand,
return NS_OK;
}
nsresult PasteQuotationCommand::DoCommandParams(Command aCommand,
nsCommandParams* aParams,
TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult PasteQuotationCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {

View File

@ -7,6 +7,7 @@
#define mozilla_EditorCommands_h
#include "mozilla/StaticPtr.h"
#include "mozilla/TypedEnumBits.h"
#include "nsIControllerCommand.h"
#include "nsISupportsImpl.h"
#include "nsRefPtrHashtable.h"
@ -22,6 +23,38 @@ namespace mozilla {
class HTMLEditor;
class TextEditor;
/**
* EditorCommandParamType tells you that EditorCommand subclasses refer
* which type in nsCommandParams (e.g., bool or nsString) or do not refer.
* If they refer some types, also set where is in nsCommandParams, e.g.,
* whether "state_attribute" or "state_data".
*/
enum class EditorCommandParamType : uint16_t {
// The command does not take params (even if specified, always ignored).
None = 0,
// The command refers nsCommandParams::GetBool() result.
Bool = 1 << 0,
// The command refers nsCommandParams::GetString() result.
// This may be specified with CString. In such case,
// nsCommandParams::GetCString() is preferred.
String = 1 << 1,
// The command refers nsCommandParams::GetCString() result.
CString = 1 << 2,
// The command refers nsCommandParams::GetISupports("transferable") result.
Transferable = 1 << 3,
// The command refres "state_attribute" of nsCommandParams when calling
// GetBool()/GetString()/GetCString(). This must not be set when the
// type is None or Transferable.
StateAttribute = 1 << 14,
// The command refers "state_data" of nsCommandParams when calling
// GetBool()/GetString()/GetCString(). This must not be set when the
// type is None or Transferable.
StateData = 1 << 15,
};
MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(EditorCommandParamType)
/**
* This is a base class for commands registered with the editor controller.
* Note that such commands are designed as singleton classes. So, MUST be
@ -32,6 +65,177 @@ class EditorCommand : public nsIControllerCommand {
public:
NS_DECL_ISUPPORTS
static EditorCommandParamType GetParamType(Command aCommand) {
// Keep same order of registration in EditorController.cpp and
// HTMLEditorController.cpp.
switch (aCommand) {
// UndoCommand
case Command::HistoryUndo:
return EditorCommandParamType::None;
// RedoCommand
case Command::HistoryRedo:
return EditorCommandParamType::None;
// CutCommand
case Command::Cut:
return EditorCommandParamType::None;
// CutOrDeleteCommand
case Command::CutOrDelete:
return EditorCommandParamType::None;
// CopyCommand
case Command::Copy:
return EditorCommandParamType::None;
// CopyOrDeleteCommand
case Command::CopyOrDelete:
return EditorCommandParamType::None;
// SelectAllCommand
case Command::SelectAll:
return EditorCommandParamType::None;
// PasteCommand
case Command::Paste:
return EditorCommandParamType::None;
// SwitchTextDirectionCommand
case Command::FormatSetBlockTextDirection:
return EditorCommandParamType::None;
// DeleteCommand
case Command::Delete:
case Command::DeleteCharBackward:
case Command::DeleteCharForward:
case Command::DeleteWordBackward:
case Command::DeleteWordForward:
case Command::DeleteToBeginningOfLine:
case Command::DeleteToEndOfLine:
return EditorCommandParamType::None;
// InsertParagraphCommand
case Command::InsertParagraph:
return EditorCommandParamType::None;
// InsertLineBreakCommand
case Command::InsertLineBreak:
return EditorCommandParamType::None;
// PasteQuotationCommand
case Command::PasteAsQuotation:
return EditorCommandParamType::None;
// SelectionMoveCommand
case Command::ScrollTop:
case Command::ScrollBottom:
case Command::MoveTop:
case Command::MoveBottom:
case Command::SelectTop:
case Command::SelectBottom:
case Command::LineNext:
case Command::LinePrevious:
case Command::SelectLineNext:
case Command::SelectLinePrevious:
case Command::CharPrevious:
case Command::CharNext:
case Command::SelectCharPrevious:
case Command::SelectCharNext:
case Command::BeginLine:
case Command::EndLine:
case Command::SelectBeginLine:
case Command::SelectEndLine:
case Command::WordPrevious:
case Command::WordNext:
case Command::SelectWordPrevious:
case Command::SelectWordNext:
case Command::ScrollPageUp:
case Command::ScrollPageDown:
case Command::ScrollLineUp:
case Command::ScrollLineDown:
case Command::MovePageUp:
case Command::MovePageDown:
case Command::SelectPageUp:
case Command::SelectPageDown:
case Command::MoveLeft:
case Command::MoveRight:
case Command::MoveUp:
case Command::MoveDown:
case Command::MoveLeft2:
case Command::MoveRight2:
case Command::MoveUp2:
case Command::MoveDown2:
case Command::SelectLeft:
case Command::SelectRight:
case Command::SelectUp:
case Command::SelectDown:
case Command::SelectLeft2:
case Command::SelectRight2:
case Command::SelectUp2:
case Command::SelectDown2:
return EditorCommandParamType::None;
// PasteNoFormattingCommand
case Command::PasteWithoutFormat:
return EditorCommandParamType::None;
// DocumentStateCommand
case Command::EditorObserverDocumentCreated:
case Command::EditorObserverDocumentLocationChanged:
case Command::EditorObserverDocumentWillBeDestroyed:
return EditorCommandParamType::None;
// IndentCommand
case Command::FormatIndent:
return EditorCommandParamType::None;
// OutdentCommand
case Command::FormatOutdent:
return EditorCommandParamType::None;
// StyleUpdatingCommand
case Command::FormatBold:
case Command::FormatItalic:
case Command::FormatUnderline:
case Command::FormatTeletypeText:
case Command::FormatStrikeThrough:
case Command::FormatSuperscript:
case Command::FormatSubscript:
case Command::FormatNoBreak:
case Command::FormatEmphasis:
case Command::FormatStrong:
case Command::FormatCitation:
case Command::FormatAbbreviation:
case Command::FormatAcronym:
case Command::FormatCode:
case Command::FormatSample:
case Command::FormatVariable:
case Command::FormatRemoveLink:
return EditorCommandParamType::None;
// ListCommand
case Command::InsertOrderedList:
case Command::InsertUnorderedList:
return EditorCommandParamType::None;
// ListItemCommand
case Command::InsertDefinitionTerm:
case Command::InsertDefinitionDetails:
return EditorCommandParamType::None;
// RemoveListCommand
case Command::FormatRemoveList:
return EditorCommandParamType::None;
// RemoveStylesCommand
case Command::FormatRemove:
return EditorCommandParamType::None;
// IncreaseFontSizeCommand
case Command::FormatIncreaseFontSize:
return EditorCommandParamType::None;
// DecreaseFontSizeCommand
case Command::FormatDecreaseFontSize:
return EditorCommandParamType::None;
case Command::InsertHorizontalRule:
return EditorCommandParamType::None;
// AbsolutePositioningCommand
case Command::FormatAbsolutePosition:
return EditorCommandParamType::None;
// DecreaseZIndexCommand
case Command::FormatDecreaseZIndex:
return EditorCommandParamType::None;
// IncreaseZIndexCommand
case Command::FormatIncreaseZIndex:
return EditorCommandParamType::None;
default:
// XXX Treat as Unknown for now
return EditorCommandParamType::Transferable;
}
}
// nsIControllerCommand methods. Use EditorCommand specific methods instead
// for internal use.
MOZ_CAN_RUN_SCRIPT_BOUNDARY
@ -58,7 +262,11 @@ class EditorCommand : public nsIControllerCommand {
TextEditor& aTextEditor) const = 0;
MOZ_CAN_RUN_SCRIPT
virtual nsresult DoCommandParams(Command aCommand, nsCommandParams* aParams,
TextEditor& aTextEditor) const = 0;
TextEditor& aTextEditor) const {
MOZ_ASSERT_UNREACHABLE("Wrong method is called");
return NS_ERROR_NOT_IMPLEMENTED;
}
/**
* @param aTextEditor If the context is an editor, should be set to
* it. Otherwise, nullptr.
@ -72,30 +280,52 @@ class EditorCommand : public nsIControllerCommand {
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const = 0;
/**
* Called only when the result of EditorCommand::GetParamType(aCommand) is
* EditorCommandParamType::None.
*/
MOZ_CAN_RUN_SCRIPT
virtual nsresult DoCommandParam(Command aCommand,
TextEditor& aTextEditor) const {
MOZ_ASSERT_UNREACHABLE("Wrong overload is called");
return NS_ERROR_NOT_IMPLEMENTED;
}
protected:
EditorCommand() = default;
virtual ~EditorCommand() = default;
};
#define NS_DECL_EDITOR_COMMAND_METHODS(_cmd) \
public: \
MOZ_CAN_RUN_SCRIPT \
virtual bool IsCommandEnabled(Command aCommand, TextEditor* aTextEditor) \
const final; \
using EditorCommand::IsCommandEnabled; \
MOZ_CAN_RUN_SCRIPT \
virtual nsresult DoCommand(Command aCommand, TextEditor& aTextEditor) \
const final; \
using EditorCommand::DoCommand; \
#define NS_DECL_EDITOR_COMMAND_COMMON_METHODS \
public: \
MOZ_CAN_RUN_SCRIPT \
virtual bool IsCommandEnabled(Command aCommand, TextEditor* aTextEditor) \
const final; \
using EditorCommand::IsCommandEnabled; \
MOZ_CAN_RUN_SCRIPT \
virtual nsresult DoCommand(Command aCommand, TextEditor& aTextEditor) \
const final; \
using EditorCommand::DoCommand; \
MOZ_CAN_RUN_SCRIPT \
virtual nsresult GetCommandStateParams( \
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor, \
nsIEditingSession* aEditingSession) const final; \
using EditorCommand::GetCommandStateParams; \
using EditorCommand::DoCommandParam;
#define NS_DECL_DO_COMMAND_PARAMS \
MOZ_CAN_RUN_SCRIPT \
virtual nsresult DoCommandParams(Command aCommand, nsCommandParams* aParams, \
TextEditor& aTextEditor) const final; \
using EditorCommand::DoCommandParams; \
MOZ_CAN_RUN_SCRIPT \
virtual nsresult GetCommandStateParams( \
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor, \
nsIEditingSession* aEditingSession) const final; \
using EditorCommand::GetCommandStateParams;
using EditorCommand::DoCommandParams;
#define NS_DECL_DO_COMMAND_PARAM_DELEGATE_TO_DO_COMMAND \
public: \
MOZ_CAN_RUN_SCRIPT \
virtual nsresult DoCommandParam(Command aCommand, TextEditor& aTextEditor) \
const final { \
return DoCommand(aCommand, aTextEditor); \
}
#define NS_INLINE_DECL_EDITOR_COMMAND_MAKE_SINGLETON(_cmd) \
public: \
@ -113,7 +343,8 @@ class EditorCommand : public nsIControllerCommand {
#define NS_DECL_EDITOR_COMMAND(_cmd) \
class _cmd final : public EditorCommand { \
NS_DECL_EDITOR_COMMAND_METHODS(_cmd) \
NS_DECL_EDITOR_COMMAND_COMMON_METHODS \
NS_DECL_DO_COMMAND_PARAMS \
NS_INLINE_DECL_EDITOR_COMMAND_MAKE_SINGLETON(_cmd) \
\
protected: \
@ -121,27 +352,38 @@ class EditorCommand : public nsIControllerCommand {
virtual ~_cmd() = default; \
};
#define NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(_cmd) \
class _cmd final : public EditorCommand { \
NS_DECL_EDITOR_COMMAND_COMMON_METHODS \
NS_DECL_DO_COMMAND_PARAM_DELEGATE_TO_DO_COMMAND \
NS_INLINE_DECL_EDITOR_COMMAND_MAKE_SINGLETON(_cmd) \
\
protected: \
_cmd() = default; \
virtual ~_cmd() = default; \
};
// basic editor commands
NS_DECL_EDITOR_COMMAND(UndoCommand)
NS_DECL_EDITOR_COMMAND(RedoCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(UndoCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(RedoCommand)
NS_DECL_EDITOR_COMMAND(CutCommand)
NS_DECL_EDITOR_COMMAND(CutOrDeleteCommand)
NS_DECL_EDITOR_COMMAND(CopyCommand)
NS_DECL_EDITOR_COMMAND(CopyOrDeleteCommand)
NS_DECL_EDITOR_COMMAND(PasteCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(CutCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(CutOrDeleteCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(CopyCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(CopyOrDeleteCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(PasteCommand)
NS_DECL_EDITOR_COMMAND(PasteTransferableCommand)
NS_DECL_EDITOR_COMMAND(SwitchTextDirectionCommand)
NS_DECL_EDITOR_COMMAND(DeleteCommand)
NS_DECL_EDITOR_COMMAND(SelectAllCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(SwitchTextDirectionCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(DeleteCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(SelectAllCommand)
NS_DECL_EDITOR_COMMAND(SelectionMoveCommands)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(SelectionMoveCommands)
// Insert content commands
NS_DECL_EDITOR_COMMAND(InsertPlaintextCommand)
NS_DECL_EDITOR_COMMAND(InsertParagraphCommand)
NS_DECL_EDITOR_COMMAND(InsertLineBreakCommand)
NS_DECL_EDITOR_COMMAND(PasteQuotationCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(InsertParagraphCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(InsertLineBreakCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(PasteQuotationCommand)
/******************************************************************************
* Commands for HTML editor
@ -153,7 +395,8 @@ class StateUpdatingCommandBase : public EditorCommand {
public:
NS_INLINE_DECL_REFCOUNTING_INHERITED(StateUpdatingCommandBase, EditorCommand)
NS_DECL_EDITOR_COMMAND_METHODS(StateUpdatingCommandBase)
NS_DECL_EDITOR_COMMAND_COMMON_METHODS
NS_DECL_DO_COMMAND_PARAM_DELEGATE_TO_DO_COMMAND
protected:
StateUpdatingCommandBase() = default;
@ -246,7 +489,9 @@ class InsertTagCommand final : public EditorCommand {
public:
NS_INLINE_DECL_REFCOUNTING_INHERITED(InsertTagCommand, EditorCommand)
NS_DECL_EDITOR_COMMAND_METHODS(InsertTagCommand)
NS_DECL_EDITOR_COMMAND_COMMON_METHODS
NS_DECL_DO_COMMAND_PARAM_DELEGATE_TO_DO_COMMAND
NS_DECL_DO_COMMAND_PARAMS
NS_INLINE_DECL_EDITOR_COMMAND_MAKE_SINGLETON(InsertTagCommand)
protected:
@ -307,7 +552,9 @@ class ListItemCommand final : public StateUpdatingCommandBase {
class MultiStateCommandBase : public EditorCommand {
public:
NS_INLINE_DECL_REFCOUNTING_INHERITED(MultiStateCommandBase, EditorCommand)
NS_DECL_EDITOR_COMMAND_METHODS(MultiStateCommandBase)
NS_DECL_EDITOR_COMMAND_COMMON_METHODS
NS_DECL_DO_COMMAND_PARAMS
protected:
MultiStateCommandBase() = default;
@ -450,31 +697,34 @@ class AbsolutePositioningCommand final : public StateUpdatingCommandBase {
// composer commands
NS_DECL_EDITOR_COMMAND(DocumentStateCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(DocumentStateCommand)
NS_DECL_EDITOR_COMMAND(SetDocumentStateCommand)
NS_DECL_EDITOR_COMMAND(DecreaseZIndexCommand)
NS_DECL_EDITOR_COMMAND(IncreaseZIndexCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(DecreaseZIndexCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(IncreaseZIndexCommand)
// Generic commands
// Edit menu
NS_DECL_EDITOR_COMMAND(PasteNoFormattingCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(PasteNoFormattingCommand)
// Block transformations
NS_DECL_EDITOR_COMMAND(IndentCommand)
NS_DECL_EDITOR_COMMAND(OutdentCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(IndentCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(OutdentCommand)
NS_DECL_EDITOR_COMMAND(RemoveListCommand)
NS_DECL_EDITOR_COMMAND(RemoveStylesCommand)
NS_DECL_EDITOR_COMMAND(IncreaseFontSizeCommand)
NS_DECL_EDITOR_COMMAND(DecreaseFontSizeCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(RemoveListCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(RemoveStylesCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(IncreaseFontSizeCommand)
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(DecreaseFontSizeCommand)
// Insert content commands
NS_DECL_EDITOR_COMMAND(InsertHTMLCommand)
#undef NS_DECL_EDITOR_COMMAND
#undef NS_DECL_EDITOR_COMMAND_METHODS
#undef NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE
#undef NS_DECL_EDITOR_COMMAND_COMMON_METHODS
#undef NS_DECL_DO_COMMAND_PARAMS
#undef NS_DECL_DO_COMMAND_PARAM_DELEGATE_TO_DO_COMMAND
#undef NS_INLINE_DECL_EDITOR_COMMAND_MAKE_SINGLETON
} // namespace mozilla

View File

@ -77,11 +77,6 @@ nsresult StateUpdatingCommandBase::DoCommand(Command aCommand,
return ToggleState(MOZ_KnownLive(tagName), MOZ_KnownLive(htmlEditor));
}
nsresult StateUpdatingCommandBase::DoCommandParams(
Command aCommand, nsCommandParams* aParams, TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult StateUpdatingCommandBase::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -129,11 +124,6 @@ nsresult PasteNoFormattingCommand::DoCommand(Command aCommand,
->PasteNoFormatting(nsIClipboard::kGlobalClipboard);
}
nsresult PasteNoFormattingCommand::DoCommandParams(
Command aCommand, nsCommandParams* aParams, TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult PasteNoFormattingCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -402,12 +392,6 @@ nsresult RemoveListCommand::DoCommand(Command aCommand,
return htmlEditor->RemoveList(EmptyString());
}
nsresult RemoveListCommand::DoCommandParams(Command aCommand,
nsCommandParams* aParams,
TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult RemoveListCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -446,12 +430,6 @@ nsresult IndentCommand::DoCommand(Command aCommand,
return NS_OK;
}
nsresult IndentCommand::DoCommandParams(Command aCommand,
nsCommandParams* aParams,
TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult IndentCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -490,12 +468,6 @@ nsresult OutdentCommand::DoCommand(Command aCommand,
return NS_OK;
}
nsresult OutdentCommand::DoCommandParams(Command aCommand,
nsCommandParams* aParams,
TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult OutdentCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -985,12 +957,6 @@ nsresult DecreaseZIndexCommand::DoCommand(Command aCommand,
return htmlEditor->AddZIndex(-1);
}
nsresult DecreaseZIndexCommand::DoCommandParams(Command aCommand,
nsCommandParams* aParams,
TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult DecreaseZIndexCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -1028,12 +994,6 @@ nsresult IncreaseZIndexCommand::DoCommand(Command aCommand,
return htmlEditor->AddZIndex(1);
}
nsresult IncreaseZIndexCommand::DoCommandParams(Command aCommand,
nsCommandParams* aParams,
TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult IncreaseZIndexCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -1069,12 +1029,6 @@ nsresult RemoveStylesCommand::DoCommand(Command aCommand,
return MOZ_KnownLive(htmlEditor)->RemoveAllInlineProperties();
}
nsresult RemoveStylesCommand::DoCommandParams(Command aCommand,
nsCommandParams* aParams,
TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult RemoveStylesCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -1110,11 +1064,6 @@ nsresult IncreaseFontSizeCommand::DoCommand(Command aCommand,
return MOZ_KnownLive(htmlEditor)->IncreaseFontSize();
}
nsresult IncreaseFontSizeCommand::DoCommandParams(
Command aCommand, nsCommandParams* aParams, TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult IncreaseFontSizeCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -1150,11 +1099,6 @@ nsresult DecreaseFontSizeCommand::DoCommand(Command aCommand,
return MOZ_KnownLive(htmlEditor)->DecreaseFontSize();
}
nsresult DecreaseFontSizeCommand::DoCommandParams(
Command aCommand, nsCommandParams* aParams, TextEditor& aTextEditor) const {
return DoCommand(aCommand, aTextEditor);
}
nsresult DecreaseFontSizeCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {
@ -1260,19 +1204,14 @@ nsresult InsertTagCommand::DoCommand(Command aCommand,
}
nsresult rv =
MOZ_KnownLive(htmlEditor)->InsertElementAtSelection(newElement, true);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
return NS_OK;
NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), "InsertElementAtSelection() failed");
return rv;
}
nsresult InsertTagCommand::DoCommandParams(Command aCommand,
nsCommandParams* aParams,
TextEditor& aTextEditor) const {
// inserting an hr shouldn't have an parameters, just call DoCommand for that
if (aCommand == Command::InsertHorizontalRule) {
return DoCommand(aCommand, aTextEditor);
}
MOZ_ASSERT(aCommand != Command::InsertHorizontalRule);
if (NS_WARN_IF(!aParams)) {
return NS_ERROR_INVALID_ARG;

View File

@ -407,12 +407,6 @@ nsresult DocumentStateCommand::DoCommand(Command aCommand,
return NS_ERROR_NOT_IMPLEMENTED;
}
nsresult DocumentStateCommand::DoCommandParams(Command aCommand,
nsCommandParams* aParams,
TextEditor& aTextEditor) const {
return NS_ERROR_NOT_IMPLEMENTED;
}
nsresult DocumentStateCommand::GetCommandStateParams(
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
nsIEditingSession* aEditingSession) const {

View File

@ -118,6 +118,8 @@ NS_DEFINE_COMMAND(ToggleAbsolutePositionEditor,
// Commands not mapped from HTMLDocument.execCommand() but available with
// command dispatcher and handled in editor.
NS_DEFINE_COMMAND(CutOrDelete, cmd_cutOrDelete)
NS_DEFINE_COMMAND(CopyOrDelete, cmd_copyOrDelete)
NS_DEFINE_COMMAND(EditorObserverDocumentCreated, obs_documentCreated)
NS_DEFINE_COMMAND(EditorObserverDocumentLocationChanged,
obs_documentLocationChanged)
@ -128,9 +130,13 @@ NS_DEFINE_COMMAND(FormatAbsolutePosition, cmd_absPos)
NS_DEFINE_COMMAND(FormatAcronym, cmd_acronym)
NS_DEFINE_COMMAND(FormatCitation, cmd_cite)
NS_DEFINE_COMMAND(FormatCode, cmd_code)
NS_DEFINE_COMMAND(FormatDecreaseZIndex, cmd_decreaseZIndex)
NS_DEFINE_COMMAND(FormatEmphasis, cmd_em)
NS_DEFINE_COMMAND(FormatIncreaseZIndex, cmd_increaseZIndex)
NS_DEFINE_COMMAND(FormatNoBreak, cmd_nobreak)
NS_DEFINE_COMMAND(FormatRemoveList, cmd_removeList)
NS_DEFINE_COMMAND(FormatSample, cmd_samp)
NS_DEFINE_COMMAND(FormatSetBlockTextDirection, cmd_switchTextDirection)
NS_DEFINE_COMMAND(FormatStrong, cmd_strong)
NS_DEFINE_COMMAND(FormatTeletypeText, cmd_tt)
NS_DEFINE_COMMAND(FormatVariable, cmd_var)
@ -144,6 +150,8 @@ NS_DEFINE_COMMAND(MoveRight, cmd_moveRight)
NS_DEFINE_COMMAND(MoveRight2, cmd_moveRight2)
NS_DEFINE_COMMAND(MoveUp, cmd_moveUp)
NS_DEFINE_COMMAND(MoveUp2, cmd_moveUp2)
NS_DEFINE_COMMAND(PasteAsQuotation, cmd_pasteQuote)
NS_DEFINE_COMMAND(PasteWithoutFormat, cmd_pasteNoFormatting)
NS_DEFINE_COMMAND(SelectDown, cmd_selectDown)
NS_DEFINE_COMMAND(SelectDown2, cmd_selectDown2)
NS_DEFINE_COMMAND(SelectLeft, cmd_selectLeft)

View File

@ -206,7 +206,7 @@ inline bool IsDataTransferAvailableOnHTMLEditor(EditorInputType aInputType) {
#define NS_DEFINE_COMMAND_WITH_PARAM(aName, aCommandStr, aParam) , aName
#define NS_DEFINE_COMMAND_NO_EXEC_COMMAND(aName) , aName
typedef int8_t CommandInt;
typedef uint8_t CommandInt;
enum class Command : CommandInt {
DoNothing