mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 03:15:11 +00:00
Bug 1432186 part 12. Remove nsIDOMNode's previousSibling attribute. r=mccr8
MozReview-Commit-ID: 7UJFaxEnT9Q
This commit is contained in:
parent
e2ce75877d
commit
97302665b4
@ -532,16 +532,6 @@ nsINode::GetChildNodes(nsIDOMNodeList** aChildNodes)
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsINode::GetPreviousSibling(nsIDOMNode** aPrevSibling)
|
||||
{
|
||||
*aPrevSibling = nullptr;
|
||||
|
||||
nsIContent *sibling = GetPreviousSibling();
|
||||
|
||||
return sibling ? CallQueryInterface(sibling, aPrevSibling) : NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsINode::GetNextSibling(nsIDOMNode** aNextSibling)
|
||||
{
|
||||
|
@ -2078,7 +2078,6 @@ protected:
|
||||
// NS_FORWARD_NSIDOMNODE_TO_NSINODE_HELPER and for quickstubs.
|
||||
nsresult GetParentNode(nsIDOMNode** aParentNode);
|
||||
nsresult GetChildNodes(nsIDOMNodeList** aChildNodes);
|
||||
nsresult GetPreviousSibling(nsIDOMNode** aPrevSibling);
|
||||
nsresult GetNextSibling(nsIDOMNode** aNextSibling);
|
||||
nsresult GetOwnerDocument(nsIDOMDocument** aOwnerDocument);
|
||||
|
||||
@ -2275,10 +2274,6 @@ ToCanonicalSupports(nsINode* aPointer)
|
||||
{ \
|
||||
return nsINode::GetChildNodes(aChildNodes); \
|
||||
} \
|
||||
NS_IMETHOD GetPreviousSibling(nsIDOMNode** aPreviousSibling) __VA_ARGS__ override \
|
||||
{ \
|
||||
return nsINode::GetPreviousSibling(aPreviousSibling); \
|
||||
} \
|
||||
NS_IMETHOD GetNextSibling(nsIDOMNode** aNextSibling) __VA_ARGS__ override \
|
||||
{ \
|
||||
return nsINode::GetNextSibling(aNextSibling); \
|
||||
|
@ -738,7 +738,6 @@ nsXHTMLContentSerializer::SerializeLIValueAttribute(nsIContent* aElement,
|
||||
// It may not be the first LI child of OL but it's first in the selected range.
|
||||
// Note that we get into this condition only once per a OL.
|
||||
bool found = false;
|
||||
nsCOMPtr<nsIDOMNode> currNode = do_QueryInterface(aElement);
|
||||
nsAutoString valueStr;
|
||||
|
||||
olState state (0, false);
|
||||
@ -755,27 +754,21 @@ nsXHTMLContentSerializer::SerializeLIValueAttribute(nsIContent* aElement,
|
||||
int32_t offset = 0;
|
||||
|
||||
// Traverse previous siblings until we find one with "value" attribute.
|
||||
// offset keeps track of how many previous siblings we had tocurrNode traverse.
|
||||
// offset keeps track of how many previous siblings we had to traverse.
|
||||
nsIContent* currNode = aElement;
|
||||
while (currNode && !found) {
|
||||
nsCOMPtr<nsIDOMElement> currElement = do_QueryInterface(currNode);
|
||||
// currElement may be null if it were a text node.
|
||||
if (currElement) {
|
||||
nsAutoString tagName;
|
||||
currElement->GetTagName(tagName);
|
||||
if (tagName.LowerCaseEqualsLiteral("li")) {
|
||||
currElement->GetAttribute(NS_LITERAL_STRING("value"), valueStr);
|
||||
if (valueStr.IsEmpty())
|
||||
offset++;
|
||||
else {
|
||||
found = true;
|
||||
nsresult rv = NS_OK;
|
||||
startVal = valueStr.ToInteger(&rv);
|
||||
}
|
||||
if (currNode->IsHTMLElement(nsGkAtoms::li)) {
|
||||
currNode->AsElement()->GetAttr(kNameSpaceID_None,
|
||||
nsGkAtoms::value, valueStr);
|
||||
if (valueStr.IsEmpty()) {
|
||||
offset++;
|
||||
} else {
|
||||
found = true;
|
||||
nsresult rv = NS_OK;
|
||||
startVal = valueStr.ToInteger(&rv);
|
||||
}
|
||||
}
|
||||
nsCOMPtr<nsIDOMNode> tmp;
|
||||
currNode->GetPreviousSibling(getter_AddRefs(tmp));
|
||||
currNode.swap(tmp);
|
||||
currNode = currNode->GetPreviousSibling();
|
||||
}
|
||||
// If LI was not having "value", Set the "value" attribute for it.
|
||||
// Note that We are at the first LI in the selected range of OL.
|
||||
|
@ -34,7 +34,6 @@ interface nsIDOMNode : nsISupports
|
||||
|
||||
readonly attribute nsIDOMNode parentNode;
|
||||
readonly attribute nsIDOMNodeList childNodes;
|
||||
readonly attribute nsIDOMNode previousSibling;
|
||||
readonly attribute nsIDOMNode nextSibling;
|
||||
// Modified in DOM Level 2:
|
||||
readonly attribute nsIDOMDocument ownerDocument;
|
||||
|
@ -3545,7 +3545,7 @@ HTMLEditor::CollapseAdjacentTextNodes(nsRange* aInRange)
|
||||
{
|
||||
NS_ENSURE_TRUE(aInRange, NS_ERROR_NULL_POINTER);
|
||||
AutoTransactionsConserveSelection dontChangeMySelection(this);
|
||||
nsTArray<nsCOMPtr<nsIDOMNode> > textNodes;
|
||||
nsTArray<nsCOMPtr<nsINode>> textNodes;
|
||||
// we can't actually do anything during iteration, so store the text nodes in an array
|
||||
// don't bother ref counting them because we know we can hold them for the
|
||||
// lifetime of this method
|
||||
@ -3562,9 +3562,8 @@ HTMLEditor::CollapseAdjacentTextNodes(nsRange* aInRange)
|
||||
while (!iter->IsDone()) {
|
||||
nsINode* node = iter->GetCurrentNode();
|
||||
if (node->NodeType() == nsIDOMNode::TEXT_NODE &&
|
||||
IsEditable(static_cast<nsIContent*>(node))) {
|
||||
nsCOMPtr<nsIDOMNode> domNode = do_QueryInterface(node);
|
||||
textNodes.AppendElement(domNode);
|
||||
IsEditable(node->AsContent())) {
|
||||
textNodes.AppendElement(node);
|
||||
}
|
||||
|
||||
iter->Next();
|
||||
@ -3574,20 +3573,17 @@ HTMLEditor::CollapseAdjacentTextNodes(nsRange* aInRange)
|
||||
// NOTE: assumption that JoinNodes keeps the righthand node
|
||||
while (textNodes.Length() > 1) {
|
||||
// we assume a textNodes entry can't be nullptr
|
||||
nsIDOMNode *leftTextNode = textNodes[0];
|
||||
nsIDOMNode *rightTextNode = textNodes[1];
|
||||
nsINode* leftTextNode = textNodes[0];
|
||||
nsINode* rightTextNode = textNodes[1];
|
||||
NS_ASSERTION(leftTextNode && rightTextNode,"left or rightTextNode null in CollapseAdjacentTextNodes");
|
||||
|
||||
// get the prev sibling of the right node, and see if its leftTextNode
|
||||
nsCOMPtr<nsIDOMNode> prevSibOfRightNode;
|
||||
rv = rightTextNode->GetPreviousSibling(getter_AddRefs(prevSibOfRightNode));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
nsCOMPtr<nsINode> prevSibOfRightNode = rightTextNode->GetPreviousSibling();
|
||||
if (prevSibOfRightNode && prevSibOfRightNode == leftTextNode) {
|
||||
nsCOMPtr<nsIDOMNode> parent;
|
||||
rv = rightTextNode->GetParentNode(getter_AddRefs(parent));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
nsCOMPtr<nsINode> parent = rightTextNode->GetParentNode();
|
||||
NS_ENSURE_TRUE(parent, NS_ERROR_NULL_POINTER);
|
||||
rv = JoinNodes(leftTextNode, rightTextNode, parent);
|
||||
rv = JoinNodes(leftTextNode->AsDOMNode(), rightTextNode->AsDOMNode(),
|
||||
parent->AsDOMNode());
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
||||
|
@ -193,10 +193,9 @@ nsFilteredContentIterator::First()
|
||||
}
|
||||
|
||||
nsINode *currentNode = mCurrentIterator->GetCurrentNode();
|
||||
nsCOMPtr<nsIDOMNode> node(do_QueryInterface(currentNode));
|
||||
|
||||
bool didCross;
|
||||
CheckAdvNode(node, didCross, eForward);
|
||||
CheckAdvNode(currentNode, didCross, eForward);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------
|
||||
@ -224,10 +223,9 @@ nsFilteredContentIterator::Last()
|
||||
}
|
||||
|
||||
nsINode *currentNode = mCurrentIterator->GetCurrentNode();
|
||||
nsCOMPtr<nsIDOMNode> node(do_QueryInterface(currentNode));
|
||||
|
||||
bool didCross;
|
||||
CheckAdvNode(node, didCross, eBackward);
|
||||
CheckAdvNode(currentNode, didCross, eBackward);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
@ -284,12 +282,13 @@ ContentIsInTraversalRange(nsIContent* aContent, bool aIsPreMode,
|
||||
}
|
||||
|
||||
static bool
|
||||
ContentIsInTraversalRange(nsRange* aRange, nsIDOMNode* aNextNode, bool aIsPreMode)
|
||||
ContentIsInTraversalRange(nsRange* aRange, nsIContent* aNextContent, bool aIsPreMode)
|
||||
{
|
||||
nsCOMPtr<nsIContent> content(do_QueryInterface(aNextNode));
|
||||
NS_ENSURE_TRUE(content && aRange, false);
|
||||
// XXXbz we have a caller below (in AdvanceNode) who passes null for
|
||||
// aNextContent!
|
||||
NS_ENSURE_TRUE(aNextContent && aRange, false);
|
||||
|
||||
return ContentIsInTraversalRange(content, aIsPreMode,
|
||||
return ContentIsInTraversalRange(aNextContent, aIsPreMode,
|
||||
aRange->GetStartContainer(),
|
||||
static_cast<int32_t>(aRange->StartOffset()),
|
||||
aRange->GetEndContainer(),
|
||||
@ -299,19 +298,20 @@ ContentIsInTraversalRange(nsRange* aRange, nsIDOMNode* aNextNode, bool aIsPreMod
|
||||
//------------------------------------------------------------
|
||||
// Helper function to advance to the next or previous node
|
||||
nsresult
|
||||
nsFilteredContentIterator::AdvanceNode(nsIDOMNode* aNode, nsIDOMNode*& aNewNode, eDirectionType aDir)
|
||||
nsFilteredContentIterator::AdvanceNode(nsINode* aNode, nsINode*& aNewNode, eDirectionType aDir)
|
||||
{
|
||||
nsCOMPtr<nsIDOMNode> nextNode;
|
||||
nsCOMPtr<nsIContent> nextNode;
|
||||
if (aDir == eForward) {
|
||||
aNode->GetNextSibling(getter_AddRefs(nextNode));
|
||||
nextNode = aNode->GetNextSibling();
|
||||
} else {
|
||||
aNode->GetPreviousSibling(getter_AddRefs(nextNode));
|
||||
nextNode = aNode->GetPreviousSibling();
|
||||
}
|
||||
|
||||
if (nextNode) {
|
||||
// If we got here, that means we found the nxt/prv node
|
||||
// make sure it is in our DOMRange
|
||||
bool intersects = ContentIsInTraversalRange(mRange, nextNode, aDir == eForward);
|
||||
bool intersects = ContentIsInTraversalRange(mRange, nextNode,
|
||||
aDir == eForward);
|
||||
if (intersects) {
|
||||
aNewNode = nextNode;
|
||||
NS_ADDREF(aNewNode);
|
||||
@ -319,11 +319,12 @@ nsFilteredContentIterator::AdvanceNode(nsIDOMNode* aNode, nsIDOMNode*& aNewNode,
|
||||
}
|
||||
} else {
|
||||
// The next node was null so we need to walk up the parent(s)
|
||||
nsCOMPtr<nsIDOMNode> parent;
|
||||
aNode->GetParentNode(getter_AddRefs(parent));
|
||||
nsCOMPtr<nsINode> parent = aNode->GetParentNode();
|
||||
NS_ASSERTION(parent, "parent can't be nullptr");
|
||||
|
||||
// Make sure the parent is in the DOMRange before going further
|
||||
// XXXbz why are we passing nextNode, not the parent??? If this gets fixed,
|
||||
// then ContentIsInTraversalRange can stop null-checking its second arg.
|
||||
bool intersects = ContentIsInTraversalRange(mRange, nextNode, aDir == eForward);
|
||||
if (intersects) {
|
||||
// Now find the nxt/prv node after/before this node
|
||||
@ -344,21 +345,21 @@ nsFilteredContentIterator::AdvanceNode(nsIDOMNode* aNode, nsIDOMNode*& aNewNode,
|
||||
//------------------------------------------------------------
|
||||
// Helper function to see if the next/prev node should be skipped
|
||||
void
|
||||
nsFilteredContentIterator::CheckAdvNode(nsIDOMNode* aNode, bool& aDidSkip, eDirectionType aDir)
|
||||
nsFilteredContentIterator::CheckAdvNode(nsINode* aNode, bool& aDidSkip, eDirectionType aDir)
|
||||
{
|
||||
aDidSkip = false;
|
||||
mIsOutOfRange = false;
|
||||
|
||||
if (aNode && mFilter) {
|
||||
nsCOMPtr<nsIDOMNode> currentNode = aNode;
|
||||
nsCOMPtr<nsINode> currentNode = aNode;
|
||||
bool skipIt;
|
||||
while (1) {
|
||||
nsresult rv = mFilter->Skip(aNode, &skipIt);
|
||||
nsresult rv = mFilter->Skip(aNode->AsDOMNode(), &skipIt);
|
||||
if (NS_SUCCEEDED(rv) && skipIt) {
|
||||
aDidSkip = true;
|
||||
// Get the next/prev node and then
|
||||
// see if we should skip that
|
||||
nsCOMPtr<nsIDOMNode> advNode;
|
||||
nsCOMPtr<nsINode> advNode;
|
||||
rv = AdvanceNode(aNode, *getter_AddRefs(advNode), aDir);
|
||||
if (NS_SUCCEEDED(rv) && advNode) {
|
||||
aNode = advNode;
|
||||
@ -404,8 +405,7 @@ nsFilteredContentIterator::Next()
|
||||
// don't check to see if we can skip it
|
||||
nsINode *currentNode = mCurrentIterator->GetCurrentNode();
|
||||
|
||||
nsCOMPtr<nsIDOMNode> node(do_QueryInterface(currentNode));
|
||||
CheckAdvNode(node, mDidSkip, eForward);
|
||||
CheckAdvNode(currentNode, mDidSkip, eForward);
|
||||
}
|
||||
|
||||
void
|
||||
@ -436,8 +436,7 @@ nsFilteredContentIterator::Prev()
|
||||
// don't check to see if we can skip it
|
||||
nsINode *currentNode = mCurrentIterator->GetCurrentNode();
|
||||
|
||||
nsCOMPtr<nsIDOMNode> node(do_QueryInterface(currentNode));
|
||||
CheckAdvNode(node, mDidSkip, eBackward);
|
||||
CheckAdvNode(currentNode, mDidSkip, eBackward);
|
||||
}
|
||||
|
||||
nsINode *
|
||||
|
@ -60,8 +60,8 @@ protected:
|
||||
|
||||
// enum to give us the direction
|
||||
typedef enum {eDirNotSet, eForward, eBackward} eDirectionType;
|
||||
nsresult AdvanceNode(nsIDOMNode* aNode, nsIDOMNode*& aNewNode, eDirectionType aDir);
|
||||
void CheckAdvNode(nsIDOMNode* aNode, bool& aDidSkip, eDirectionType aDir);
|
||||
nsresult AdvanceNode(nsINode* aNode, nsINode*& aNewNode, eDirectionType aDir);
|
||||
void CheckAdvNode(nsINode* aNode, bool& aDidSkip, eDirectionType aDir);
|
||||
nsresult SwitchDirections(bool aChangeToForward);
|
||||
|
||||
nsCOMPtr<nsIContentIterator> mCurrentIterator;
|
||||
|
@ -807,8 +807,8 @@ inDOMView::ContentInserted(nsIDocument *aDocument, nsIContent* aContainer,
|
||||
}
|
||||
|
||||
// get the previous sibling of the inserted content
|
||||
nsCOMPtr<nsIDOMNode> previous;
|
||||
GetRealPreviousSibling(childDOMNode, parent, getter_AddRefs(previous));
|
||||
// This should probably be done on the flattened tree instead.
|
||||
nsCOMPtr<nsIDOMNode> previous = do_QueryInterface(aChild->GetPreviousSibling());
|
||||
inDOMViewNode* previousNode = nullptr;
|
||||
|
||||
int32_t row = 0;
|
||||
@ -1191,15 +1191,6 @@ inDOMView::GetChildNodesFor(nsIDOMNode* aNode, nsCOMArray<nsIDOMNode>& aResult)
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
inDOMView::GetRealPreviousSibling(nsIDOMNode* aNode, nsIDOMNode* aRealParent, nsIDOMNode** aSibling)
|
||||
{
|
||||
// XXXjrh: This won't work for some cases during some situations where XBL insertion points
|
||||
// are involved. Fix me!
|
||||
aNode->GetPreviousSibling(aSibling);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
inDOMView::AppendKidsToArray(nsINodeList* aKids,
|
||||
nsCOMArray<nsIDOMNode>& aArray)
|
||||
|
@ -84,7 +84,6 @@ protected:
|
||||
nsresult AppendAttrsToArray(nsDOMAttributeMap* aKids, nsCOMArray<nsIDOMNode>& aArray);
|
||||
nsresult GetFirstDescendantOf(inDOMViewNode* aNode, int32_t aRow, int32_t* aResult);
|
||||
nsresult GetLastDescendantOf(inDOMViewNode* aNode, int32_t aRow, int32_t* aResult);
|
||||
nsresult GetRealPreviousSibling(nsIDOMNode* aNode, nsIDOMNode* aRealParent, nsIDOMNode** aSibling);
|
||||
};
|
||||
|
||||
// {FB5C1775-1BBD-4b9c-ABB0-AE7ACD29E87E}
|
||||
|
Loading…
Reference in New Issue
Block a user