mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-26 12:20:56 +00:00
Bug 1489787 - Part 3: Decomtaminate nsComposeTxtSrvFilter; r=masayuki
Differential Revision: https://phabricator.services.mozilla.com/D5355
This commit is contained in:
parent
72c28b2f81
commit
7a9998cefe
@ -18,7 +18,6 @@
|
||||
#include "mozilla/TextServicesDocument.h" // for TextServicesDocument
|
||||
#include "nsAString.h" // for nsAString::IsEmpty, etc
|
||||
#include "nsComponentManagerUtils.h" // for do_CreateInstance
|
||||
#include "nsComposeTxtSrvFilter.h"
|
||||
#include "nsDebug.h" // for NS_ENSURE_TRUE, etc
|
||||
#include "nsDependentSubstring.h" // for Substring
|
||||
#include "nsError.h" // for NS_ERROR_NOT_INITIALIZED, etc
|
||||
|
@ -16,7 +16,6 @@
|
||||
#include "nscore.h" // for nsresult
|
||||
|
||||
class mozSpellChecker;
|
||||
class nsComposeTxtSrvFilter;
|
||||
class nsIEditor;
|
||||
class nsISpellChecker;
|
||||
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include "nsRange.h" // for nsRange
|
||||
#include "nsString.h" // for nsString, nsAutoString
|
||||
#include "nscore.h" // for nsresult, NS_IMETHODIMP, etc
|
||||
#include "mozilla/UniquePtr.h" // for UniquePtr
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
@ -70,7 +71,8 @@ public:
|
||||
};
|
||||
|
||||
TextServicesDocument::TextServicesDocument()
|
||||
: mSelStartIndex(-1)
|
||||
: mTxtSvcFilterType(0)
|
||||
, mSelStartIndex(-1)
|
||||
, mSelStartOffset(-1)
|
||||
, mSelEndIndex(-1)
|
||||
, mSelEndOffset(-1)
|
||||
@ -99,8 +101,7 @@ NS_IMPL_CYCLE_COLLECTION(TextServicesDocument,
|
||||
mIterator,
|
||||
mPrevTextBlock,
|
||||
mNextTextBlock,
|
||||
mExtent,
|
||||
mTxtSvcFilter)
|
||||
mExtent)
|
||||
|
||||
nsresult
|
||||
TextServicesDocument::InitWithEditor(nsIEditor* aEditor)
|
||||
@ -344,19 +345,7 @@ TextServicesDocument::ExpandRangeToWordBoundaries(nsRange* aRange)
|
||||
nsresult
|
||||
TextServicesDocument::SetFilterType(uint32_t aFilterType)
|
||||
{
|
||||
// Hang on to the filter so we can set it into the filtered iterator.
|
||||
switch (aFilterType) {
|
||||
case nsIEditorSpellCheck::FILTERTYPE_NORMAL:
|
||||
mTxtSvcFilter = nsComposeTxtSrvFilter::CreateNormalFilter();
|
||||
break;
|
||||
case nsIEditorSpellCheck::FILTERTYPE_MAIL:
|
||||
mTxtSvcFilter = nsComposeTxtSrvFilter::CreateMailFilter();
|
||||
break;
|
||||
default:
|
||||
// Treat an invalid value as resetting out filter.
|
||||
mTxtSvcFilter = nullptr;
|
||||
break;
|
||||
}
|
||||
mTxtSvcFilterType = aFilterType;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
@ -1450,10 +1439,21 @@ TextServicesDocument::CreateContentIterator(nsRange* aRange,
|
||||
|
||||
*aIterator = nullptr;
|
||||
|
||||
UniquePtr<nsComposeTxtSrvFilter> composeFilter;
|
||||
switch (mTxtSvcFilterType) {
|
||||
case nsIEditorSpellCheck::FILTERTYPE_NORMAL:
|
||||
composeFilter = nsComposeTxtSrvFilter::CreateNormalFilter();
|
||||
break;
|
||||
case nsIEditorSpellCheck::FILTERTYPE_MAIL:
|
||||
composeFilter = nsComposeTxtSrvFilter::CreateMailFilter();
|
||||
break;
|
||||
}
|
||||
|
||||
// Create a nsFilteredContentIterator
|
||||
// This class wraps the ContentIterator in order to give itself a chance
|
||||
// to filter out certain content nodes
|
||||
RefPtr<nsFilteredContentIterator> filter = new nsFilteredContentIterator(mTxtSvcFilter);
|
||||
RefPtr<nsFilteredContentIterator> filter =
|
||||
new nsFilteredContentIterator(std::move(composeFilter));
|
||||
|
||||
nsresult rv = filter->Init(aRange);
|
||||
if (NS_FAILED(rv)) {
|
||||
|
@ -14,7 +14,6 @@
|
||||
#include "nsTArray.h"
|
||||
#include "nscore.h"
|
||||
|
||||
class nsComposeTxtSrvFilter;
|
||||
class nsIContent;
|
||||
class nsIContentIterator;
|
||||
class nsIEditor;
|
||||
@ -58,7 +57,7 @@ private:
|
||||
nsCOMPtr<nsIContent> mNextTextBlock;
|
||||
nsTArray<OffsetEntry*> mOffsetTable;
|
||||
RefPtr<nsRange> mExtent;
|
||||
RefPtr<nsComposeTxtSrvFilter> mTxtSvcFilter;
|
||||
uint32_t mTxtSvcFilterType;
|
||||
|
||||
int32_t mSelStartIndex;
|
||||
int32_t mSelStartOffset;
|
||||
|
@ -6,17 +6,10 @@
|
||||
#include "nsComposeTxtSrvFilter.h"
|
||||
#include "nsError.h" // for NS_OK
|
||||
#include "nsIContent.h" // for nsIContent
|
||||
#include "nsNameSpaceManager.h" // for kNameSpaceID_None
|
||||
#include "nsLiteralString.h" // for NS_LITERAL_STRING
|
||||
#include "nscore.h" // for NS_IMETHODIMP
|
||||
#include "mozilla/dom/Element.h" // for nsIContent
|
||||
|
||||
nsComposeTxtSrvFilter::nsComposeTxtSrvFilter() :
|
||||
mIsForMail(false)
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS0(nsComposeTxtSrvFilter)
|
||||
using namespace mozilla;
|
||||
|
||||
bool
|
||||
nsComposeTxtSrvFilter::Skip(nsINode* aNode) const
|
||||
@ -74,10 +67,10 @@ nsComposeTxtSrvFilter::Skip(nsINode* aNode) const
|
||||
}
|
||||
|
||||
// static
|
||||
already_AddRefed<nsComposeTxtSrvFilter>
|
||||
UniquePtr<nsComposeTxtSrvFilter>
|
||||
nsComposeTxtSrvFilter::CreateHelper(bool aIsForMail)
|
||||
{
|
||||
RefPtr<nsComposeTxtSrvFilter> filter = new nsComposeTxtSrvFilter();
|
||||
auto filter = MakeUnique<nsComposeTxtSrvFilter>();
|
||||
filter->Init(aIsForMail);
|
||||
return filter.forget();
|
||||
return filter;
|
||||
}
|
||||
|
@ -6,27 +6,23 @@
|
||||
#ifndef nsComposeTxtSrvFilter_h__
|
||||
#define nsComposeTxtSrvFilter_h__
|
||||
|
||||
#include "nsISupportsImpl.h" // for NS_DECL_ISUPPORTS
|
||||
#include "mozilla/AlreadyAddRefed.h"
|
||||
#include "mozilla/UniquePtr.h"
|
||||
|
||||
/**
|
||||
* This class implements a filter interface, that enables
|
||||
* those using it to skip over certain nodes when traversing content
|
||||
* This class enables those using it to skip over certain nodes when
|
||||
* traversing content.
|
||||
*
|
||||
* This filter is used to skip over various form control nodes and
|
||||
* mail's cite nodes
|
||||
*/
|
||||
class nsComposeTxtSrvFilter final : public nsISupports
|
||||
class nsComposeTxtSrvFilter final
|
||||
{
|
||||
public:
|
||||
// nsISupports interface...
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
static already_AddRefed<nsComposeTxtSrvFilter> CreateNormalFilter()
|
||||
static mozilla::UniquePtr<nsComposeTxtSrvFilter> CreateNormalFilter()
|
||||
{
|
||||
return CreateHelper(false);
|
||||
}
|
||||
static already_AddRefed<nsComposeTxtSrvFilter> CreateMailFilter()
|
||||
static mozilla::UniquePtr<nsComposeTxtSrvFilter> CreateMailFilter()
|
||||
{
|
||||
return CreateHelper(true);
|
||||
}
|
||||
@ -38,15 +34,12 @@ public:
|
||||
bool Skip(nsINode* aNode) const;
|
||||
|
||||
private:
|
||||
nsComposeTxtSrvFilter();
|
||||
~nsComposeTxtSrvFilter() {}
|
||||
|
||||
// Helper - Intializer
|
||||
void Init(bool aIsForMail) { mIsForMail = aIsForMail; }
|
||||
|
||||
static already_AddRefed<nsComposeTxtSrvFilter> CreateHelper(bool aIsForMail);
|
||||
static mozilla::UniquePtr<nsComposeTxtSrvFilter> CreateHelper(bool aIsForMail);
|
||||
|
||||
bool mIsForMail;
|
||||
bool mIsForMail = false;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -22,10 +22,10 @@
|
||||
using namespace mozilla;
|
||||
|
||||
//------------------------------------------------------------
|
||||
nsFilteredContentIterator::nsFilteredContentIterator(nsComposeTxtSrvFilter* aFilter) :
|
||||
nsFilteredContentIterator::nsFilteredContentIterator(UniquePtr<nsComposeTxtSrvFilter> aFilter) :
|
||||
mIterator(NS_NewContentIterator()),
|
||||
mPreIterator(NS_NewPreContentIterator()),
|
||||
mFilter(aFilter),
|
||||
mFilter(std::move(aFilter)),
|
||||
mDidSkip(false),
|
||||
mIsOutOfRange(false),
|
||||
mDirection(eDirNotSet)
|
||||
@ -51,7 +51,6 @@ NS_IMPL_CYCLE_COLLECTION(nsFilteredContentIterator,
|
||||
mCurrentIterator,
|
||||
mIterator,
|
||||
mPreIterator,
|
||||
mFilter,
|
||||
mRange)
|
||||
|
||||
//------------------------------------------------------------
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include "nsIContentIterator.h"
|
||||
#include "nsISupportsImpl.h"
|
||||
#include "nscore.h"
|
||||
#include "mozilla/UniquePtr.h"
|
||||
|
||||
class nsAtom;
|
||||
class nsComposeTxtSrvFilter;
|
||||
@ -25,7 +26,8 @@ public:
|
||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS(nsFilteredContentIterator)
|
||||
|
||||
explicit nsFilteredContentIterator(nsComposeTxtSrvFilter* aFilter);
|
||||
explicit nsFilteredContentIterator(
|
||||
mozilla::UniquePtr<nsComposeTxtSrvFilter> aFilter);
|
||||
|
||||
/* nsIContentIterator */
|
||||
virtual nsresult Init(nsINode* aRoot) override;
|
||||
@ -77,7 +79,7 @@ protected:
|
||||
RefPtr<nsAtom> mSelectAreaAtom;
|
||||
RefPtr<nsAtom> mMapAtom;
|
||||
|
||||
RefPtr<nsComposeTxtSrvFilter> mFilter;
|
||||
mozilla::UniquePtr<nsComposeTxtSrvFilter> mFilter;
|
||||
RefPtr<nsRange> mRange;
|
||||
bool mDidSkip;
|
||||
bool mIsOutOfRange;
|
||||
|
Loading…
x
Reference in New Issue
Block a user