123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681 |
- /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- // vim:cindent:ts=2:et:sw=2:
- /* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- /* rules in a CSS stylesheet other than style rules (e.g., @import rules) */
- #ifndef nsCSSRules_h_
- #define nsCSSRules_h_
- #include "Declaration.h"
- #include "StyleRule.h"
- #include "gfxFontFeatures.h"
- #include "mozilla/Attributes.h"
- #include "mozilla/MemoryReporting.h"
- #include "mozilla/Move.h"
- #include "mozilla/SheetType.h"
- #include "mozilla/css/GroupRule.h"
- #include "mozilla/dom/FontFace.h"
- #include "nsAutoPtr.h"
- #include "nsCSSPropertyID.h"
- #include "nsCSSValue.h"
- #include "nsDOMCSSDeclaration.h"
- #include "nsIDOMCSSConditionRule.h"
- #include "nsIDOMCSSCounterStyleRule.h"
- #include "nsIDOMCSSFontFaceRule.h"
- #include "nsIDOMCSSFontFeatureValuesRule.h"
- #include "nsIDOMCSSGroupingRule.h"
- #include "nsIDOMCSSMediaRule.h"
- #include "nsIDOMCSSMozDocumentRule.h"
- #include "nsIDOMCSSPageRule.h"
- #include "nsIDOMCSSSupportsRule.h"
- #include "nsIDOMCSSKeyframeRule.h"
- #include "nsIDOMCSSKeyframesRule.h"
- #include "nsTArray.h"
- class nsMediaList;
- namespace mozilla {
- namespace dom {
- class DocGroup;
- } // namespace dom
- class ErrorResult;
- namespace css {
- class MediaRule final : public GroupRule,
- public nsIDOMCSSMediaRule
- {
- public:
- MediaRule(uint32_t aLineNumber, uint32_t aColumnNumber);
- private:
- MediaRule(const MediaRule& aCopy);
- ~MediaRule();
- public:
- NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(MediaRule, GroupRule)
- NS_DECL_ISUPPORTS_INHERITED
- // Rule methods
- #ifdef DEBUG
- virtual void List(FILE* out = stdout, int32_t aIndent = 0) const override;
- #endif
- virtual void SetStyleSheet(mozilla::CSSStyleSheet* aSheet) override; //override GroupRule
- virtual int32_t GetType() const override;
- virtual already_AddRefed<Rule> Clone() const override;
- virtual nsIDOMCSSRule* GetDOMRule() override
- {
- return this;
- }
- virtual nsIDOMCSSRule* GetExistingDOMRule() override
- {
- return this;
- }
- // nsIDOMCSSRule interface
- NS_DECL_NSIDOMCSSRULE
- // nsIDOMCSSGroupingRule interface
- NS_DECL_NSIDOMCSSGROUPINGRULE
- // nsIDOMCSSConditionRule interface
- NS_DECL_NSIDOMCSSCONDITIONRULE
- // nsIDOMCSSMediaRule interface
- NS_DECL_NSIDOMCSSMEDIARULE
- // rest of GroupRule
- virtual bool UseForPresentation(nsPresContext* aPresContext,
- nsMediaQueryResultCacheKey& aKey) override;
- // @media rule methods
- nsresult SetMedia(nsMediaList* aMedia);
-
- virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf)
- const override MOZ_MUST_OVERRIDE;
- protected:
- void AppendConditionText(nsAString& aOutput);
- RefPtr<nsMediaList> mMedia;
- };
- class DocumentRule final : public GroupRule,
- public nsIDOMCSSMozDocumentRule
- {
- public:
- DocumentRule(uint32_t aLineNumber, uint32_t aColumnNumber);
- private:
- DocumentRule(const DocumentRule& aCopy);
- ~DocumentRule();
- public:
- NS_DECL_ISUPPORTS_INHERITED
- // Rule methods
- #ifdef DEBUG
- virtual void List(FILE* out = stdout, int32_t aIndent = 0) const override;
- #endif
- virtual int32_t GetType() const override;
- virtual already_AddRefed<Rule> Clone() const override;
- virtual nsIDOMCSSRule* GetDOMRule() override
- {
- return this;
- }
- virtual nsIDOMCSSRule* GetExistingDOMRule() override
- {
- return this;
- }
- // nsIDOMCSSRule interface
- NS_DECL_NSIDOMCSSRULE
- // nsIDOMCSSGroupingRule interface
- NS_DECL_NSIDOMCSSGROUPINGRULE
- // nsIDOMCSSConditionRule interface
- NS_DECL_NSIDOMCSSCONDITIONRULE
- // nsIDOMCSSMozDocumentRule interface
- NS_DECL_NSIDOMCSSMOZDOCUMENTRULE
- // rest of GroupRule
- virtual bool UseForPresentation(nsPresContext* aPresContext,
- nsMediaQueryResultCacheKey& aKey) override;
- bool UseForPresentation(nsPresContext* aPresContext);
- enum Function {
- eURL,
- eURLPrefix,
- eDomain,
- eRegExp
- };
- struct URL {
- Function func;
- nsCString url;
- URL *next;
- URL() : next(nullptr) {}
- URL(const URL& aOther)
- : func(aOther.func)
- , url(aOther.url)
- , next(aOther.next ? new URL(*aOther.next) : nullptr)
- {
- }
- ~URL();
- };
- void SetURLs(URL *aURLs) { mURLs = aURLs; }
- virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf)
- const override MOZ_MUST_OVERRIDE;
- protected:
- void AppendConditionText(nsAString& aOutput);
- nsAutoPtr<URL> mURLs; // linked list of |struct URL| above.
- };
- } // namespace css
- struct CSSFontFaceDescriptors
- {
- #define CSS_FONT_DESC(name_, method_) nsCSSValue m##method_;
- #include "nsCSSFontDescList.h"
- #undef CSS_FONT_DESC
- const nsCSSValue& Get(nsCSSFontDesc aFontDescID) const;
- nsCSSValue& Get(nsCSSFontDesc aFontDescID);
- private:
- static nsCSSValue CSSFontFaceDescriptors::* const Fields[];
- };
- } // namespace mozilla
- // A nsCSSFontFaceStyleDecl is always embedded in a nsCSSFontFaceRule.
- class nsCSSFontFaceRule;
- class nsCSSFontFaceStyleDecl final : public nsICSSDeclaration
- {
- public:
- NS_DECL_ISUPPORTS_INHERITED
- NS_DECL_NSIDOMCSSSTYLEDECLARATION_HELPER
- NS_DECL_NSICSSDECLARATION
- virtual already_AddRefed<mozilla::dom::CSSValue>
- GetPropertyCSSValue(const nsAString& aProp, mozilla::ErrorResult& aRv)
- override;
- using nsICSSDeclaration::GetPropertyCSSValue;
- virtual nsINode *GetParentObject() override;
- virtual mozilla::dom::DocGroup* GetDocGroup() const override;
- virtual void IndexedGetter(uint32_t aIndex, bool& aFound, nsAString& aPropName) override;
- nsresult GetPropertyValue(nsCSSFontDesc aFontDescID,
- nsAString & aResult) const;
- virtual JSObject* WrapObject(JSContext *cx, JS::Handle<JSObject*> aGivenProto) override;
- protected:
- ~nsCSSFontFaceStyleDecl() {}
- friend class nsCSSFontFaceRule;
- inline nsCSSFontFaceRule* ContainingRule();
- inline const nsCSSFontFaceRule* ContainingRule() const;
- mozilla::CSSFontFaceDescriptors mDescriptors;
- private:
- // NOT TO BE IMPLEMENTED
- // This object cannot be allocated on its own, only as part of
- // nsCSSFontFaceRule.
- void* operator new(size_t size) CPP_THROW_NEW;
- };
- class nsCSSFontFaceRule final : public mozilla::css::Rule,
- public nsIDOMCSSFontFaceRule
- {
- public:
- nsCSSFontFaceRule(uint32_t aLineNumber, uint32_t aColumnNumber)
- : mozilla::css::Rule(aLineNumber, aColumnNumber) {}
- nsCSSFontFaceRule(const nsCSSFontFaceRule& aCopy)
- // copy everything except our reference count
- : mozilla::css::Rule(aCopy), mDecl(aCopy.mDecl) {}
- NS_DECL_CYCLE_COLLECTING_ISUPPORTS
- NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(nsCSSFontFaceRule,
- mozilla::css::Rule)
- // Rule methods
- DECL_STYLE_RULE_INHERIT
- #ifdef DEBUG
- virtual void List(FILE* out = stdout, int32_t aIndent = 0) const override;
- #endif
- virtual int32_t GetType() const override;
- virtual already_AddRefed<mozilla::css::Rule> Clone() const override;
- // nsIDOMCSSRule interface
- NS_DECL_NSIDOMCSSRULE
- // nsIDOMCSSFontFaceRule interface
- NS_DECL_NSIDOMCSSFONTFACERULE
- void SetDesc(nsCSSFontDesc aDescID, nsCSSValue const & aValue);
- void GetDesc(nsCSSFontDesc aDescID, nsCSSValue & aValue);
- virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const override;
- void GetDescriptors(mozilla::CSSFontFaceDescriptors& aDescriptors) const
- { aDescriptors = mDecl.mDescriptors; }
- protected:
- ~nsCSSFontFaceRule() {}
- friend class nsCSSFontFaceStyleDecl;
- nsCSSFontFaceStyleDecl mDecl;
- };
- // nsFontFaceRuleContainer - used for associating sheet type with
- // specific @font-face rules
- struct nsFontFaceRuleContainer {
- RefPtr<nsCSSFontFaceRule> mRule;
- mozilla::SheetType mSheetType;
- };
- inline nsCSSFontFaceRule*
- nsCSSFontFaceStyleDecl::ContainingRule()
- {
- return reinterpret_cast<nsCSSFontFaceRule*>
- (reinterpret_cast<char*>(this) - offsetof(nsCSSFontFaceRule, mDecl));
- }
- inline const nsCSSFontFaceRule*
- nsCSSFontFaceStyleDecl::ContainingRule() const
- {
- return reinterpret_cast<const nsCSSFontFaceRule*>
- (reinterpret_cast<const char*>(this) - offsetof(nsCSSFontFaceRule, mDecl));
- }
- class nsCSSFontFeatureValuesRule final : public mozilla::css::Rule,
- public nsIDOMCSSFontFeatureValuesRule
- {
- public:
- nsCSSFontFeatureValuesRule(uint32_t aLineNumber, uint32_t aColumnNumber)
- : mozilla::css::Rule(aLineNumber, aColumnNumber) {}
- nsCSSFontFeatureValuesRule(const nsCSSFontFeatureValuesRule& aCopy)
- // copy everything except our reference count
- : mozilla::css::Rule(aCopy),
- mFamilyList(aCopy.mFamilyList),
- mFeatureValues(aCopy.mFeatureValues) {}
- NS_DECL_ISUPPORTS
- // Rule methods
- DECL_STYLE_RULE_INHERIT
- #ifdef DEBUG
- virtual void List(FILE* out = stdout, int32_t aIndent = 0) const override;
- #endif
- virtual int32_t GetType() const override;
- virtual already_AddRefed<mozilla::css::Rule> Clone() const override;
- // nsIDOMCSSRule interface
- NS_DECL_NSIDOMCSSRULE
- // nsIDOMCSSFontFaceRule interface
- NS_DECL_NSIDOMCSSFONTFEATUREVALUESRULE
- const mozilla::FontFamilyList& GetFamilyList() { return mFamilyList; }
- void SetFamilyList(const mozilla::FontFamilyList& aFamilyList);
- void AddValueList(int32_t aVariantAlternate,
- nsTArray<gfxFontFeatureValueSet::ValueList>& aValueList);
- const nsTArray<gfxFontFeatureValueSet::FeatureValues>& GetFeatureValues()
- {
- return mFeatureValues;
- }
- virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const override;
- protected:
- ~nsCSSFontFeatureValuesRule() {}
- mozilla::FontFamilyList mFamilyList;
- nsTArray<gfxFontFeatureValueSet::FeatureValues> mFeatureValues;
- };
- class nsCSSKeyframeRule;
- class nsCSSKeyframeStyleDeclaration final : public nsDOMCSSDeclaration
- {
- public:
- explicit nsCSSKeyframeStyleDeclaration(nsCSSKeyframeRule *aRule);
- NS_IMETHOD GetParentRule(nsIDOMCSSRule **aParent) override;
- void DropReference() { mRule = nullptr; }
- virtual mozilla::DeclarationBlock* GetCSSDeclaration(Operation aOperation) override;
- virtual nsresult SetCSSDeclaration(mozilla::DeclarationBlock* aDecl) override;
- virtual void GetCSSParsingEnvironment(CSSParsingEnvironment& aCSSParseEnv) override;
- virtual nsIDocument* DocToUpdate() override;
- NS_DECL_CYCLE_COLLECTING_ISUPPORTS
- NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(nsCSSKeyframeStyleDeclaration,
- nsICSSDeclaration)
- virtual nsINode* GetParentObject() override;
- virtual mozilla::dom::DocGroup* GetDocGroup() const override;
- protected:
- virtual ~nsCSSKeyframeStyleDeclaration();
- // This reference is not reference-counted. The rule object tells us
- // when it's about to go away.
- nsCSSKeyframeRule* MOZ_NON_OWNING_REF mRule;
- };
- class nsCSSKeyframeRule final : public mozilla::css::Rule,
- public nsIDOMCSSKeyframeRule
- {
- public:
- // Steals the contents of aKeys, and takes the reference in Declaration
- nsCSSKeyframeRule(InfallibleTArray<float>&& aKeys,
- already_AddRefed<mozilla::css::Declaration>&& aDeclaration,
- uint32_t aLineNumber, uint32_t aColumnNumber)
- : mozilla::css::Rule(aLineNumber, aColumnNumber)
- , mKeys(mozilla::Move(aKeys))
- , mDeclaration(mozilla::Move(aDeclaration))
- {
- mDeclaration->SetOwningRule(this);
- }
- private:
- nsCSSKeyframeRule(const nsCSSKeyframeRule& aCopy);
- ~nsCSSKeyframeRule();
- public:
- NS_DECL_CYCLE_COLLECTING_ISUPPORTS
- NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsCSSKeyframeRule, mozilla::css::Rule)
- // Rule methods
- DECL_STYLE_RULE_INHERIT
- #ifdef DEBUG
- virtual void List(FILE* out = stdout, int32_t aIndent = 0) const override;
- #endif
- virtual int32_t GetType() const override;
- virtual already_AddRefed<mozilla::css::Rule> Clone() const override;
- // nsIDOMCSSRule interface
- NS_DECL_NSIDOMCSSRULE
- // nsIDOMCSSKeyframeRule interface
- NS_DECL_NSIDOMCSSKEYFRAMERULE
- const nsTArray<float>& GetKeys() const { return mKeys; }
- mozilla::css::Declaration* Declaration() { return mDeclaration; }
- void ChangeDeclaration(mozilla::css::Declaration* aDeclaration);
- virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const override;
- void DoGetKeyText(nsAString &aKeyText) const;
- private:
- nsTArray<float> mKeys;
- RefPtr<mozilla::css::Declaration> mDeclaration;
- // lazily created when needed:
- RefPtr<nsCSSKeyframeStyleDeclaration> mDOMDeclaration;
- };
- class nsCSSKeyframesRule final : public mozilla::css::GroupRule,
- public nsIDOMCSSKeyframesRule
- {
- public:
- nsCSSKeyframesRule(const nsSubstring& aName,
- uint32_t aLineNumber, uint32_t aColumnNumber)
- : mozilla::css::GroupRule(aLineNumber, aColumnNumber)
- , mName(aName)
- {
- }
- private:
- nsCSSKeyframesRule(const nsCSSKeyframesRule& aCopy);
- ~nsCSSKeyframesRule();
- public:
- NS_DECL_ISUPPORTS_INHERITED
- // Rule methods
- #ifdef DEBUG
- virtual void List(FILE* out = stdout, int32_t aIndent = 0) const override;
- #endif
- virtual int32_t GetType() const override;
- virtual already_AddRefed<mozilla::css::Rule> Clone() const override;
- virtual nsIDOMCSSRule* GetDOMRule() override
- {
- return this;
- }
- virtual nsIDOMCSSRule* GetExistingDOMRule() override
- {
- return this;
- }
- // nsIDOMCSSRule interface
- NS_DECL_NSIDOMCSSRULE
- // nsIDOMCSSKeyframesRule interface
- NS_DECL_NSIDOMCSSKEYFRAMESRULE
- // rest of GroupRule
- virtual bool UseForPresentation(nsPresContext* aPresContext,
- nsMediaQueryResultCacheKey& aKey) override;
- const nsString& GetName() { return mName; }
- virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const override;
- private:
- uint32_t FindRuleIndexForKey(const nsAString& aKey);
- nsString mName;
- };
- class nsCSSPageRule;
- class nsCSSPageStyleDeclaration final : public nsDOMCSSDeclaration
- {
- public:
- explicit nsCSSPageStyleDeclaration(nsCSSPageRule *aRule);
- NS_IMETHOD GetParentRule(nsIDOMCSSRule **aParent) override;
- void DropReference() { mRule = nullptr; }
- virtual mozilla::DeclarationBlock* GetCSSDeclaration(Operation aOperation) override;
- virtual nsresult SetCSSDeclaration(mozilla::DeclarationBlock* aDecl) override;
- virtual void GetCSSParsingEnvironment(CSSParsingEnvironment& aCSSParseEnv) override;
- virtual nsIDocument* DocToUpdate() override;
- NS_DECL_CYCLE_COLLECTING_ISUPPORTS
- NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(nsCSSPageStyleDeclaration,
- nsICSSDeclaration)
- virtual nsINode *GetParentObject() override;
- virtual mozilla::dom::DocGroup* GetDocGroup() const override;
- protected:
- virtual ~nsCSSPageStyleDeclaration();
- // This reference is not reference-counted. The rule object tells us
- // when it's about to go away.
- nsCSSPageRule* MOZ_NON_OWNING_REF mRule;
- };
- class nsCSSPageRule final : public mozilla::css::Rule,
- public nsIDOMCSSPageRule
- {
- public:
- nsCSSPageRule(mozilla::css::Declaration* aDeclaration,
- uint32_t aLineNumber, uint32_t aColumnNumber)
- : mozilla::css::Rule(aLineNumber, aColumnNumber)
- , mDeclaration(aDeclaration)
- {
- mDeclaration->SetOwningRule(this);
- }
- private:
- nsCSSPageRule(const nsCSSPageRule& aCopy);
- ~nsCSSPageRule();
- public:
- NS_DECL_CYCLE_COLLECTING_ISUPPORTS
- NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsCSSPageRule, nsIDOMCSSPageRule)
- // Rule methods
- DECL_STYLE_RULE_INHERIT
- #ifdef DEBUG
- virtual void List(FILE* out = stdout, int32_t aIndent = 0) const override;
- #endif
- virtual int32_t GetType() const override;
- virtual already_AddRefed<mozilla::css::Rule> Clone() const override;
- // nsIDOMCSSRule interface
- NS_DECL_NSIDOMCSSRULE
- // nsIDOMCSSPageRule interface
- NS_DECL_NSIDOMCSSPAGERULE
- mozilla::css::Declaration* Declaration() { return mDeclaration; }
- void ChangeDeclaration(mozilla::css::Declaration* aDeclaration);
- virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const override;
- private:
- RefPtr<mozilla::css::Declaration> mDeclaration;
- // lazily created when needed:
- RefPtr<nsCSSPageStyleDeclaration> mDOMDeclaration;
- };
- namespace mozilla {
- class CSSSupportsRule : public css::GroupRule,
- public nsIDOMCSSSupportsRule
- {
- public:
- CSSSupportsRule(bool aConditionMet, const nsString& aCondition,
- uint32_t aLineNumber, uint32_t aColumnNumber);
- CSSSupportsRule(const CSSSupportsRule& aCopy);
- // Rule methods
- #ifdef DEBUG
- virtual void List(FILE* out = stdout, int32_t aIndent = 0) const override;
- #endif
- virtual int32_t GetType() const override;
- virtual already_AddRefed<mozilla::css::Rule> Clone() const override;
- virtual bool UseForPresentation(nsPresContext* aPresContext,
- nsMediaQueryResultCacheKey& aKey) override;
- virtual nsIDOMCSSRule* GetDOMRule() override
- {
- return this;
- }
- virtual nsIDOMCSSRule* GetExistingDOMRule() override
- {
- return this;
- }
- NS_DECL_ISUPPORTS_INHERITED
- // nsIDOMCSSRule interface
- NS_DECL_NSIDOMCSSRULE
- // nsIDOMCSSGroupingRule interface
- NS_DECL_NSIDOMCSSGROUPINGRULE
- // nsIDOMCSSConditionRule interface
- NS_DECL_NSIDOMCSSCONDITIONRULE
- // nsIDOMCSSSupportsRule interface
- NS_DECL_NSIDOMCSSSUPPORTSRULE
- virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const override;
- protected:
- virtual ~CSSSupportsRule();
- bool mUseGroup;
- nsString mCondition;
- };
- } // namespace mozilla
- class nsCSSCounterStyleRule final : public mozilla::css::Rule,
- public nsIDOMCSSCounterStyleRule
- {
- public:
- explicit nsCSSCounterStyleRule(const nsAString& aName,
- uint32_t aLineNumber, uint32_t aColumnNumber)
- : mozilla::css::Rule(aLineNumber, aColumnNumber)
- , mName(aName)
- , mGeneration(0)
- {
- }
- private:
- nsCSSCounterStyleRule(const nsCSSCounterStyleRule& aCopy);
- ~nsCSSCounterStyleRule();
- public:
- NS_DECL_ISUPPORTS
- // Rule methods
- DECL_STYLE_RULE_INHERIT
- #ifdef DEBUG
- virtual void List(FILE* out = stdout, int32_t aIndent = 0) const override;
- #endif
- virtual int32_t GetType() const override;
- virtual already_AddRefed<mozilla::css::Rule> Clone() const override;
- // nsIDOMCSSRule interface
- NS_DECL_NSIDOMCSSRULE
- // nsIDOMCSSCounterStyleRule
- NS_DECL_NSIDOMCSSCOUNTERSTYLERULE
- // This function is only used to check whether a non-empty value, which has
- // been accepted by parser, is valid for the given system and descriptor.
- static bool CheckDescValue(int32_t aSystem,
- nsCSSCounterDesc aDescID,
- const nsCSSValue& aValue);
- const nsString& GetName() const { return mName; }
- uint32_t GetGeneration() const { return mGeneration; }
- int32_t GetSystem() const;
- const nsCSSValue& GetSystemArgument() const;
- const nsCSSValue& GetDesc(nsCSSCounterDesc aDescID) const
- {
- MOZ_ASSERT(aDescID >= 0 && aDescID < eCSSCounterDesc_COUNT,
- "descriptor ID out of range");
- return mValues[aDescID];
- }
- void SetDesc(nsCSSCounterDesc aDescID, const nsCSSValue& aValue);
- virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const override;
- private:
- typedef NS_STDCALL_FUNCPROTO(nsresult, Getter, nsCSSCounterStyleRule,
- GetSymbols, (nsAString&));
- static const Getter kGetters[];
- nsresult GetDescriptor(nsCSSCounterDesc aDescID, nsAString& aValue);
- nsresult SetDescriptor(nsCSSCounterDesc aDescID, const nsAString& aValue);
- nsString mName;
- nsCSSValue mValues[eCSSCounterDesc_COUNT];
- uint32_t mGeneration;
- };
- #endif /* !defined(nsCSSRules_h_) */
|