Issue #2490 - Part 12: Convert CSSStyleRule to WebIDL.

The .style PutForwards bit is coming along for the ride here, aligning us with
the behavior of Blink and Gecko.
This commit is contained in:
Moonchild 2024-04-03 13:59:06 +02:00 committed by roytam1
commit 6176bd62d9
15 changed files with 132 additions and 55 deletions

View file

@ -15,6 +15,7 @@
#include "mozilla/MemoryReporting.h"
#include "mozilla/css/GroupRule.h"
#include "mozilla/css/Declaration.h"
#include "mozilla/dom/CSSStyleRuleBinding.h"
#include "nsIDocument.h"
#include "nsIAtom.h"
#include "nsString.h"
@ -26,7 +27,6 @@
#include "nsCSSPseudoClasses.h"
#include "nsCSSAnonBoxes.h"
#include "nsTArray.h"
#include "nsDOMClassInfoID.h"
#include "nsContentUtils.h"
#include "nsError.h"
#include "mozAutoDocUpdate.h"
@ -1235,13 +1235,18 @@ StyleRule::Type() const
NS_IMETHODIMP
StyleRule::GetStyle(nsIDOMCSSStyleDeclaration** aStyle)
{
NS_ADDREF(*aStyle = Style());
return NS_OK;
}
nsICSSDeclaration*
StyleRule::Style()
{
if (!mDOMDeclaration) {
mDOMDeclaration.reset(new DOMCSSDeclarationImpl(this));
}
*aStyle = mDOMDeclaration.get();
NS_ADDREF(*aStyle);
return NS_OK;
return mDOMDeclaration.get();
}
NS_IMETHODIMP
@ -1256,11 +1261,10 @@ StyleRule::StyleRule(nsCSSSelectorList* aSelector,
Declaration* aDeclaration,
uint32_t aLineNumber,
uint32_t aColumnNumber)
: Rule(aLineNumber, aColumnNumber),
mSelector(aSelector),
mDeclaration(aDeclaration)
: BindingStyleRule(aLineNumber, aColumnNumber)
, mSelector(aSelector)
, mDeclaration(aDeclaration)
{
SetIsNotDOMBinding();
NS_PRECONDITION(aDeclaration, "must have a declaration");
mDeclaration->SetOwningRule(this);
@ -1268,11 +1272,10 @@ StyleRule::StyleRule(nsCSSSelectorList* aSelector,
// for |Clone|
StyleRule::StyleRule(const StyleRule& aCopy)
: Rule(aCopy),
mSelector(aCopy.mSelector ? aCopy.mSelector->Clone() : nullptr),
mDeclaration(new Declaration(*aCopy.mDeclaration))
: BindingStyleRule(aCopy)
, mSelector(aCopy.mSelector ? aCopy.mSelector->Clone() : nullptr)
, mDeclaration(new Declaration(*aCopy.mDeclaration))
{
SetIsNotDOMBinding();
mDeclaration->SetOwningRule(this);
// rest is constructed lazily on existing data
}
@ -1301,7 +1304,6 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(StyleRule)
else
NS_INTERFACE_MAP_ENTRY(nsICSSStyleRuleDOMWrapper)
NS_INTERFACE_MAP_ENTRY(nsIDOMCSSStyleRule)
NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(CSSStyleRule)
NS_INTERFACE_MAP_END_INHERITING(Rule)
NS_IMPL_ADDREF_INHERITED(StyleRule, Rule)
@ -1496,12 +1498,5 @@ StyleRule::SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const
return n;
}
/* virtual */ JSObject*
StyleRule::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
{
NS_NOTREACHED("We called SetIsNotDOMBinding() in our constructor");
return nullptr;
}
} // namespace css
} // namespace mozilla