mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-08 19:04:45 +00:00
Bug 1034914 - Clean up CreateContentIterator and give nsFilteredContentIterator a private dtor. r=ehsan
This commit is contained in:
parent
0090b646d5
commit
0f2ea02bef
@ -18,10 +18,7 @@ class nsIDOMRange;
|
|||||||
class nsINode;
|
class nsINode;
|
||||||
class nsITextServicesFilter;
|
class nsITextServicesFilter;
|
||||||
|
|
||||||
/**
|
class nsFilteredContentIterator MOZ_FINAL : public nsIContentIterator
|
||||||
*
|
|
||||||
*/
|
|
||||||
class nsFilteredContentIterator : public nsIContentIterator
|
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -31,8 +28,6 @@ public:
|
|||||||
|
|
||||||
nsFilteredContentIterator(nsITextServicesFilter* aFilter);
|
nsFilteredContentIterator(nsITextServicesFilter* aFilter);
|
||||||
|
|
||||||
virtual ~nsFilteredContentIterator();
|
|
||||||
|
|
||||||
/* nsIContentIterator */
|
/* nsIContentIterator */
|
||||||
virtual nsresult Init(nsINode* aRoot);
|
virtual nsresult Init(nsINode* aRoot);
|
||||||
virtual nsresult Init(nsIDOMRange* aRange);
|
virtual nsresult Init(nsIDOMRange* aRange);
|
||||||
@ -51,6 +46,8 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
nsFilteredContentIterator() { }
|
nsFilteredContentIterator() { }
|
||||||
|
|
||||||
|
virtual ~nsFilteredContentIterator();
|
||||||
|
|
||||||
// enum to give us the direction
|
// enum to give us the direction
|
||||||
typedef enum {eDirNotSet, eForward, eBackward} eDirectionType;
|
typedef enum {eDirNotSet, eForward, eBackward} eDirectionType;
|
||||||
nsresult AdvanceNode(nsIDOMNode* aNode, nsIDOMNode*& aNewNode, eDirectionType aDir);
|
nsresult AdvanceNode(nsIDOMNode* aNode, nsIDOMNode*& aNewNode, eDirectionType aDir);
|
||||||
@ -74,12 +71,4 @@ protected:
|
|||||||
eDirectionType mDirection;
|
eDirectionType mDirection;
|
||||||
};
|
};
|
||||||
|
|
||||||
namespace mozilla {
|
|
||||||
template<>
|
|
||||||
struct HasDangerousPublicDestructor<nsFilteredContentIterator>
|
|
||||||
{
|
|
||||||
static const bool value = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1979,37 +1979,21 @@ nsTextServicesDocument::DidJoinNodes(nsIDOMNode *aLeftNode,
|
|||||||
nsresult
|
nsresult
|
||||||
nsTextServicesDocument::CreateContentIterator(nsIDOMRange *aRange, nsIContentIterator **aIterator)
|
nsTextServicesDocument::CreateContentIterator(nsIDOMRange *aRange, nsIContentIterator **aIterator)
|
||||||
{
|
{
|
||||||
nsresult result;
|
|
||||||
|
|
||||||
NS_ENSURE_TRUE(aRange && aIterator, NS_ERROR_NULL_POINTER);
|
NS_ENSURE_TRUE(aRange && aIterator, NS_ERROR_NULL_POINTER);
|
||||||
|
|
||||||
*aIterator = 0;
|
*aIterator = nullptr;
|
||||||
|
|
||||||
// Create a nsFilteredContentIterator
|
// Create a nsFilteredContentIterator
|
||||||
// This class wraps the ContentIterator in order to give itself a chance
|
// This class wraps the ContentIterator in order to give itself a chance
|
||||||
// to filter out certain content nodes
|
// to filter out certain content nodes
|
||||||
nsFilteredContentIterator* filter = new nsFilteredContentIterator(mTxtSvcFilter);
|
nsRefPtr<nsFilteredContentIterator> filter = new nsFilteredContentIterator(mTxtSvcFilter);
|
||||||
*aIterator = static_cast<nsIContentIterator *>(filter);
|
|
||||||
if (*aIterator) {
|
|
||||||
NS_IF_ADDREF(*aIterator);
|
|
||||||
result = filter ? NS_OK : NS_ERROR_FAILURE;
|
|
||||||
} else {
|
|
||||||
delete filter;
|
|
||||||
result = NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
NS_ENSURE_SUCCESS(result, result);
|
|
||||||
|
|
||||||
NS_ENSURE_TRUE(*aIterator, NS_ERROR_NULL_POINTER);
|
nsresult result = filter->Init(aRange);
|
||||||
|
if (NS_FAILED(result)) {
|
||||||
result = (*aIterator)->Init(aRange);
|
|
||||||
|
|
||||||
if (NS_FAILED(result))
|
|
||||||
{
|
|
||||||
NS_RELEASE((*aIterator));
|
|
||||||
*aIterator = 0;
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
filter.forget(aIterator);
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user