forked from mirrors/gecko-dev
Headers in editor module has a lot of forward declarations for avoiding the include hell and has a lot of helper template classes. Forward declarations of template classes is really messy and I'd want to avoid the duplication because it blocks changing template class. Therefore, centralizing forward declarations makes the headers cleaner and maintaining template classes easier. Therefore, this patch adds a new header file which has only forward declarations and some aliases. It'd be better to define `enum class`es in it like `EventForwards.h` for reducing the dependencies between headers, but currently this does not do it for making the new file simpler as far as possible. Removing `EditActionListener.h` is because it's unused. Removing `AutoTopLevelEditSubActionNotifier` is because it's renamed to `AutoEditSubActionNotifier`. https://hg.mozilla.org/mozilla-central/rev/6de55c5b5f8d5f92389d0d244d2bced1f979ade9 Differential Revision: https://phabricator.services.mozilla.com/D143817
91 lines
3 KiB
C++
91 lines
3 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef ChangeAttributeTransaction_h
|
|
#define ChangeAttributeTransaction_h
|
|
|
|
#include "EditTransactionBase.h" // base class
|
|
|
|
#include "mozilla/Attributes.h" // override
|
|
#include "nsCOMPtr.h" // nsCOMPtr members
|
|
#include "nsCycleCollectionParticipant.h" // NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED
|
|
#include "nsISupportsImpl.h" // NS_DECL_ISUPPORTS_INHERITED
|
|
#include "nsString.h" // nsString members
|
|
|
|
class nsAtom;
|
|
|
|
namespace mozilla {
|
|
namespace dom {
|
|
class Element;
|
|
} // namespace dom
|
|
|
|
/**
|
|
* A transaction that changes an attribute of a content node. This transaction
|
|
* covers add, remove, and change attribute.
|
|
*/
|
|
class ChangeAttributeTransaction final : public EditTransactionBase {
|
|
protected:
|
|
ChangeAttributeTransaction(dom::Element& aElement, nsAtom& aAttribute,
|
|
const nsAString* aValue);
|
|
|
|
public:
|
|
/**
|
|
* Creates a change attribute transaction to set an attribute to something.
|
|
* This method never returns nullptr.
|
|
*
|
|
* @param aElement The element whose attribute will be changed.
|
|
* @param aAttribute The name of the attribute to change.
|
|
* @param aValue The new value for aAttribute.
|
|
*/
|
|
static already_AddRefed<ChangeAttributeTransaction> Create(
|
|
dom::Element& aElement, nsAtom& aAttribute, const nsAString& aValue);
|
|
|
|
/**
|
|
* Creates a change attribute transaction to remove an attribute. This
|
|
* method never returns nullptr.
|
|
*
|
|
* @param aElement The element whose attribute will be changed.
|
|
* @param aAttribute The name of the attribute to remove.
|
|
*/
|
|
static already_AddRefed<ChangeAttributeTransaction> CreateToRemove(
|
|
dom::Element& aElement, nsAtom& aAttribute);
|
|
|
|
NS_DECL_ISUPPORTS_INHERITED
|
|
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(ChangeAttributeTransaction,
|
|
EditTransactionBase)
|
|
|
|
NS_DECL_EDITTRANSACTIONBASE
|
|
NS_DECL_EDITTRANSACTIONBASE_GETASMETHODS_OVERRIDE(ChangeAttributeTransaction)
|
|
|
|
MOZ_CAN_RUN_SCRIPT NS_IMETHOD RedoTransaction() override;
|
|
|
|
friend std::ostream& operator<<(
|
|
std::ostream& aStream, const ChangeAttributeTransaction& aTransaction);
|
|
|
|
private:
|
|
virtual ~ChangeAttributeTransaction() = default;
|
|
|
|
// The element to operate upon
|
|
nsCOMPtr<dom::Element> mElement;
|
|
|
|
// The attribute to change
|
|
RefPtr<nsAtom> mAttribute;
|
|
|
|
// The value to set the attribute to (ignored if mRemoveAttribute==true)
|
|
nsString mValue;
|
|
|
|
// The value to set the attribute to for undo
|
|
nsString mUndoValue;
|
|
|
|
// True if the operation is to remove mAttribute from mElement
|
|
bool mRemoveAttribute;
|
|
|
|
// True if the mAttribute was set on mElement at the time of execution
|
|
bool mAttributeWasSet;
|
|
};
|
|
|
|
} // namespace mozilla
|
|
|
|
#endif // #ifndef ChangeAttributeTransaction_h
|