mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-13 19:41:49 +00:00
Bug 990160 - Cycle collect nsCSSRuleProcessor. r=bz
This commit is contained in:
parent
303b54cc27
commit
368491119e
@ -1103,16 +1103,39 @@ nsCSSRuleProcessor::nsCSSRuleProcessor(const sheet_array_type& aSheets,
|
|||||||
}
|
}
|
||||||
|
|
||||||
nsCSSRuleProcessor::~nsCSSRuleProcessor()
|
nsCSSRuleProcessor::~nsCSSRuleProcessor()
|
||||||
|
{
|
||||||
|
ClearSheets();
|
||||||
|
ClearRuleCascades();
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsCSSRuleProcessor)
|
||||||
|
NS_INTERFACE_MAP_ENTRY(nsIStyleRuleProcessor)
|
||||||
|
NS_INTERFACE_MAP_END
|
||||||
|
|
||||||
|
NS_IMPL_CYCLE_COLLECTING_ADDREF(nsCSSRuleProcessor)
|
||||||
|
NS_IMPL_CYCLE_COLLECTING_RELEASE(nsCSSRuleProcessor)
|
||||||
|
|
||||||
|
NS_IMPL_CYCLE_COLLECTION_CLASS(nsCSSRuleProcessor)
|
||||||
|
|
||||||
|
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(nsCSSRuleProcessor)
|
||||||
|
tmp->ClearSheets();
|
||||||
|
NS_IMPL_CYCLE_COLLECTION_UNLINK(mScopeElement)
|
||||||
|
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
|
||||||
|
|
||||||
|
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(nsCSSRuleProcessor)
|
||||||
|
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mSheets)
|
||||||
|
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mScopeElement)
|
||||||
|
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
||||||
|
|
||||||
|
void
|
||||||
|
nsCSSRuleProcessor::ClearSheets()
|
||||||
{
|
{
|
||||||
for (sheet_array_type::size_type i = mSheets.Length(); i-- != 0; ) {
|
for (sheet_array_type::size_type i = mSheets.Length(); i-- != 0; ) {
|
||||||
mSheets[i]->DropRuleProcessor(this);
|
mSheets[i]->DropRuleProcessor(this);
|
||||||
}
|
}
|
||||||
mSheets.Clear();
|
mSheets.Clear();
|
||||||
ClearRuleCascades();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMPL_ISUPPORTS(nsCSSRuleProcessor, nsIStyleRuleProcessor)
|
|
||||||
|
|
||||||
/* static */ nsresult
|
/* static */ nsresult
|
||||||
nsCSSRuleProcessor::Startup()
|
nsCSSRuleProcessor::Startup()
|
||||||
{
|
{
|
||||||
|
@ -53,7 +53,8 @@ public:
|
|||||||
mozilla::dom::Element* aScopeElement);
|
mozilla::dom::Element* aScopeElement);
|
||||||
virtual ~nsCSSRuleProcessor();
|
virtual ~nsCSSRuleProcessor();
|
||||||
|
|
||||||
NS_DECL_ISUPPORTS
|
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||||
|
NS_DECL_CYCLE_COLLECTION_CLASS(nsCSSRuleProcessor)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
nsresult ClearRuleCascades();
|
nsresult ClearRuleCascades();
|
||||||
@ -182,6 +183,8 @@ private:
|
|||||||
nsCSSPseudoElements::Type aPseudoType,
|
nsCSSPseudoElements::Type aPseudoType,
|
||||||
mozilla::EventStates aStateMask);
|
mozilla::EventStates aStateMask);
|
||||||
|
|
||||||
|
void ClearSheets();
|
||||||
|
|
||||||
// The sheet order here is the same as in nsStyleSet::mSheets
|
// The sheet order here is the same as in nsStyleSet::mSheets
|
||||||
sheet_array_type mSheets;
|
sheet_array_type mSheets;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user