mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-10 01:08:21 +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()
|
||||
{
|
||||
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; ) {
|
||||
mSheets[i]->DropRuleProcessor(this);
|
||||
}
|
||||
mSheets.Clear();
|
||||
ClearRuleCascades();
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS(nsCSSRuleProcessor, nsIStyleRuleProcessor)
|
||||
|
||||
/* static */ nsresult
|
||||
nsCSSRuleProcessor::Startup()
|
||||
{
|
||||
|
@ -53,7 +53,8 @@ public:
|
||||
mozilla::dom::Element* aScopeElement);
|
||||
virtual ~nsCSSRuleProcessor();
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS(nsCSSRuleProcessor)
|
||||
|
||||
public:
|
||||
nsresult ClearRuleCascades();
|
||||
@ -182,6 +183,8 @@ private:
|
||||
nsCSSPseudoElements::Type aPseudoType,
|
||||
mozilla::EventStates aStateMask);
|
||||
|
||||
void ClearSheets();
|
||||
|
||||
// The sheet order here is the same as in nsStyleSet::mSheets
|
||||
sheet_array_type mSheets;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user