mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 291789 part 1 - Make various nsHTMLEditUtils methods take nsINode instead of Element; r=ehsan
This commit is contained in:
parent
c80897316e
commit
bcae4447b0
@ -1146,8 +1146,7 @@ nsHTMLEditRules::AppendInnerFormatNodes(nsCOMArray<nsIDOMNode>& aArray,
|
||||
child;
|
||||
child = child->GetNextSibling()) {
|
||||
bool isBlock = IsBlockNode(child->AsDOMNode());
|
||||
bool isFormat = child->IsElement() &&
|
||||
nsHTMLEditUtils::IsFormatNode(child->AsElement());
|
||||
bool isFormat = nsHTMLEditUtils::IsFormatNode(child);
|
||||
if (isBlock && !isFormat) {
|
||||
// if it's a div, etc, recurse
|
||||
AppendInnerFormatNodes(aArray, child);
|
||||
@ -2813,8 +2812,7 @@ nsresult
|
||||
nsHTMLEditRules::DeleteNonTableElements(nsINode* aNode)
|
||||
{
|
||||
MOZ_ASSERT(aNode);
|
||||
if (!aNode->IsElement() ||
|
||||
!nsHTMLEditUtils::IsTableElementButNotTable(aNode->AsElement())) {
|
||||
if (!nsHTMLEditUtils::IsTableElementButNotTable(aNode)) {
|
||||
return mHTMLEditor->DeleteNode(aNode->AsDOMNode());
|
||||
}
|
||||
|
||||
@ -5839,7 +5837,7 @@ nsHTMLEditRules::LookInsideDivBQandList(nsCOMArray<nsIDOMNode>& aNodeArray)
|
||||
|
||||
while (curNode->IsElement() &&
|
||||
(curNode->AsElement()->IsHTML(nsGkAtoms::div) ||
|
||||
nsHTMLEditUtils::IsList(curNode->AsElement()) ||
|
||||
nsHTMLEditUtils::IsList(curNode) ||
|
||||
curNode->AsElement()->IsHTML(nsGkAtoms::blockquote))) {
|
||||
// dive as long as there is only one child, and it is a list, div, blockquote
|
||||
PRUint32 numChildren = mHTMLEditor->CountEditableChildren(curNode);
|
||||
@ -6205,15 +6203,14 @@ nsINode*
|
||||
nsHTMLEditRules::IsInListItem(nsINode* aNode)
|
||||
{
|
||||
NS_ENSURE_TRUE(aNode, nullptr);
|
||||
if (aNode->IsElement() && nsHTMLEditUtils::IsListItem(aNode->AsElement())) {
|
||||
if (nsHTMLEditUtils::IsListItem(aNode)) {
|
||||
return aNode;
|
||||
}
|
||||
|
||||
nsINode* parent = aNode->GetNodeParent();
|
||||
while (parent && mHTMLEditor->IsDescendantOfEditorRoot(parent) &&
|
||||
!(parent->IsElement() &&
|
||||
nsHTMLEditUtils::IsTableElement(parent->AsElement()))) {
|
||||
if (nsHTMLEditUtils::IsListItem(parent->AsElement())) {
|
||||
!nsHTMLEditUtils::IsTableElement(parent)) {
|
||||
if (nsHTMLEditUtils::IsListItem(parent)) {
|
||||
return parent;
|
||||
}
|
||||
parent = parent->GetNodeParent();
|
||||
|
@ -6,7 +6,7 @@
|
||||
#include "./../../mozilla-config.h" // for MOZ_MEDIA
|
||||
#include "mozilla/Assertions.h" // for MOZ_ASSERT, etc
|
||||
#include "mozilla/Util.h" // for ArrayLength
|
||||
#include "mozilla/dom/Element.h" // for Element
|
||||
#include "mozilla/dom/Element.h" // for Element, nsINode
|
||||
#include "nsAString.h" // for nsAString_internal::IsEmpty
|
||||
#include "nsCOMPtr.h" // for nsCOMPtr, operator==, etc
|
||||
#include "nsCaseTreatment.h"
|
||||
@ -30,9 +30,9 @@ using namespace mozilla;
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsBig(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsBig(nsIDOMNode* aNode)
|
||||
{
|
||||
return nsEditor::NodeIsType(node, nsEditProperty::big);
|
||||
return nsEditor::NodeIsType(aNode, nsEditProperty::big);
|
||||
}
|
||||
|
||||
|
||||
@ -40,18 +40,18 @@ nsHTMLEditUtils::IsBig(nsIDOMNode *node)
|
||||
// IsInlineStyle true if node is an inline style
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsInlineStyle(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsInlineStyle(nsIDOMNode* aNode)
|
||||
{
|
||||
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsInlineStyle");
|
||||
nsCOMPtr<dom::Element> element = do_QueryInterface(node);
|
||||
return element && IsInlineStyle(element);
|
||||
NS_PRECONDITION(aNode, "null parent passed to nsHTMLEditUtils::IsInlineStyle");
|
||||
nsCOMPtr<nsINode> node = do_QueryInterface(aNode);
|
||||
return node && IsInlineStyle(node);
|
||||
}
|
||||
|
||||
bool
|
||||
nsHTMLEditUtils::IsInlineStyle(dom::Element* aElement)
|
||||
nsHTMLEditUtils::IsInlineStyle(nsINode* aNode)
|
||||
{
|
||||
MOZ_ASSERT(aElement);
|
||||
nsIAtom* nodeAtom = aElement->Tag();
|
||||
MOZ_ASSERT(aNode);
|
||||
nsIAtom* nodeAtom = aNode->Tag();
|
||||
return (nodeAtom == nsEditProperty::b)
|
||||
|| (nodeAtom == nsEditProperty::i)
|
||||
|| (nodeAtom == nsEditProperty::u)
|
||||
@ -70,18 +70,18 @@ nsHTMLEditUtils::IsInlineStyle(dom::Element* aElement)
|
||||
// IsFormatNode true if node is a format node
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsFormatNode(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsFormatNode(nsIDOMNode* aNode)
|
||||
{
|
||||
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsFormatNode");
|
||||
nsCOMPtr<dom::Element> element = do_QueryInterface(node);
|
||||
return element && IsFormatNode(element);
|
||||
NS_PRECONDITION(aNode, "null parent passed to nsHTMLEditUtils::IsFormatNode");
|
||||
nsCOMPtr<nsINode> node = do_QueryInterface(aNode);
|
||||
return node && IsFormatNode(node);
|
||||
}
|
||||
|
||||
bool
|
||||
nsHTMLEditUtils::IsFormatNode(dom::Element* aElement)
|
||||
nsHTMLEditUtils::IsFormatNode(nsINode* aNode)
|
||||
{
|
||||
MOZ_ASSERT(aElement);
|
||||
nsIAtom* nodeAtom = aElement->Tag();
|
||||
MOZ_ASSERT(aNode);
|
||||
nsIAtom* nodeAtom = aNode->Tag();
|
||||
return (nodeAtom == nsEditProperty::p)
|
||||
|| (nodeAtom == nsEditProperty::pre)
|
||||
|| (nodeAtom == nsEditProperty::h1)
|
||||
@ -97,10 +97,10 @@ nsHTMLEditUtils::IsFormatNode(dom::Element* aElement)
|
||||
// IsNodeThatCanOutdent true if node is a list, list item, or blockquote
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsNodeThatCanOutdent(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsNodeThatCanOutdent(nsIDOMNode* aNode)
|
||||
{
|
||||
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsNodeThatCanOutdent");
|
||||
nsCOMPtr<nsIAtom> nodeAtom = nsEditor::GetTag(node);
|
||||
NS_PRECONDITION(aNode, "null parent passed to nsHTMLEditUtils::IsNodeThatCanOutdent");
|
||||
nsCOMPtr<nsIAtom> nodeAtom = nsEditor::GetTag(aNode);
|
||||
return (nodeAtom == nsEditProperty::ul)
|
||||
|| (nodeAtom == nsEditProperty::ol)
|
||||
|| (nodeAtom == nsEditProperty::dl)
|
||||
@ -113,9 +113,9 @@ nsHTMLEditUtils::IsNodeThatCanOutdent(nsIDOMNode *node)
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsSmall(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsSmall(nsIDOMNode* aNode)
|
||||
{
|
||||
return nsEditor::NodeIsType(node, nsEditProperty::small);
|
||||
return nsEditor::NodeIsType(aNode, nsEditProperty::small);
|
||||
}
|
||||
|
||||
|
||||
@ -127,10 +127,10 @@ nsHTMLEditUtils::IsSmall(nsIDOMNode *node)
|
||||
// IsHeader: true if node an html header
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsHeader(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsHeader(nsIDOMNode* aNode)
|
||||
{
|
||||
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsHeader");
|
||||
nsCOMPtr<nsIAtom> nodeAtom = nsEditor::GetTag(node);
|
||||
NS_PRECONDITION(aNode, "null parent passed to nsHTMLEditUtils::IsHeader");
|
||||
nsCOMPtr<nsIAtom> nodeAtom = nsEditor::GetTag(aNode);
|
||||
return (nodeAtom == nsEditProperty::h1)
|
||||
|| (nodeAtom == nsEditProperty::h2)
|
||||
|| (nodeAtom == nsEditProperty::h3)
|
||||
@ -144,9 +144,9 @@ nsHTMLEditUtils::IsHeader(nsIDOMNode *node)
|
||||
// IsParagraph: true if node an html paragraph
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsParagraph(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsParagraph(nsIDOMNode* aNode)
|
||||
{
|
||||
return nsEditor::NodeIsType(node, nsEditProperty::p);
|
||||
return nsEditor::NodeIsType(aNode, nsEditProperty::p);
|
||||
}
|
||||
|
||||
|
||||
@ -154,9 +154,9 @@ nsHTMLEditUtils::IsParagraph(nsIDOMNode *node)
|
||||
// IsHR: true if node an horizontal rule
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsHR(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsHR(nsIDOMNode* aNode)
|
||||
{
|
||||
return nsEditor::NodeIsType(node, nsEditProperty::hr);
|
||||
return nsEditor::NodeIsType(aNode, nsEditProperty::hr);
|
||||
}
|
||||
|
||||
|
||||
@ -164,15 +164,15 @@ nsHTMLEditUtils::IsHR(nsIDOMNode *node)
|
||||
// IsListItem: true if node an html list item
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsListItem(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsListItem(nsIDOMNode* aNode)
|
||||
{
|
||||
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsListItem");
|
||||
nsCOMPtr<dom::Element> element = do_QueryInterface(node);
|
||||
return element && IsListItem(element);
|
||||
NS_PRECONDITION(aNode, "null parent passed to nsHTMLEditUtils::IsListItem");
|
||||
nsCOMPtr<nsINode> node = do_QueryInterface(aNode);
|
||||
return node && IsListItem(node);
|
||||
}
|
||||
|
||||
bool
|
||||
nsHTMLEditUtils::IsListItem(dom::Element* node)
|
||||
nsHTMLEditUtils::IsListItem(nsINode* node)
|
||||
{
|
||||
MOZ_ASSERT(node);
|
||||
nsCOMPtr<nsIAtom> nodeAtom = node->Tag();
|
||||
@ -186,15 +186,15 @@ nsHTMLEditUtils::IsListItem(dom::Element* node)
|
||||
// IsTableElement: true if node an html table, td, tr, ...
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsTableElement(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsTableElement(nsIDOMNode* aNode)
|
||||
{
|
||||
NS_PRECONDITION(node, "null node passed to nsHTMLEditor::IsTableElement");
|
||||
nsCOMPtr<dom::Element> element = do_QueryInterface(node);
|
||||
return element && IsTableElement(element);
|
||||
NS_PRECONDITION(aNode, "null node passed to nsHTMLEditor::IsTableElement");
|
||||
nsCOMPtr<nsINode> node = do_QueryInterface(aNode);
|
||||
return node && IsTableElement(node);
|
||||
}
|
||||
|
||||
bool
|
||||
nsHTMLEditUtils::IsTableElement(dom::Element* node)
|
||||
nsHTMLEditUtils::IsTableElement(nsINode* node)
|
||||
{
|
||||
MOZ_ASSERT(node);
|
||||
nsCOMPtr<nsIAtom> nodeAtom = node->Tag();
|
||||
@ -212,15 +212,15 @@ nsHTMLEditUtils::IsTableElement(dom::Element* node)
|
||||
// IsTableElementButNotTable: true if node an html td, tr, ... (doesn't include table)
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsTableElementButNotTable(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsTableElementButNotTable(nsIDOMNode* aNode)
|
||||
{
|
||||
NS_PRECONDITION(node, "null node passed to nsHTMLEditor::IsTableElementButNotTable");
|
||||
nsCOMPtr<dom::Element> element = do_QueryInterface(node);
|
||||
return element && IsTableElementButNotTable(element);
|
||||
NS_PRECONDITION(aNode, "null node passed to nsHTMLEditor::IsTableElementButNotTable");
|
||||
nsCOMPtr<nsINode> node = do_QueryInterface(aNode);
|
||||
return node && IsTableElementButNotTable(node);
|
||||
}
|
||||
|
||||
bool
|
||||
nsHTMLEditUtils::IsTableElementButNotTable(dom::Element* aNode)
|
||||
nsHTMLEditUtils::IsTableElementButNotTable(nsINode* aNode)
|
||||
{
|
||||
MOZ_ASSERT(aNode);
|
||||
nsCOMPtr<nsIAtom> nodeAtom = aNode->Tag();
|
||||
@ -237,18 +237,18 @@ nsHTMLEditUtils::IsTableElementButNotTable(dom::Element* aNode)
|
||||
// IsTable: true if node an html table
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsTable(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsTable(nsIDOMNode* aNode)
|
||||
{
|
||||
return nsEditor::NodeIsType(node, nsEditProperty::table);
|
||||
return nsEditor::NodeIsType(aNode, nsEditProperty::table);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// IsTableRow: true if node an html tr
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsTableRow(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsTableRow(nsIDOMNode* aNode)
|
||||
{
|
||||
return nsEditor::NodeIsType(node, nsEditProperty::tr);
|
||||
return nsEditor::NodeIsType(aNode, nsEditProperty::tr);
|
||||
}
|
||||
|
||||
|
||||
@ -256,15 +256,15 @@ nsHTMLEditUtils::IsTableRow(nsIDOMNode *node)
|
||||
// IsTableCell: true if node an html td or th
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsTableCell(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsTableCell(nsIDOMNode* aNode)
|
||||
{
|
||||
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsTableCell");
|
||||
nsCOMPtr<dom::Element> element = do_QueryInterface(node);
|
||||
return element && IsTableCell(element);
|
||||
NS_PRECONDITION(aNode, "null parent passed to nsHTMLEditUtils::IsTableCell");
|
||||
nsCOMPtr<nsINode> node = do_QueryInterface(aNode);
|
||||
return node && IsTableCell(node);
|
||||
}
|
||||
|
||||
bool
|
||||
nsHTMLEditUtils::IsTableCell(dom::Element* node)
|
||||
nsHTMLEditUtils::IsTableCell(nsINode* node)
|
||||
{
|
||||
MOZ_ASSERT(node);
|
||||
nsCOMPtr<nsIAtom> nodeAtom = node->Tag();
|
||||
@ -277,10 +277,10 @@ nsHTMLEditUtils::IsTableCell(dom::Element* node)
|
||||
// IsTableCell: true if node an html td or th
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsTableCellOrCaption(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsTableCellOrCaption(nsIDOMNode* aNode)
|
||||
{
|
||||
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsTableCell");
|
||||
nsCOMPtr<nsIAtom> nodeAtom = nsEditor::GetTag(node);
|
||||
NS_PRECONDITION(aNode, "null parent passed to nsHTMLEditUtils::IsTableCell");
|
||||
nsCOMPtr<nsIAtom> nodeAtom = nsEditor::GetTag(aNode);
|
||||
return (nodeAtom == nsEditProperty::td)
|
||||
|| (nodeAtom == nsEditProperty::th)
|
||||
|| (nodeAtom == nsEditProperty::caption);
|
||||
@ -291,15 +291,15 @@ nsHTMLEditUtils::IsTableCellOrCaption(nsIDOMNode *node)
|
||||
// IsList: true if node an html list
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsList(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsList(nsIDOMNode* aNode)
|
||||
{
|
||||
NS_PRECONDITION(node, "null parent passed to nsHTMLEditUtils::IsList");
|
||||
nsCOMPtr<dom::Element> element = do_QueryInterface(node);
|
||||
return element && IsList(element);
|
||||
NS_PRECONDITION(aNode, "null parent passed to nsHTMLEditUtils::IsList");
|
||||
nsCOMPtr<nsINode> node = do_QueryInterface(aNode);
|
||||
return node && IsList(node);
|
||||
}
|
||||
|
||||
bool
|
||||
nsHTMLEditUtils::IsList(dom::Element* node)
|
||||
nsHTMLEditUtils::IsList(nsINode* node)
|
||||
{
|
||||
MOZ_ASSERT(node);
|
||||
nsCOMPtr<nsIAtom> nodeAtom = node->Tag();
|
||||
@ -313,9 +313,9 @@ nsHTMLEditUtils::IsList(dom::Element* node)
|
||||
// IsOrderedList: true if node an html ordered list
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsOrderedList(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsOrderedList(nsIDOMNode* aNode)
|
||||
{
|
||||
return nsEditor::NodeIsType(node, nsEditProperty::ol);
|
||||
return nsEditor::NodeIsType(aNode, nsEditProperty::ol);
|
||||
}
|
||||
|
||||
|
||||
@ -323,9 +323,9 @@ nsHTMLEditUtils::IsOrderedList(nsIDOMNode *node)
|
||||
// IsUnorderedList: true if node an html unordered list
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsUnorderedList(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsUnorderedList(nsIDOMNode* aNode)
|
||||
{
|
||||
return nsEditor::NodeIsType(node, nsEditProperty::ul);
|
||||
return nsEditor::NodeIsType(aNode, nsEditProperty::ul);
|
||||
}
|
||||
|
||||
|
||||
@ -333,9 +333,9 @@ nsHTMLEditUtils::IsUnorderedList(nsIDOMNode *node)
|
||||
// IsBlockquote: true if node an html blockquote node
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsBlockquote(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsBlockquote(nsIDOMNode* aNode)
|
||||
{
|
||||
return nsEditor::NodeIsType(node, nsEditProperty::blockquote);
|
||||
return nsEditor::NodeIsType(aNode, nsEditProperty::blockquote);
|
||||
}
|
||||
|
||||
|
||||
@ -343,9 +343,9 @@ nsHTMLEditUtils::IsBlockquote(nsIDOMNode *node)
|
||||
// IsPre: true if node an html pre node
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsPre(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsPre(nsIDOMNode* aNode)
|
||||
{
|
||||
return nsEditor::NodeIsType(node, nsEditProperty::pre);
|
||||
return nsEditor::NodeIsType(aNode, nsEditProperty::pre);
|
||||
}
|
||||
|
||||
|
||||
@ -353,9 +353,9 @@ nsHTMLEditUtils::IsPre(nsIDOMNode *node)
|
||||
// IsImage: true if node an html image node
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsImage(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsImage(nsIDOMNode* aNode)
|
||||
{
|
||||
return nsEditor::NodeIsType(node, nsEditProperty::img);
|
||||
return nsEditor::NodeIsType(aNode, nsEditProperty::img);
|
||||
}
|
||||
|
||||
bool
|
||||
@ -375,21 +375,21 @@ nsHTMLEditUtils::IsLink(nsIDOMNode *aNode)
|
||||
bool
|
||||
nsHTMLEditUtils::IsNamedAnchor(nsIDOMNode *aNode)
|
||||
{
|
||||
nsCOMPtr<dom::Element> element = do_QueryInterface(aNode);
|
||||
return element && IsNamedAnchor(element);
|
||||
nsCOMPtr<nsINode> node = do_QueryInterface(aNode);
|
||||
return node && IsNamedAnchor(node);
|
||||
}
|
||||
|
||||
bool
|
||||
nsHTMLEditUtils::IsNamedAnchor(dom::Element* aNode)
|
||||
nsHTMLEditUtils::IsNamedAnchor(nsINode* aNode)
|
||||
{
|
||||
MOZ_ASSERT(aNode);
|
||||
if (!aNode->IsHTML(nsGkAtoms::a)) {
|
||||
if (!aNode->IsElement() || !aNode->AsElement()->IsHTML(nsGkAtoms::a)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
nsAutoString text;
|
||||
return aNode->GetAttr(kNameSpaceID_None, nsGkAtoms::name, text) &&
|
||||
!text.IsEmpty();
|
||||
return aNode->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::name,
|
||||
text) && !text.IsEmpty();
|
||||
}
|
||||
|
||||
|
||||
@ -397,9 +397,9 @@ nsHTMLEditUtils::IsNamedAnchor(dom::Element* aNode)
|
||||
// IsDiv: true if node an html div node
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsDiv(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsDiv(nsIDOMNode* aNode)
|
||||
{
|
||||
return nsEditor::NodeIsType(node, nsEditProperty::div);
|
||||
return nsEditor::NodeIsType(aNode, nsEditProperty::div);
|
||||
}
|
||||
|
||||
|
||||
@ -407,9 +407,9 @@ nsHTMLEditUtils::IsDiv(nsIDOMNode *node)
|
||||
// IsMozDiv: true if node an html div node with type = _moz
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsMozDiv(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsMozDiv(nsIDOMNode* aNode)
|
||||
{
|
||||
if (IsDiv(node) && nsTextEditUtils::HasMozAttr(node)) return true;
|
||||
if (IsDiv(aNode) && nsTextEditUtils::HasMozAttr(aNode)) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -422,24 +422,28 @@ bool
|
||||
nsHTMLEditUtils::IsMailCite(nsIDOMNode* aNode)
|
||||
{
|
||||
NS_PRECONDITION(aNode, "null parent passed to nsHTMLEditUtils::IsMailCite");
|
||||
nsCOMPtr<dom::Element> element = do_QueryInterface(aNode);
|
||||
return element && IsMailCite(element);
|
||||
nsCOMPtr<nsINode> node = do_QueryInterface(aNode);
|
||||
return node && IsMailCite(node);
|
||||
}
|
||||
|
||||
bool
|
||||
nsHTMLEditUtils::IsMailCite(dom::Element* aElement)
|
||||
nsHTMLEditUtils::IsMailCite(nsINode* aNode)
|
||||
{
|
||||
MOZ_ASSERT(aElement);
|
||||
MOZ_ASSERT(aNode);
|
||||
|
||||
// don't ask me why, but our html mailcites are id'd by "type=cite"...
|
||||
if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type,
|
||||
NS_LITERAL_STRING("cite"), eIgnoreCase)) {
|
||||
if (aNode->IsElement() &&
|
||||
aNode->AsElement()->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type,
|
||||
NS_LITERAL_STRING("cite"),
|
||||
eIgnoreCase)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// ... but our plaintext mailcites by "_moz_quote=true". go figure.
|
||||
if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::mozquote,
|
||||
NS_LITERAL_STRING("true"), eIgnoreCase)) {
|
||||
if (aNode->IsElement() &&
|
||||
aNode->AsElement()->AttrValueIs(kNameSpaceID_None, nsGkAtoms::mozquote,
|
||||
NS_LITERAL_STRING("true"),
|
||||
eIgnoreCase)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -451,18 +455,18 @@ nsHTMLEditUtils::IsMailCite(dom::Element* aElement)
|
||||
// IsFormWidget: true if node is a form widget of some kind
|
||||
//
|
||||
bool
|
||||
nsHTMLEditUtils::IsFormWidget(nsIDOMNode *node)
|
||||
nsHTMLEditUtils::IsFormWidget(nsIDOMNode* aNode)
|
||||
{
|
||||
NS_PRECONDITION(node, "null node passed to nsHTMLEditUtils::IsFormWidget");
|
||||
nsCOMPtr<dom::Element> element = do_QueryInterface(node);
|
||||
return element && IsFormWidget(element);
|
||||
NS_PRECONDITION(aNode, "null node passed to nsHTMLEditUtils::IsFormWidget");
|
||||
nsCOMPtr<nsINode> node = do_QueryInterface(aNode);
|
||||
return node && IsFormWidget(node);
|
||||
}
|
||||
|
||||
bool
|
||||
nsHTMLEditUtils::IsFormWidget(dom::Element* node)
|
||||
nsHTMLEditUtils::IsFormWidget(nsINode* aNode)
|
||||
{
|
||||
MOZ_ASSERT(node);
|
||||
nsCOMPtr<nsIAtom> nodeAtom = node->Tag();
|
||||
MOZ_ASSERT(aNode);
|
||||
nsCOMPtr<nsIAtom> nodeAtom = aNode->Tag();
|
||||
return (nodeAtom == nsEditProperty::textarea)
|
||||
|| (nodeAtom == nsEditProperty::select)
|
||||
|| (nodeAtom == nsEditProperty::button)
|
||||
@ -474,7 +478,7 @@ nsHTMLEditUtils::IsFormWidget(dom::Element* node)
|
||||
}
|
||||
|
||||
bool
|
||||
nsHTMLEditUtils::SupportsAlignAttr(nsIDOMNode * aNode)
|
||||
nsHTMLEditUtils::SupportsAlignAttr(nsIDOMNode* aNode)
|
||||
{
|
||||
NS_PRECONDITION(aNode, "null node passed to nsHTMLEditUtils::SupportsAlignAttr");
|
||||
nsCOMPtr<nsIAtom> nodeAtom = nsEditor::GetTag(aNode);
|
||||
|
@ -8,13 +8,8 @@
|
||||
|
||||
#include "prtypes.h" // for PRInt32
|
||||
|
||||
namespace mozilla {
|
||||
namespace dom {
|
||||
class Element;
|
||||
} // namespace dom
|
||||
} // namespace mozilla
|
||||
|
||||
class nsIDOMNode;
|
||||
class nsINode;
|
||||
|
||||
class nsHTMLEditUtils
|
||||
{
|
||||
@ -24,26 +19,26 @@ public:
|
||||
static bool IsSmall(nsIDOMNode *aNode);
|
||||
|
||||
// from nsHTMLEditRules:
|
||||
static bool IsInlineStyle(mozilla::dom::Element* aNode);
|
||||
static bool IsInlineStyle(nsINode* aNode);
|
||||
static bool IsInlineStyle(nsIDOMNode *aNode);
|
||||
static bool IsFormatNode(mozilla::dom::Element* aNode);
|
||||
static bool IsFormatNode(nsINode* aNode);
|
||||
static bool IsFormatNode(nsIDOMNode *aNode);
|
||||
static bool IsNodeThatCanOutdent(nsIDOMNode *aNode);
|
||||
static bool IsHeader(nsIDOMNode *aNode);
|
||||
static bool IsParagraph(nsIDOMNode *aNode);
|
||||
static bool IsHR(nsIDOMNode *aNode);
|
||||
static bool IsListItem(mozilla::dom::Element* aNode);
|
||||
static bool IsListItem(nsINode* aNode);
|
||||
static bool IsListItem(nsIDOMNode *aNode);
|
||||
static bool IsTable(nsIDOMNode *aNode);
|
||||
static bool IsTableRow(nsIDOMNode *aNode);
|
||||
static bool IsTableElement(mozilla::dom::Element* aNode);
|
||||
static bool IsTableElement(nsINode* aNode);
|
||||
static bool IsTableElement(nsIDOMNode *aNode);
|
||||
static bool IsTableElementButNotTable(mozilla::dom::Element* aNode);
|
||||
static bool IsTableElementButNotTable(nsINode* aNode);
|
||||
static bool IsTableElementButNotTable(nsIDOMNode *aNode);
|
||||
static bool IsTableCell(mozilla::dom::Element* node);
|
||||
static bool IsTableCell(nsINode* node);
|
||||
static bool IsTableCell(nsIDOMNode *aNode);
|
||||
static bool IsTableCellOrCaption(nsIDOMNode *aNode);
|
||||
static bool IsList(mozilla::dom::Element* aNode);
|
||||
static bool IsList(nsINode* aNode);
|
||||
static bool IsList(nsIDOMNode *aNode);
|
||||
static bool IsOrderedList(nsIDOMNode *aNode);
|
||||
static bool IsUnorderedList(nsIDOMNode *aNode);
|
||||
@ -52,13 +47,13 @@ public:
|
||||
static bool IsAnchor(nsIDOMNode *aNode);
|
||||
static bool IsImage(nsIDOMNode *aNode);
|
||||
static bool IsLink(nsIDOMNode *aNode);
|
||||
static bool IsNamedAnchor(mozilla::dom::Element* aNode);
|
||||
static bool IsNamedAnchor(nsINode* aNode);
|
||||
static bool IsNamedAnchor(nsIDOMNode *aNode);
|
||||
static bool IsDiv(nsIDOMNode *aNode);
|
||||
static bool IsMozDiv(nsIDOMNode *aNode);
|
||||
static bool IsMailCite(mozilla::dom::Element* aNode);
|
||||
static bool IsMailCite(nsINode* aNode);
|
||||
static bool IsMailCite(nsIDOMNode *aNode);
|
||||
static bool IsFormWidget(mozilla::dom::Element* aNode);
|
||||
static bool IsFormWidget(nsINode* aNode);
|
||||
static bool IsFormWidget(nsIDOMNode *aNode);
|
||||
static bool SupportsAlignAttr(nsIDOMNode *aNode);
|
||||
static bool CanContain(PRInt32 aParent, PRInt32 aChild);
|
||||
|
@ -4465,20 +4465,18 @@ nsHTMLEditor::IsEmptyNodeImpl(nsINode* aNode,
|
||||
// want to treat them as such. Also, don't call ListItems or table
|
||||
// cells empty if caller desires. Form Widgets not empty.
|
||||
if (!IsContainer(aNode->AsDOMNode()) ||
|
||||
(aNode->IsElement() &&
|
||||
(nsHTMLEditUtils::IsNamedAnchor(aNode->AsElement()) ||
|
||||
nsHTMLEditUtils::IsFormWidget(aNode->AsElement()) ||
|
||||
(aListOrCellNotEmpty &&
|
||||
(nsHTMLEditUtils::IsListItem(aNode->AsElement()) ||
|
||||
nsHTMLEditUtils::IsTableCell(aNode->AsElement())))))) {
|
||||
(nsHTMLEditUtils::IsNamedAnchor(aNode) ||
|
||||
nsHTMLEditUtils::IsFormWidget(aNode) ||
|
||||
(aListOrCellNotEmpty &&
|
||||
(nsHTMLEditUtils::IsListItem(aNode) ||
|
||||
nsHTMLEditUtils::IsTableCell(aNode))))) {
|
||||
*outIsEmptyNode = false;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// need this for later
|
||||
bool isListItemOrCell = aNode->IsElement() &&
|
||||
(nsHTMLEditUtils::IsListItem(aNode->AsElement()) ||
|
||||
nsHTMLEditUtils::IsTableCell(aNode->AsElement()));
|
||||
bool isListItemOrCell = nsHTMLEditUtils::IsListItem(aNode) ||
|
||||
nsHTMLEditUtils::IsTableCell(aNode);
|
||||
|
||||
// loop over children of node. if no children, or all children are either
|
||||
// empty text nodes or non-editable, then node qualifies as empty
|
||||
@ -4510,12 +4508,13 @@ nsHTMLEditor::IsEmptyNodeImpl(nsINode* aNode,
|
||||
// if they contain other lists or tables
|
||||
if (child->IsElement()) {
|
||||
if (isListItemOrCell) {
|
||||
if (nsHTMLEditUtils::IsList(child->AsElement()) || child->IsHTML(nsGkAtoms::table)) {
|
||||
if (nsHTMLEditUtils::IsList(child) ||
|
||||
child->IsHTML(nsGkAtoms::table)) {
|
||||
// break out if we find we aren't empty
|
||||
*outIsEmptyNode = false;
|
||||
return NS_OK;
|
||||
}
|
||||
} else if (nsHTMLEditUtils::IsFormWidget(child->AsElement())) {
|
||||
} else if (nsHTMLEditUtils::IsFormWidget(child)) {
|
||||
// is it a form widget?
|
||||
// break out if we find we aren't empty
|
||||
*outIsEmptyNode = false;
|
||||
|
Loading…
Reference in New Issue
Block a user