diff options
author | Gaming4JC <g4jc@hyperbola.info> | 2020-05-22 12:05:13 -0400 |
---|---|---|
committer | Moonchild <moonchild@palemoon.org> | 2020-08-07 21:26:33 +0000 |
commit | c77c6de9ce177787192e6fc1af1d017f92603069 (patch) | |
tree | 15bb6e88d17bd8dabd2067718fd20a17ac961000 /editor/libeditor | |
parent | 922a72766caa4a833f5775b17e4729ae5f79260d (diff) | |
download | UXP-c77c6de9ce177787192e6fc1af1d017f92603069.tar UXP-c77c6de9ce177787192e6fc1af1d017f92603069.tar.gz UXP-c77c6de9ce177787192e6fc1af1d017f92603069.tar.lz UXP-c77c6de9ce177787192e6fc1af1d017f92603069.tar.xz UXP-c77c6de9ce177787192e6fc1af1d017f92603069.zip |
Bug 1318570 - Clean up GetTextNode into TextEditRules.
EditorBase parameter of GetTextNode is unnecessary because it uses static method only. Also, we should return nsINode to reduce QI.
Resolves #1617
Diffstat (limited to 'editor/libeditor')
-rw-r--r-- | editor/libeditor/TextEditRules.cpp | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/editor/libeditor/TextEditRules.cpp b/editor/libeditor/TextEditRules.cpp index 8f8f34e8b..4ffcd2618 100644 --- a/editor/libeditor/TextEditRules.cpp +++ b/editor/libeditor/TextEditRules.cpp @@ -25,7 +25,6 @@ #include "nsError.h" #include "nsGkAtoms.h" #include "nsIContent.h" -#include "nsIDOMCharacterData.h" #include "nsIDOMDocument.h" #include "nsIDOMElement.h" #include "nsIDOMNode.h" @@ -482,26 +481,24 @@ TextEditRules::CollapseSelectionToTrailingBRIfNeeded(Selection* aSelection) return NS_OK; } -static inline already_AddRefed<nsIDOMNode> -GetTextNode(Selection* selection, - EditorBase* editor) +static inline already_AddRefed<nsINode> +GetTextNode(Selection* selection) { int32_t selOffset; - nsCOMPtr<nsIDOMNode> selNode; + nsCOMPtr<nsINode> selNode; nsresult rv = - editor->GetStartNodeAndOffset(selection, - getter_AddRefs(selNode), &selOffset); + EditorBase::GetStartNodeAndOffset(selection, + getter_AddRefs(selNode), &selOffset); NS_ENSURE_SUCCESS(rv, nullptr); - if (!editor->IsTextNode(selNode)) { - // Get an nsINode from the nsIDOMNode - nsCOMPtr<nsINode> node = do_QueryInterface(selNode); - // if node is null, return it to indicate there's no text - NS_ENSURE_TRUE(node, nullptr); + if (!EditorBase::IsTextNode(selNode)) { // This should be the root node, walk the tree looking for text nodes RefPtr<NodeIterator> iter = - new NodeIterator(node, nsIDOMNodeFilter::SHOW_TEXT, NodeFilterHolder()); - while (!editor->IsTextNode(selNode)) { - if (NS_FAILED(iter->NextNode(getter_AddRefs(selNode))) || !selNode) { + new NodeIterator(selNode, nsIDOMNodeFilter::SHOW_TEXT, + NodeFilterHolder()); + while (!EditorBase::IsTextNode(selNode)) { + IgnoredErrorResult rv; + selNode = iter->NextNode(rv); + if (!selNode) { return nullptr; } } @@ -1385,13 +1382,10 @@ TextEditRules::HideLastPWInput() nsContentUtils::GetSelectionInTextControl(selection, mTextEditor->GetRoot(), start, end); - nsCOMPtr<nsIDOMNode> selNode = GetTextNode(selection, mTextEditor); + nsCOMPtr<nsINode> selNode = GetTextNode(selection); NS_ENSURE_TRUE(selNode, NS_OK); - nsCOMPtr<nsIDOMCharacterData> nodeAsText(do_QueryInterface(selNode)); - NS_ENSURE_TRUE(nodeAsText, NS_OK); - - nodeAsText->ReplaceData(mLastStart, mLastLength, hiddenText); + selNode->GetAsText()->ReplaceData(mLastStart, mLastLength, hiddenText); selection->Collapse(selNode, start); if (start != end) { selection->Extend(selNode, end); |