mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-04 14:58:37 +09:00
Issue #2490 - Part 1: Make all CSS rules cycle-collected.
This commit is contained in:
parent
73edd3878f
commit
d6ec56a4c4
11 changed files with 237 additions and 85 deletions
|
|
@ -1460,8 +1460,15 @@ StyleRule::StyleRule(const StyleRule& aCopy)
|
|||
StyleRule::~StyleRule()
|
||||
{
|
||||
delete mSelector;
|
||||
DropReferences();
|
||||
}
|
||||
|
||||
void
|
||||
StyleRule::DropReferences()
|
||||
{
|
||||
if (mDOMRule) {
|
||||
mDOMRule->DOMDeclaration()->DropReference();
|
||||
mDOMRule = nullptr;
|
||||
}
|
||||
|
||||
if (mDeclaration) {
|
||||
|
|
@ -1470,18 +1477,36 @@ StyleRule::~StyleRule()
|
|||
}
|
||||
|
||||
// QueryInterface implementation for StyleRule
|
||||
NS_INTERFACE_MAP_BEGIN(StyleRule)
|
||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(StyleRule)
|
||||
if (aIID.Equals(NS_GET_IID(mozilla::css::StyleRule))) {
|
||||
*aInstancePtr = this;
|
||||
NS_ADDREF_THIS();
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, mozilla::css::Rule)
|
||||
NS_INTERFACE_MAP_END
|
||||
NS_INTERFACE_MAP_END_INHERITING(Rule)
|
||||
|
||||
NS_IMPL_ADDREF(StyleRule)
|
||||
NS_IMPL_RELEASE(StyleRule)
|
||||
NS_IMPL_ADDREF_INHERITED(StyleRule, Rule)
|
||||
NS_IMPL_RELEASE_INHERITED(StyleRule, Rule)
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_CLASS(StyleRule)
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(StyleRule, Rule)
|
||||
tmp->DropReferences();
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(StyleRule, Rule)
|
||||
// Keep this in sync with IsCCLeaf.
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mDOMRule)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
||||
|
||||
bool
|
||||
StyleRule::IsCCLeaf() const
|
||||
{
|
||||
if (!Rule::IsCCLeaf()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return !mDOMRule || !mDOMRule->DOMDeclaration()->PreservingWrapper();
|
||||
}
|
||||
|
||||
/* virtual */ int32_t
|
||||
StyleRule::GetType() const
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue