зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1434819 part 6. Get rid of NodeFilterHolder. r=qdot
Now that TreeWalker and NodeIterator only use webidl APIs, they always have a NodeFilter, not nsIDOMNodeFilter. MozReview-Commit-ID: 5pzn9V3Kxzy
This commit is contained in:
Родитель
ea872de15a
Коммит
59795295d1
|
@ -138,8 +138,8 @@ void NodeIterator::NodePointer::MoveBackward(nsINode *aParent, nsINode *aNode)
|
|||
|
||||
NodeIterator::NodeIterator(nsINode *aRoot,
|
||||
uint32_t aWhatToShow,
|
||||
NodeFilterHolder aFilter) :
|
||||
nsTraversal(aRoot, aWhatToShow, Move(aFilter)),
|
||||
NodeFilter* aFilter) :
|
||||
nsTraversal(aRoot, aWhatToShow, aFilter),
|
||||
mPointer(mRoot, true)
|
||||
{
|
||||
aRoot->AddMutationObserver(this);
|
||||
|
|
|
@ -29,7 +29,7 @@ public:
|
|||
|
||||
NodeIterator(nsINode *aRoot,
|
||||
uint32_t aWhatToShow,
|
||||
NodeFilterHolder aFilter);
|
||||
NodeFilter* aFilter);
|
||||
|
||||
NS_DECL_NSIMUTATIONOBSERVER_CONTENTREMOVED
|
||||
|
||||
|
@ -52,9 +52,9 @@ public:
|
|||
{
|
||||
return mWhatToShow;
|
||||
}
|
||||
already_AddRefed<NodeFilter> GetFilter()
|
||||
NodeFilter* GetFilter()
|
||||
{
|
||||
return mFilter.ToWebIDLCallback();
|
||||
return mFilter;
|
||||
}
|
||||
already_AddRefed<nsINode> NextNode(ErrorResult& aResult)
|
||||
{
|
||||
|
|
|
@ -26,8 +26,8 @@ namespace dom {
|
|||
|
||||
TreeWalker::TreeWalker(nsINode *aRoot,
|
||||
uint32_t aWhatToShow,
|
||||
NodeFilterHolder aFilter) :
|
||||
nsTraversal(aRoot, aWhatToShow, Move(aFilter)),
|
||||
NodeFilter* aFilter) :
|
||||
nsTraversal(aRoot, aWhatToShow, aFilter),
|
||||
mCurrentNode(aRoot)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ public:
|
|||
|
||||
TreeWalker(nsINode *aRoot,
|
||||
uint32_t aWhatToShow,
|
||||
NodeFilterHolder aFilter);
|
||||
NodeFilter* aFilter);
|
||||
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS(TreeWalker)
|
||||
|
||||
|
@ -45,9 +45,9 @@ public:
|
|||
{
|
||||
return mWhatToShow;
|
||||
}
|
||||
already_AddRefed<NodeFilter> GetFilter()
|
||||
NodeFilter* GetFilter()
|
||||
{
|
||||
return mFilter.ToWebIDLCallback();
|
||||
return mFilter;
|
||||
}
|
||||
nsINode* CurrentNode() const
|
||||
{
|
||||
|
|
|
@ -6400,17 +6400,8 @@ nsIDocument::CreateNodeIterator(nsINode& aRoot, uint32_t aWhatToShow,
|
|||
NodeFilter* aFilter,
|
||||
ErrorResult& rv) const
|
||||
{
|
||||
return CreateNodeIterator(aRoot, aWhatToShow, NodeFilterHolder(aFilter), rv);
|
||||
}
|
||||
|
||||
already_AddRefed<NodeIterator>
|
||||
nsIDocument::CreateNodeIterator(nsINode& aRoot, uint32_t aWhatToShow,
|
||||
NodeFilterHolder aFilter,
|
||||
ErrorResult& rv) const
|
||||
{
|
||||
nsINode* root = &aRoot;
|
||||
RefPtr<NodeIterator> iterator = new NodeIterator(root, aWhatToShow,
|
||||
Move(aFilter));
|
||||
RefPtr<NodeIterator> iterator = new NodeIterator(&aRoot, aWhatToShow,
|
||||
aFilter);
|
||||
return iterator.forget();
|
||||
}
|
||||
|
||||
|
@ -6419,15 +6410,7 @@ nsIDocument::CreateTreeWalker(nsINode& aRoot, uint32_t aWhatToShow,
|
|||
NodeFilter* aFilter,
|
||||
ErrorResult& rv) const
|
||||
{
|
||||
return CreateTreeWalker(aRoot, aWhatToShow, NodeFilterHolder(aFilter), rv);
|
||||
}
|
||||
|
||||
already_AddRefed<TreeWalker>
|
||||
nsIDocument::CreateTreeWalker(nsINode& aRoot, uint32_t aWhatToShow,
|
||||
NodeFilterHolder aFilter, ErrorResult& rv) const
|
||||
{
|
||||
nsINode* root = &aRoot;
|
||||
RefPtr<TreeWalker> walker = new TreeWalker(root, aWhatToShow, Move(aFilter));
|
||||
RefPtr<TreeWalker> walker = new TreeWalker(&aRoot, aWhatToShow, aFilter);
|
||||
return walker.forget();
|
||||
}
|
||||
|
||||
|
|
|
@ -182,7 +182,6 @@ class XULDocument;
|
|||
template<typename> class Sequence;
|
||||
|
||||
template<typename, typename> class CallbackObjectHolder;
|
||||
typedef CallbackObjectHolder<NodeFilter, nsIDOMNodeFilter> NodeFilterHolder;
|
||||
|
||||
enum class CallerType : uint32_t;
|
||||
|
||||
|
@ -2877,18 +2876,9 @@ public:
|
|||
CreateNodeIterator(nsINode& aRoot, uint32_t aWhatToShow,
|
||||
mozilla::dom::NodeFilter* aFilter,
|
||||
mozilla::ErrorResult& rv) const;
|
||||
already_AddRefed<mozilla::dom::NodeIterator>
|
||||
CreateNodeIterator(nsINode& aRoot, uint32_t aWhatToShow,
|
||||
mozilla::dom::NodeFilterHolder aFilter,
|
||||
mozilla::ErrorResult& rv) const;
|
||||
already_AddRefed<mozilla::dom::TreeWalker>
|
||||
CreateTreeWalker(nsINode& aRoot, uint32_t aWhatToShow,
|
||||
mozilla::dom::NodeFilter* aFilter, mozilla::ErrorResult& rv) const;
|
||||
already_AddRefed<mozilla::dom::TreeWalker>
|
||||
CreateTreeWalker(nsINode& aRoot, uint32_t aWhatToShow,
|
||||
mozilla::dom::NodeFilterHolder aFilter,
|
||||
mozilla::ErrorResult& rv) const;
|
||||
|
||||
// Deprecated WebIDL bits
|
||||
already_AddRefed<mozilla::dom::CDATASection>
|
||||
CreateCDATASection(const nsAString& aData, mozilla::ErrorResult& rv);
|
||||
|
|
|
@ -18,10 +18,10 @@ using namespace mozilla::dom;
|
|||
|
||||
nsTraversal::nsTraversal(nsINode *aRoot,
|
||||
uint32_t aWhatToShow,
|
||||
NodeFilterHolder aFilter) :
|
||||
NodeFilter* aFilter) :
|
||||
mRoot(aRoot),
|
||||
mWhatToShow(aWhatToShow),
|
||||
mFilter(Move(aFilter)),
|
||||
mFilter(aFilter),
|
||||
mInAcceptNode(false)
|
||||
{
|
||||
NS_ASSERTION(aRoot, "invalid root in call to nsTraversal constructor");
|
||||
|
@ -37,7 +37,7 @@ nsTraversal::~nsTraversal()
|
|||
* mFilter to test the node.
|
||||
* @param aNode Node to test
|
||||
* @param aResult Whether we succeeded
|
||||
* @returns Filtervalue. See nsIDOMNodeFilter.idl
|
||||
* @returns Filtervalue. See NodeFilter.webidl
|
||||
*/
|
||||
int16_t
|
||||
nsTraversal::TestNode(nsINode* aNode, mozilla::ErrorResult& aResult)
|
||||
|
@ -53,28 +53,15 @@ nsTraversal::TestNode(nsINode* aNode, mozilla::ErrorResult& aResult)
|
|||
return nsIDOMNodeFilter::FILTER_SKIP;
|
||||
}
|
||||
|
||||
if (!mFilter.GetISupports()) {
|
||||
if (!mFilter) {
|
||||
// No filter, just accept
|
||||
return nsIDOMNodeFilter::FILTER_ACCEPT;
|
||||
}
|
||||
|
||||
if (mFilter.HasWebIDLCallback()) {
|
||||
AutoRestore<bool> inAcceptNode(mInAcceptNode);
|
||||
mInAcceptNode = true;
|
||||
// No need to pass in an execution reason, since the generated default,
|
||||
// "NodeFilter.acceptNode", is pretty much exactly what we'd say anyway.
|
||||
return mFilter.GetWebIDLCallback()->
|
||||
AcceptNode(*aNode, aResult, nullptr,
|
||||
CallbackObject::eRethrowExceptions);
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIDOMNode> domNode = do_QueryInterface(aNode);
|
||||
AutoRestore<bool> inAcceptNode(mInAcceptNode);
|
||||
mInAcceptNode = true;
|
||||
int16_t filtered;
|
||||
nsresult rv = mFilter.GetXPCOMCallback()->AcceptNode(domNode, &filtered);
|
||||
if (NS_FAILED(rv)) {
|
||||
aResult.Throw(rv);
|
||||
}
|
||||
return filtered;
|
||||
// No need to pass in an execution reason, since the generated default,
|
||||
// "NodeFilter.acceptNode", is pretty much exactly what we'd say anyway.
|
||||
return mFilter->AcceptNode(*aNode, aResult, nullptr,
|
||||
CallbackObject::eRethrowExceptions);
|
||||
}
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
#define nsTraversal_h___
|
||||
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIDocument.h" // for NodeFilterHolder
|
||||
#include "mozilla/dom/CallbackObject.h"
|
||||
#include "mozilla/ErrorResult.h"
|
||||
#include "mozilla/dom/NodeFilterBinding.h"
|
||||
|
@ -25,13 +24,13 @@ class nsTraversal
|
|||
public:
|
||||
nsTraversal(nsINode *aRoot,
|
||||
uint32_t aWhatToShow,
|
||||
mozilla::dom::NodeFilterHolder aFilter);
|
||||
mozilla::dom::NodeFilter* aFilter);
|
||||
virtual ~nsTraversal();
|
||||
|
||||
protected:
|
||||
nsCOMPtr<nsINode> mRoot;
|
||||
uint32_t mWhatToShow;
|
||||
mozilla::dom::NodeFilterHolder mFilter;
|
||||
RefPtr<mozilla::dom::NodeFilter> mFilter;
|
||||
bool mInAcceptNode;
|
||||
|
||||
/*
|
||||
|
@ -39,7 +38,7 @@ protected:
|
|||
* mFilter to test the node.
|
||||
* @param aNode Node to test
|
||||
* @param aResult Whether we succeeded
|
||||
* @returns Filtervalue. See nsIDOMNodeFilter.idl
|
||||
* @returns Filtervalue. See NodeFilter.webidl
|
||||
*/
|
||||
int16_t TestNode(nsINode* aNode, mozilla::ErrorResult& aResult);
|
||||
};
|
||||
|
|
|
@ -529,8 +529,7 @@ GetTextNode(Selection* selection)
|
|||
if (!EditorBase::IsTextNode(selNode)) {
|
||||
// This should be the root node, walk the tree looking for text nodes
|
||||
RefPtr<NodeIterator> iter =
|
||||
new NodeIterator(selNode, nsIDOMNodeFilter::SHOW_TEXT,
|
||||
NodeFilterHolder());
|
||||
new NodeIterator(selNode, nsIDOMNodeFilter::SHOW_TEXT, nullptr);
|
||||
while (!EditorBase::IsTextNode(selNode)) {
|
||||
selNode = iter->NextNode(IgnoreErrors());
|
||||
if (!selNode) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче