From 7fb5d53a791a4e308e2857410567b5005b3f0f62 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Thu, 4 Apr 2024 19:52:36 +0200 Subject: [PATCH] Issue #2490 - Part 19: Convert CSSCounterStyleRule to WebIDL. --- dom/base/nsDOMClassInfo.cpp | 11 ----------- dom/base/nsDOMClassInfoClasses.h | 3 --- dom/base/nsWrapperCache.h | 2 -- dom/bindings/Bindings.conf | 5 +++++ dom/webidl/CSSCounterStyleRule.webidl | 23 +++++++++++++++++++++++ dom/webidl/moz.build | 1 + layout/style/nsCSSRules.cpp | 6 ++---- layout/style/nsCSSRules.h | 23 ++++++++++++++++++++++- 8 files changed, 53 insertions(+), 21 deletions(-) create mode 100644 dom/webidl/CSSCounterStyleRule.webidl diff --git a/dom/base/nsDOMClassInfo.cpp b/dom/base/nsDOMClassInfo.cpp index f1c0ca43ec..bc3a6fefaa 100644 --- a/dom/base/nsDOMClassInfo.cpp +++ b/dom/base/nsDOMClassInfo.cpp @@ -72,7 +72,6 @@ #include "nsMemory.h" // includes needed for the prototype chain interfaces -#include "nsIDOMCSSCounterStyleRule.h" #include "nsIDOMXULCommandDispatcher.h" #include "nsIControllers.h" #ifdef MOZ_XUL @@ -216,11 +215,6 @@ static nsDOMClassInfoData sClassInfoData[] = { NS_DEFINE_CHROME_ONLY_CLASSINFO_DATA(ChromeMessageSender, nsDOMGenericSH, DOM_DEFAULT_SCRIPTABLE_FLAGS) - - NS_DEFINE_CLASSINFO_DATA(CSSCounterStyleRule, nsDOMGenericSH, - DOM_DEFAULT_SCRIPTABLE_FLAGS | - nsIXPCScriptable::WANT_PRECREATE) - NS_DEFINE_CHROME_XBL_CLASSINFO_DATA(XULControlElement, nsDOMGenericSH, DOM_DEFAULT_SCRIPTABLE_FLAGS) NS_DEFINE_CHROME_XBL_CLASSINFO_DATA(XULLabeledControlElement, nsDOMGenericSH, @@ -537,11 +531,6 @@ nsDOMClassInfo::Init() DOM_CLASSINFO_MAP_ENTRY(nsIMessageSender) DOM_CLASSINFO_MAP_END - DOM_CLASSINFO_MAP_BEGIN(CSSCounterStyleRule, nsIDOMCSSCounterStyleRule) - DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSRule) - DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSCounterStyleRule) - DOM_CLASSINFO_MAP_END - DOM_CLASSINFO_MAP_BEGIN_NO_CLASS_IF(XULControlElement, nsIDOMXULControlElement) DOM_CLASSINFO_MAP_ENTRY(nsIDOMXULControlElement) DOM_CLASSINFO_MAP_END diff --git a/dom/base/nsDOMClassInfoClasses.h b/dom/base/nsDOMClassInfoClasses.h index ad96206cdb..843cdc85bf 100644 --- a/dom/base/nsDOMClassInfoClasses.h +++ b/dom/base/nsDOMClassInfoClasses.h @@ -27,9 +27,6 @@ DOMCI_CLASS(ContentProcessMessageManager) DOMCI_CLASS(ChromeMessageBroadcaster) DOMCI_CLASS(ChromeMessageSender) -// @counter-style in CSS -DOMCI_CLASS(CSSCounterStyleRule) - DOMCI_CLASS(XULControlElement) DOMCI_CLASS(XULLabeledControlElement) DOMCI_CLASS(XULButtonElement) diff --git a/dom/base/nsWrapperCache.h b/dom/base/nsWrapperCache.h index 3adaaa25e8..8368581c96 100644 --- a/dom/base/nsWrapperCache.h +++ b/dom/base/nsWrapperCache.h @@ -23,7 +23,6 @@ class ProcessGlobal; class SandboxPrivate; class nsInProcessTabChildGlobal; class nsWindowRoot; -class nsCSSCounterStyleRule; #define NS_WRAPPERCACHE_IID \ { 0x6f3179a1, 0x36f7, 0x4a5c, \ @@ -281,7 +280,6 @@ private: friend class SandboxPrivate; friend class nsInProcessTabChildGlobal; friend class nsWindowRoot; - friend class nsCSSCounterStyleRule; void SetIsNotDOMBinding() { diff --git a/dom/bindings/Bindings.conf b/dom/bindings/Bindings.conf index fcc2727220..ffb4edbf5d 100644 --- a/dom/bindings/Bindings.conf +++ b/dom/bindings/Bindings.conf @@ -203,6 +203,11 @@ DOMInterfaces = { 'headerFile': 'mozilla/css/GroupRule.h', }, +'CSSCounterStyleRule': { + 'nativeType': 'nsCSSCounterStyleRule', + 'headerFile': 'nsCSSRules.h', +}, + 'CSSFontFaceRule': { 'nativeType': 'nsCSSFontFaceRule', 'headerFile': 'nsCSSRules.h', diff --git a/dom/webidl/CSSCounterStyleRule.webidl b/dom/webidl/CSSCounterStyleRule.webidl new file mode 100644 index 0000000000..bb6f7e0e1b --- /dev/null +++ b/dom/webidl/CSSCounterStyleRule.webidl @@ -0,0 +1,23 @@ +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 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/. + * + * The origin of this IDL file is + * https://drafts.csswg.org/css-counter-styles-3/#the-csscounterstylerule-interface + */ + +// https://drafts.csswg.org/css-counter-styles-3/#the-csscounterstylerule-interface +interface CSSCounterStyleRule : CSSRule { + attribute DOMString name; + attribute DOMString system; + attribute DOMString symbols; + attribute DOMString additiveSymbols; + attribute DOMString negative; + attribute DOMString prefix; + attribute DOMString suffix; + attribute DOMString range; + attribute DOMString pad; + attribute DOMString speakAs; + attribute DOMString fallback; +}; diff --git a/dom/webidl/moz.build b/dom/webidl/moz.build index 18d4fdc2b5..f821b3ce4e 100644 --- a/dom/webidl/moz.build +++ b/dom/webidl/moz.build @@ -91,6 +91,7 @@ WEBIDL_FILES = [ 'CSS.webidl', 'CSSAnimation.webidl', 'CSSConditionRule.webidl', + 'CSSCounterStyleRule.webidl', 'CSSFontFaceRule.webidl', 'CSSFontFeatureValuesRule.webidl', 'CSSGroupingRule.webidl', diff --git a/layout/style/nsCSSRules.cpp b/layout/style/nsCSSRules.cpp index 5c99fbd37c..08d2deb7f0 100644 --- a/layout/style/nsCSSRules.cpp +++ b/layout/style/nsCSSRules.cpp @@ -43,6 +43,7 @@ #include "mozilla/dom/CSSFontFeatureValuesRuleBinding.h" #include "mozilla/dom/CSSKeyframeRuleBinding.h" #include "mozilla/dom/CSSKeyframesRuleBinding.h" +#include "mozilla/dom/CSSCounterStyleRuleBinding.h" #include "StyleRule.h" #include "nsFont.h" #include "nsIURI.h" @@ -2913,7 +2914,6 @@ nsCSSCounterStyleRule::nsCSSCounterStyleRule(const nsCSSCounterStyleRule& aCopy) , mName(aCopy.mName) , mGeneration(aCopy.mGeneration) { - SetIsNotDOMBinding(); for (size_t i = 0; i < ArrayLength(mValues); ++i) { mValues[i] = aCopy.mValues[i]; } @@ -2945,7 +2945,6 @@ NS_IMPL_RELEASE_INHERITED(nsCSSCounterStyleRule, mozilla::css::Rule) // implementation. NS_INTERFACE_MAP_BEGIN(nsCSSCounterStyleRule) NS_INTERFACE_MAP_ENTRY(nsIDOMCSSCounterStyleRule) - NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(CSSCounterStyleRule) NS_INTERFACE_MAP_END_INHERITING(mozilla::css::Rule) bool @@ -3350,6 +3349,5 @@ nsCSSCounterStyleRule::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const nsCSSCounterStyleRule::WrapObject(JSContext* aCx, JS::Handle aGivenProto) { - NS_NOTREACHED("We called SetIsNotDOMBinding() in our constructor"); - return nullptr; + return CSSCounterStyleRuleBinding::Wrap(aCx, this, aGivenProto); } diff --git a/layout/style/nsCSSRules.h b/layout/style/nsCSSRules.h index 81e4f04cfb..6dc9b141cc 100644 --- a/layout/style/nsCSSRules.h +++ b/layout/style/nsCSSRules.h @@ -652,7 +652,6 @@ public: , mName(aName) , mGeneration(0) { - SetIsNotDOMBinding(); } private: @@ -676,6 +675,28 @@ public: // WebIDL interface uint16_t Type() const override; void GetCssTextImpl(nsAString& aCssText) const override; + // The XPCOM GetName is OK + // The XPCOM SetName is OK + // The XPCOM GetSystem is OK + // The XPCOM SetSystem is OK + // The XPCOM GetSymbols is OK + // The XPCOM SetSymbols is OK + // The XPCOM GetAdditiveSymbols is OK + // The XPCOM SetAdditiveSymbols is OK + // The XPCOM GetNegative is OK + // The XPCOM SetNegative is OK + // The XPCOM GetPrefix is OK + // The XPCOM SetPrefix is OK + // The XPCOM GetSuffix is OK + // The XPCOM SetSuffix is OK + // The XPCOM GetRange is OK + // The XPCOM SetRange is OK + // The XPCOM GetPad is OK + // The XPCOM SetPad is OK + // The XPCOM GetSpeakAs is OK + // The XPCOM SetSpeakAs is OK + // The XPCOM GetFallback is OK + // The XPCOM SetFallback is OK // 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.