Bug 1344116 - Clean up HTMLEditRules::RemoveAlignment. r?masayuki
Before I will fix some justify* command's bug, I would like to clean up HTMLEditRules::RemoveAlignment to get rid of nsIDOM* into this method.
MozReview-Commit-ID: 4UATycS5iBl
--- a/editor/libeditor/CSSEditUtils.cpp
+++ b/editor/libeditor/CSSEditUtils.cpp
@@ -577,21 +577,21 @@ CSSEditUtils::GetComputedStyle(Element*
NS_NewComputedDOMStyle(aElement, EmptyString(), presShell);
return style.forget();
}
// remove the CSS style "aProperty : aPropertyValue" and possibly remove the whole node
// if it is a span and if its only attribute is _moz_dirty
nsresult
-CSSEditUtils::RemoveCSSInlineStyle(nsIDOMNode* aNode,
+CSSEditUtils::RemoveCSSInlineStyle(nsINode& aNode,
nsIAtom* aProperty,
const nsAString& aPropertyValue)
{
- nsCOMPtr<Element> element = do_QueryInterface(aNode);
+ RefPtr<Element> element = aNode.AsElement();
NS_ENSURE_STATE(element);
// remove the property from the style attribute
nsresult rv = RemoveCSSProperty(*element, *aProperty, aPropertyValue);
NS_ENSURE_SUCCESS(rv, rv);
if (!element->IsHTMLElement(nsGkAtoms::span) ||
HTMLEditor::HasAttributes(element)) {
--- a/editor/libeditor/CSSEditUtils.h
+++ b/editor/libeditor/CSSEditUtils.h
@@ -148,17 +148,17 @@ public:
* and removes the node if it is an useless span.
*
* @param aNode [IN] The specific node we want to remove a style
* from.
* @param aProperty [IN] The CSS property atom to remove.
* @param aPropertyValue [IN] The value of the property we have to remove
* if the property accepts more than one value.
*/
- nsresult RemoveCSSInlineStyle(nsIDOMNode* aNode, nsIAtom* aProperty,
+ nsresult RemoveCSSInlineStyle(nsINode& aNode, nsIAtom* aProperty,
const nsAString& aPropertyValue);
/**
* Answers true is the property can be removed by setting a "none" CSS value
* on a node.
*
* @param aProperty [IN] An atom containing a CSS property.
* @param aAttribute [IN] Pointer to an attribute name or null if this
--- a/editor/libeditor/HTMLAbsPositionEditor.cpp
+++ b/editor/libeditor/HTMLAbsPositionEditor.cpp
@@ -529,17 +529,17 @@ HTMLEditor::AbsolutelyPositionElement(ns
}
nsCOMPtr<dom::Element> element = do_QueryInterface(aElement);
if (element && element->IsHTMLElement(nsGkAtoms::div) &&
!HasStyleOrIdOrClass(element)) {
RefPtr<HTMLEditRules> htmlRules =
static_cast<HTMLEditRules*>(mRules.get());
NS_ENSURE_TRUE(htmlRules, NS_ERROR_FAILURE);
- nsresult rv = htmlRules->MakeSureElemStartsOrEndsOnCR(aElement);
+ nsresult rv = htmlRules->MakeSureElemStartsOrEndsOnCR(*element);
NS_ENSURE_SUCCESS(rv, rv);
rv = RemoveContainer(element);
NS_ENSURE_SUCCESS(rv, rv);
}
}
return NS_OK;
}
--- a/editor/libeditor/HTMLEditRules.cpp
+++ b/editor/libeditor/HTMLEditRules.cpp
@@ -884,17 +884,17 @@ HTMLEditRules::GetAlignment(bool* aMixed
for (; nodeToExamine; nodeToExamine = nodeToExamine->GetParentNode()) {
if (!isFirstNodeToExamine &&
nodeToExamine->IsHTMLElement(nsGkAtoms::table)) {
// The node to examine is a table and this is not the first node we
// examine; let's break here to materialize the 'inline-block' behaviour
// of html tables regarding to text alignment
return NS_OK;
}
- if (HTMLEditUtils::SupportsAlignAttr(GetAsDOMNode(nodeToExamine))) {
+ if (HTMLEditUtils::SupportsAlignAttr(*nodeToExamine)) {
// Check for alignment
nsAutoString typeAttrVal;
nodeToExamine->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::align,
typeAttrVal);
ToLowerCase(typeAttrVal);
if (!typeAttrVal.IsEmpty()) {
if (typeAttrVal.EqualsLiteral("center")) {
*aAlign = nsIHTMLEditor::eCenter;
@@ -4627,17 +4627,17 @@ HTMLEditRules::WillAlign(Selection& aSel
// If we don't have any nodes, or we have only a single br, then we are
// creating an empty alignment div. We have to do some different things for
// these.
bool emptyDiv = nodeArray.IsEmpty();
if (nodeArray.Length() == 1) {
OwningNonNull<nsINode> node = nodeArray[0];
- if (HTMLEditUtils::SupportsAlignAttr(GetAsDOMNode(node))) {
+ if (HTMLEditUtils::SupportsAlignAttr(*node)) {
// The node is a table element, an hr, a paragraph, a div or a section
// header; in HTML 4, it can directly carry the ALIGN attribute and we
// don't need to make a div! If we are in CSS mode, all the work is done
// in AlignBlock
rv = AlignBlock(*node->AsElement(), aAlignType, ContentsOnly::yes);
NS_ENSURE_SUCCESS(rv, rv);
return NS_OK;
}
@@ -4726,17 +4726,17 @@ HTMLEditRules::WillAlign(Selection& aSel
if (!htmlEditor->IsEditable(curNode)) {
continue;
}
// The node is a table element, an hr, a paragraph, a div or a section
// header; in HTML 4, it can directly carry the ALIGN attribute and we
// don't need to nest it, just set the alignment. In CSS, assign the
// corresponding CSS styles in AlignBlock
- if (HTMLEditUtils::SupportsAlignAttr(GetAsDOMNode(curNode))) {
+ if (HTMLEditUtils::SupportsAlignAttr(*curNode)) {
rv = AlignBlock(*curNode->AsElement(), aAlignType, ContentsOnly::no);
NS_ENSURE_SUCCESS(rv, rv);
// Clear out curDiv so that we don't put nodes after this one into it
curDiv = nullptr;
continue;
}
nsCOMPtr<nsINode> curParent = curNode->GetParentNode();
@@ -4753,17 +4753,17 @@ HTMLEditRules::WillAlign(Selection& aSel
isEmptyTextNode))) {
continue;
}
// If it's a list item, or a list inside a list, forget any "current" div,
// and instead put divs inside the appropriate block (td, li, etc.)
if (HTMLEditUtils::IsListItem(curNode) ||
HTMLEditUtils::IsList(curNode)) {
- rv = RemoveAlignment(GetAsDOMNode(curNode), aAlignType, true);
+ rv = RemoveAlignment(*curNode, aAlignType, true);
NS_ENSURE_SUCCESS(rv, rv);
if (useCSS) {
htmlEditor->mCSSEditUtils->SetCSSEquivalentToHTMLStyle(
curNode->AsElement(), nullptr, nsGkAtoms::align,
&aAlignType, false);
curDiv = nullptr;
continue;
}
@@ -8323,173 +8323,150 @@ HTMLEditRules::DidDeleteSelection(nsISel
return NS_OK;
}
// Let's remove all alignment hints in the children of aNode; it can
// be an ALIGN attribute (in case we just remove it) or a CENTER
// element (here we have to remove the container and keep its
// children). We break on tables and don't look at their children.
nsresult
-HTMLEditRules::RemoveAlignment(nsIDOMNode* aNode,
+HTMLEditRules::RemoveAlignment(nsINode& aNode,
const nsAString& aAlignType,
bool aChildrenOnly)
{
- NS_ENSURE_TRUE(aNode, NS_ERROR_NULL_POINTER);
-
- if (EditorBase::IsTextNode(aNode) || HTMLEditUtils::IsTable(aNode)) {
+ if (EditorBase::IsTextNode(&aNode) || HTMLEditUtils::IsTable(&aNode)) {
return NS_OK;
}
- nsCOMPtr<nsIDOMNode> child = aNode,tmp;
+ nsCOMPtr<nsINode> child, tmp;
if (aChildrenOnly) {
- aNode->GetFirstChild(getter_AddRefs(child));
+ child = aNode.GetFirstChild();
+ } else {
+ child = &aNode;
}
NS_ENSURE_STATE(mHTMLEditor);
bool useCSS = mHTMLEditor->IsCSSEnabled();
while (child) {
if (aChildrenOnly) {
// get the next sibling right now because we could have to remove child
- child->GetNextSibling(getter_AddRefs(tmp));
+ tmp = child->GetNextSibling();
} else {
tmp = nullptr;
}
- bool isBlock;
- NS_ENSURE_STATE(mHTMLEditor);
- nsresult rv = mHTMLEditor->NodeIsBlockStatic(child, &isBlock);
- NS_ENSURE_SUCCESS(rv, rv);
-
- if (EditorBase::NodeIsType(child, nsGkAtoms::center)) {
+
+ if (child->IsHTMLElement(nsGkAtoms::center)) {
// the current node is a CENTER element
// first remove children's alignment
- rv = RemoveAlignment(child, aAlignType, true);
+ nsresult rv = RemoveAlignment(*child, aAlignType, true);
NS_ENSURE_SUCCESS(rv, rv);
// we may have to insert BRs in first and last position of element's children
// if the nodes before/after are not blocks and not BRs
- rv = MakeSureElemStartsOrEndsOnCR(child);
+ rv = MakeSureElemStartsOrEndsOnCR(*child);
NS_ENSURE_SUCCESS(rv, rv);
// now remove the CENTER container
NS_ENSURE_STATE(mHTMLEditor);
- nsCOMPtr<Element> childAsElement = do_QueryInterface(child);
- NS_ENSURE_STATE(childAsElement);
- rv = mHTMLEditor->RemoveContainer(childAsElement);
+ rv = mHTMLEditor->RemoveContainer(child->AsElement());
NS_ENSURE_SUCCESS(rv, rv);
- } else if (isBlock || HTMLEditUtils::IsHR(child)) {
+ } else if (IsBlockNode(*child) || child->IsHTMLElement(nsGkAtoms::hr)) {
// the current node is a block element
- nsCOMPtr<Element> curElem = do_QueryInterface(child);
- if (HTMLEditUtils::SupportsAlignAttr(child)) {
+ if (HTMLEditUtils::SupportsAlignAttr(*child)) {
// remove the ALIGN attribute if this element can have it
NS_ENSURE_STATE(mHTMLEditor);
- rv = mHTMLEditor->RemoveAttribute(curElem, nsGkAtoms::align);
+ nsresult rv = mHTMLEditor->RemoveAttribute(child->AsElement(),
+ nsGkAtoms::align);
NS_ENSURE_SUCCESS(rv, rv);
}
if (useCSS) {
- if (HTMLEditUtils::IsTable(child) || HTMLEditUtils::IsHR(child)) {
+ if (child->IsAnyOfHTMLElements(nsGkAtoms::table, nsGkAtoms::hr)) {
NS_ENSURE_STATE(mHTMLEditor);
- rv = mHTMLEditor->SetAttributeOrEquivalent(curElem,
- nsGkAtoms::align,
- aAlignType, false);
+ nsresult rv =
+ mHTMLEditor->SetAttributeOrEquivalent(child->AsElement(),
+ nsGkAtoms::align,
+ aAlignType, false);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
} else {
nsAutoString dummyCssValue;
NS_ENSURE_STATE(mHTMLEditor);
- rv = mHTMLEditor->mCSSEditUtils->RemoveCSSInlineStyle(
- child,
- nsGkAtoms::textAlign,
- dummyCssValue);
+ nsresult rv = mHTMLEditor->mCSSEditUtils->RemoveCSSInlineStyle(
+ *child,
+ nsGkAtoms::textAlign,
+ dummyCssValue);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
}
}
- if (!HTMLEditUtils::IsTable(child)) {
+ if (!child->IsHTMLElement(nsGkAtoms::table)) {
// unless this is a table, look at children
- rv = RemoveAlignment(child, aAlignType, true);
+ nsresult rv = RemoveAlignment(*child, aAlignType, true);
NS_ENSURE_SUCCESS(rv, rv);
}
}
child = tmp;
}
return NS_OK;
}
// Let's insert a BR as first (resp. last) child of aNode if its
// first (resp. last) child is not a block nor a BR, and if the
// previous (resp. next) sibling is not a block nor a BR
nsresult
-HTMLEditRules::MakeSureElemStartsOrEndsOnCR(nsIDOMNode* aNode,
+HTMLEditRules::MakeSureElemStartsOrEndsOnCR(nsINode& aNode,
bool aStarts)
{
- nsCOMPtr<nsINode> node = do_QueryInterface(aNode);
- NS_ENSURE_TRUE(node, NS_ERROR_NULL_POINTER);
-
- nsCOMPtr<nsIDOMNode> child;
+ nsCOMPtr<nsINode> child;
if (aStarts) {
NS_ENSURE_STATE(mHTMLEditor);
- child = GetAsDOMNode(mHTMLEditor->GetFirstEditableChild(*node));
+ child = mHTMLEditor->GetFirstEditableChild(aNode);
} else {
NS_ENSURE_STATE(mHTMLEditor);
- child = GetAsDOMNode(mHTMLEditor->GetLastEditableChild(*node));
+ child = mHTMLEditor->GetLastEditableChild(aNode);
}
NS_ENSURE_TRUE(child, NS_OK);
- bool isChildBlock;
- NS_ENSURE_STATE(mHTMLEditor);
- nsresult rv = mHTMLEditor->NodeIsBlockStatic(child, &isChildBlock);
- NS_ENSURE_SUCCESS(rv, rv);
bool foundCR = false;
- if (isChildBlock || TextEditUtils::IsBreak(child)) {
+ if (IsBlockNode(*child) || child->IsHTMLElement(nsGkAtoms::br)) {
foundCR = true;
} else {
- nsCOMPtr<nsIDOMNode> sibling;
+ nsCOMPtr<nsINode> sibling;
if (aStarts) {
NS_ENSURE_STATE(mHTMLEditor);
- rv = mHTMLEditor->GetPriorHTMLSibling(aNode, address_of(sibling));
- if (NS_WARN_IF(NS_FAILED(rv))) {
- return rv;
- }
+ sibling = mHTMLEditor->GetPriorHTMLSibling(&aNode);
} else {
NS_ENSURE_STATE(mHTMLEditor);
- rv = mHTMLEditor->GetNextHTMLSibling(aNode, address_of(sibling));
- if (NS_WARN_IF(NS_FAILED(rv))) {
- return rv;
- }
+ sibling = mHTMLEditor->GetNextHTMLSibling(&aNode);
}
if (sibling) {
- bool isBlock;
- NS_ENSURE_STATE(mHTMLEditor);
- rv = mHTMLEditor->NodeIsBlockStatic(sibling, &isBlock);
- NS_ENSURE_SUCCESS(rv, rv);
- if (isBlock || TextEditUtils::IsBreak(sibling)) {
+ if (IsBlockNode(*sibling) || sibling->IsHTMLElement(nsGkAtoms::br)) {
foundCR = true;
}
} else {
foundCR = true;
}
}
if (!foundCR) {
int32_t offset = 0;
if (!aStarts) {
- nsCOMPtr<nsINode> node = do_QueryInterface(aNode);
- NS_ENSURE_STATE(node);
- offset = node->GetChildCount();
- }
- nsCOMPtr<nsIDOMNode> brNode;
+ offset = aNode.GetChildCount();
+ }
NS_ENSURE_STATE(mHTMLEditor);
- rv = mHTMLEditor->CreateBR(aNode, offset, address_of(brNode));
- NS_ENSURE_SUCCESS(rv, rv);
+ RefPtr<Element> brNode = mHTMLEditor->CreateBR(&aNode, offset);
+ if (NS_WARN_IF(!brNode)) {
+ return NS_ERROR_FAILURE;
+ }
}
return NS_OK;
}
nsresult
-HTMLEditRules::MakeSureElemStartsOrEndsOnCR(nsIDOMNode* aNode)
+HTMLEditRules::MakeSureElemStartsOrEndsOnCR(nsINode& aNode)
{
nsresult rv = MakeSureElemStartsOrEndsOnCR(aNode, false);
NS_ENSURE_SUCCESS(rv, rv);
return MakeSureElemStartsOrEndsOnCR(aNode, true);
}
nsresult
HTMLEditRules::AlignBlock(Element& aElement,
@@ -8499,29 +8476,29 @@ HTMLEditRules::AlignBlock(Element& aElem
if (!IsBlockNode(aElement) && !aElement.IsHTMLElement(nsGkAtoms::hr)) {
// We deal only with blocks; early way out
return NS_OK;
}
NS_ENSURE_STATE(mHTMLEditor);
RefPtr<HTMLEditor> htmlEditor(mHTMLEditor);
- nsresult rv = RemoveAlignment(aElement.AsDOMNode(), aAlignType,
+ nsresult rv = RemoveAlignment(aElement, aAlignType,
aContentsOnly == ContentsOnly::yes);
NS_ENSURE_SUCCESS(rv, rv);
if (htmlEditor->IsCSSEnabled()) {
// Let's use CSS alignment; we use margin-left and margin-right for tables
// and text-align for other block-level elements
rv = htmlEditor->SetAttributeOrEquivalent(
&aElement, nsGkAtoms::align, aAlignType, false);
NS_ENSURE_SUCCESS(rv, rv);
} else {
// HTML case; this code is supposed to be called ONLY if the element
// supports the align attribute but we'll never know...
- if (HTMLEditUtils::SupportsAlignAttr(aElement.AsDOMNode())) {
+ if (HTMLEditUtils::SupportsAlignAttr(aElement)) {
rv = htmlEditor->SetAttribute(&aElement, nsGkAtoms::align, aAlignType);
NS_ENSURE_SUCCESS(rv, rv);
}
}
return NS_OK;
}
nsresult
--- a/editor/libeditor/HTMLEditRules.h
+++ b/editor/libeditor/HTMLEditRules.h
@@ -96,17 +96,17 @@ public:
nsresult aResult) override;
NS_IMETHOD DocumentModified() override;
nsresult GetListState(bool* aMixed, bool* aOL, bool* aUL, bool* aDL);
nsresult GetListItemState(bool* aMixed, bool* aLI, bool* aDT, bool* aDD);
nsresult GetIndentState(bool* aCanIndent, bool* aCanOutdent);
nsresult GetAlignment(bool* aMixed, nsIHTMLEditor::EAlignment* aAlign);
nsresult GetParagraphState(bool* aMixed, nsAString& outFormat);
- nsresult MakeSureElemStartsOrEndsOnCR(nsIDOMNode* aNode);
+ nsresult MakeSureElemStartsOrEndsOnCR(nsINode& aNode);
// nsIEditActionListener methods
NS_IMETHOD WillCreateNode(const nsAString& aTag, nsIDOMNode* aParent,
int32_t aPosition) override;
NS_IMETHOD DidCreateNode(const nsAString& aTag, nsIDOMNode* aNode,
nsIDOMNode* aParent, int32_t aPosition,
nsresult aResult) override;
@@ -398,19 +398,19 @@ protected:
bool InDifferentTableElements(nsINode* aNode1, nsINode* aNode2);
nsresult RemoveEmptyNodes();
nsresult SelectionEndpointInNode(nsINode* aNode, bool* aResult);
nsresult UpdateDocChangeRange(nsRange* aRange);
nsresult ConfirmSelectionInBody();
nsresult InsertMozBRIfNeeded(nsINode& aNode);
bool IsEmptyInline(nsINode& aNode);
bool ListIsEmptyLine(nsTArray<OwningNonNull<nsINode>>& arrayOfNodes);
- nsresult RemoveAlignment(nsIDOMNode* aNode, const nsAString& aAlignType,
+ nsresult RemoveAlignment(nsINode& aNode, const nsAString& aAlignType,
bool aChildrenOnly);
- nsresult MakeSureElemStartsOrEndsOnCR(nsIDOMNode* aNode, bool aStarts);
+ nsresult MakeSureElemStartsOrEndsOnCR(nsINode& aNode, bool aStarts);
enum class ContentsOnly { no, yes };
nsresult AlignBlock(Element& aElement,
const nsAString& aAlignType, ContentsOnly aContentsOnly);
enum class Change { minus, plus };
nsresult ChangeIndentation(Element& aElement, Change aChange);
void DocumentModifiedWorker();
/**
--- a/editor/libeditor/HTMLEditUtils.cpp
+++ b/editor/libeditor/HTMLEditUtils.cpp
@@ -126,25 +126,16 @@ HTMLEditUtils::IsHeader(nsIDOMNode* aNod
*/
bool
HTMLEditUtils::IsParagraph(nsIDOMNode* aNode)
{
return EditorBase::NodeIsType(aNode, nsGkAtoms::p);
}
/**
- * IsHR() returns true if aNode is an horizontal rule.
- */
-bool
-HTMLEditUtils::IsHR(nsIDOMNode* aNode)
-{
- return EditorBase::NodeIsType(aNode, nsGkAtoms::hr);
-}
-
-/**
* IsListItem() returns true if aNode is an html list item.
*/
bool
HTMLEditUtils::IsListItem(nsIDOMNode* aNode)
{
MOZ_ASSERT(aNode);
nsCOMPtr<nsINode> node = do_QueryInterface(aNode);
return node && IsListItem(node);
@@ -457,36 +448,34 @@ HTMLEditUtils::IsFormWidget(nsINode* aNo
nsGkAtoms::output,
nsGkAtoms::keygen,
nsGkAtoms::progress,
nsGkAtoms::meter,
nsGkAtoms::input);
}
bool
-HTMLEditUtils::SupportsAlignAttr(nsIDOMNode* aNode)
+HTMLEditUtils::SupportsAlignAttr(nsINode& aNode)
{
- MOZ_ASSERT(aNode);
- nsCOMPtr<nsIAtom> nodeAtom = EditorBase::GetTag(aNode);
- return (nodeAtom == nsGkAtoms::hr)
- || (nodeAtom == nsGkAtoms::table)
- || (nodeAtom == nsGkAtoms::tbody)
- || (nodeAtom == nsGkAtoms::tfoot)
- || (nodeAtom == nsGkAtoms::thead)
- || (nodeAtom == nsGkAtoms::tr)
- || (nodeAtom == nsGkAtoms::td)
- || (nodeAtom == nsGkAtoms::th)
- || (nodeAtom == nsGkAtoms::div)
- || (nodeAtom == nsGkAtoms::p)
- || (nodeAtom == nsGkAtoms::h1)
- || (nodeAtom == nsGkAtoms::h2)
- || (nodeAtom == nsGkAtoms::h3)
- || (nodeAtom == nsGkAtoms::h4)
- || (nodeAtom == nsGkAtoms::h5)
- || (nodeAtom == nsGkAtoms::h6);
+ return aNode.IsAnyOfHTMLElements(nsGkAtoms::hr,
+ nsGkAtoms::table,
+ nsGkAtoms::tbody,
+ nsGkAtoms::tfoot,
+ nsGkAtoms::thead,
+ nsGkAtoms::tr,
+ nsGkAtoms::td,
+ nsGkAtoms::th,
+ nsGkAtoms::div,
+ nsGkAtoms::p,
+ nsGkAtoms::h1,
+ nsGkAtoms::h2,
+ nsGkAtoms::h3,
+ nsGkAtoms::h4,
+ nsGkAtoms::h5,
+ nsGkAtoms::h6);
}
// We use bitmasks to test containment of elements. Elements are marked to be
// in certain groups by setting the mGroup member of the nsElementInfo struct
// to the corresponding GROUP_ values (OR'ed together). Similarly, elements are
// marked to allow containment of certain groups by setting the
// mCanContainGroups member of the nsElementInfo struct to the corresponding
// GROUP_ values (OR'ed together).
--- a/editor/libeditor/HTMLEditUtils.h
+++ b/editor/libeditor/HTMLEditUtils.h
@@ -20,17 +20,16 @@ public:
static bool IsInlineStyle(nsINode* aNode);
static bool IsInlineStyle(nsIDOMNode *aNode);
static bool IsFormatNode(nsINode* aNode);
static bool IsFormatNode(nsIDOMNode* aNode);
static bool IsNodeThatCanOutdent(nsIDOMNode* aNode);
static bool IsHeader(nsINode& aNode);
static bool IsHeader(nsIDOMNode* aNode);
static bool IsParagraph(nsIDOMNode* aNode);
- static bool IsHR(nsIDOMNode* aNode);
static bool IsListItem(nsINode* aNode);
static bool IsListItem(nsIDOMNode* aNode);
static bool IsTable(nsIDOMNode* aNode);
static bool IsTable(nsINode* aNode);
static bool IsTableRow(nsIDOMNode* aNode);
static bool IsTableElement(nsINode* aNode);
static bool IsTableElement(nsIDOMNode* aNode);
static bool IsTableElementButNotTable(nsINode* aNode);
@@ -53,17 +52,17 @@ public:
static bool IsNamedAnchor(nsIDOMNode* aNode);
static bool IsDiv(nsIDOMNode* aNode);
static bool IsMozDiv(nsINode* aNode);
static bool IsMozDiv(nsIDOMNode* aNode);
static bool IsMailCite(nsINode* aNode);
static bool IsMailCite(nsIDOMNode* aNode);
static bool IsFormWidget(nsINode* aNode);
static bool IsFormWidget(nsIDOMNode* aNode);
- static bool SupportsAlignAttr(nsIDOMNode* aNode);
+ static bool SupportsAlignAttr(nsINode& aNode);
static bool CanContain(int32_t aParent, int32_t aChild);
static bool IsContainer(int32_t aTag);
};
} // namespace mozilla
#endif // #ifndef HTMLEditUtils_h