mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-08 16:58:38 +09:00
Merge remote-tracking branch 'origin/tracking' into custom
This commit is contained in:
commit
4f792793c2
64 changed files with 1429 additions and 1119 deletions
|
|
@ -67,21 +67,10 @@
|
|||
#include "nsIDOMEventTarget.h"
|
||||
|
||||
// CSS related includes
|
||||
#include "nsCSSRules.h"
|
||||
#include "nsIDOMCSSRule.h"
|
||||
#include "nsMemory.h"
|
||||
|
||||
// includes needed for the prototype chain interfaces
|
||||
#include "nsIDOMCSSKeyframeRule.h"
|
||||
#include "nsIDOMCSSKeyframesRule.h"
|
||||
#include "nsIDOMCSSImportRule.h"
|
||||
#include "nsIDOMCSSMediaRule.h"
|
||||
#include "nsIDOMCSSFontFaceRule.h"
|
||||
#include "nsIDOMCSSMozDocumentRule.h"
|
||||
#include "nsIDOMCSSSupportsRule.h"
|
||||
#include "nsIDOMCSSCounterStyleRule.h"
|
||||
#include "nsIDOMCSSPageRule.h"
|
||||
#include "nsIDOMCSSStyleRule.h"
|
||||
#include "nsIDOMXULCommandDispatcher.h"
|
||||
#include "nsIControllers.h"
|
||||
#ifdef MOZ_XUL
|
||||
|
|
@ -188,16 +177,6 @@ static nsDOMClassInfoData sClassInfoData[] = {
|
|||
|
||||
// Misc Core related classes
|
||||
|
||||
// CSS classes
|
||||
NS_DEFINE_CLASSINFO_DATA(CSSStyleRule, nsDOMGenericSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS)
|
||||
NS_DEFINE_CLASSINFO_DATA(CSSImportRule, nsDOMGenericSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS)
|
||||
NS_DEFINE_CLASSINFO_DATA(CSSMediaRule, nsDOMGenericSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS)
|
||||
NS_DEFINE_CLASSINFO_DATA(CSSNameSpaceRule, nsDOMGenericSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS)
|
||||
|
||||
// XUL classes
|
||||
#ifdef MOZ_XUL
|
||||
NS_DEFINE_CHROME_XBL_CLASSINFO_DATA(XULCommandDispatcher, nsDOMGenericSH,
|
||||
|
|
@ -220,15 +199,6 @@ static nsDOMClassInfoData sClassInfoData[] = {
|
|||
DEFAULT_SCRIPTABLE_FLAGS)
|
||||
#endif
|
||||
|
||||
NS_DEFINE_CLASSINFO_DATA(CSSMozDocumentRule, nsDOMGenericSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS)
|
||||
|
||||
NS_DEFINE_CLASSINFO_DATA(CSSSupportsRule, nsDOMGenericSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS)
|
||||
|
||||
NS_DEFINE_CLASSINFO_DATA(CSSFontFaceRule, nsDOMGenericSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS)
|
||||
|
||||
NS_DEFINE_CHROME_ONLY_CLASSINFO_DATA(ContentFrameMessageManager,
|
||||
nsMessageManagerSH<nsEventTargetSH>,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS |
|
||||
|
|
@ -244,21 +214,6 @@ static nsDOMClassInfoData sClassInfoData[] = {
|
|||
NS_DEFINE_CHROME_ONLY_CLASSINFO_DATA(ChromeMessageSender, nsDOMGenericSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS)
|
||||
|
||||
|
||||
NS_DEFINE_CLASSINFO_DATA(CSSKeyframeRule, nsDOMGenericSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS)
|
||||
NS_DEFINE_CLASSINFO_DATA(CSSKeyframesRule, nsDOMGenericSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS)
|
||||
|
||||
NS_DEFINE_CLASSINFO_DATA(CSSCounterStyleRule, nsDOMGenericSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS)
|
||||
|
||||
NS_DEFINE_CLASSINFO_DATA(CSSPageRule, nsDOMGenericSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS)
|
||||
|
||||
NS_DEFINE_CLASSINFO_DATA(CSSFontFeatureValuesRule, nsDOMGenericSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS)
|
||||
|
||||
NS_DEFINE_CHROME_XBL_CLASSINFO_DATA(XULControlElement, nsDOMGenericSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS)
|
||||
NS_DEFINE_CHROME_XBL_CLASSINFO_DATA(XULLabeledControlElement, nsDOMGenericSH,
|
||||
|
|
@ -511,22 +466,6 @@ nsDOMClassInfo::Init()
|
|||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMDOMConstructor)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(CSSStyleRule, nsIDOMCSSStyleRule)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSStyleRule)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(CSSImportRule, nsIDOMCSSImportRule)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSImportRule)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(CSSMediaRule, nsIDOMCSSMediaRule)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSMediaRule)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN_NO_CLASS_IF(CSSNameSpaceRule, nsIDOMCSSRule)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSRule)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
#ifdef MOZ_XUL
|
||||
DOM_CLASSINFO_MAP_BEGIN(XULCommandDispatcher, nsIDOMXULCommandDispatcher)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMXULCommandDispatcher)
|
||||
|
|
@ -560,18 +499,6 @@ nsDOMClassInfo::Init()
|
|||
DOM_CLASSINFO_MAP_END
|
||||
#endif
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(CSSMozDocumentRule, nsIDOMCSSMozDocumentRule)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSMozDocumentRule)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(CSSSupportsRule, nsIDOMCSSSupportsRule)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSSupportsRule)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(CSSFontFaceRule, nsIDOMCSSFontFaceRule)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSFontFaceRule)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN_NO_CLASS_IF(ContentFrameMessageManager, nsISupports)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMEventTarget)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIMessageListenerManager)
|
||||
|
|
@ -603,26 +530,6 @@ nsDOMClassInfo::Init()
|
|||
DOM_CLASSINFO_MAP_ENTRY(nsIMessageSender)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(CSSKeyframeRule, nsIDOMCSSKeyframeRule)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSKeyframeRule)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(CSSKeyframesRule, nsIDOMCSSKeyframesRule)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSKeyframesRule)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(CSSCounterStyleRule, nsIDOMCSSCounterStyleRule)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSCounterStyleRule)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(CSSPageRule, nsIDOMCSSPageRule)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSPageRule)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(CSSFontFeatureValuesRule, nsIDOMCSSFontFeatureValuesRule)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSFontFeatureValuesRule)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN_NO_CLASS_IF(XULControlElement, nsIDOMXULControlElement)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMXULControlElement)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
|
|
|||
|
|
@ -7,12 +7,6 @@
|
|||
DOMCI_CLASS(DOMPrototype)
|
||||
DOMCI_CLASS(DOMConstructor)
|
||||
|
||||
// CSS classes
|
||||
DOMCI_CLASS(CSSStyleRule)
|
||||
DOMCI_CLASS(CSSImportRule)
|
||||
DOMCI_CLASS(CSSMediaRule)
|
||||
DOMCI_CLASS(CSSNameSpaceRule)
|
||||
|
||||
// XUL classes
|
||||
#ifdef MOZ_XUL
|
||||
DOMCI_CLASS(XULCommandDispatcher)
|
||||
|
|
@ -28,27 +22,11 @@ DOMCI_CLASS(XULTemplateBuilder)
|
|||
DOMCI_CLASS(XULTreeBuilder)
|
||||
#endif
|
||||
|
||||
DOMCI_CLASS(CSSMozDocumentRule)
|
||||
DOMCI_CLASS(CSSSupportsRule)
|
||||
|
||||
// @font-face in CSS
|
||||
DOMCI_CLASS(CSSFontFaceRule)
|
||||
|
||||
DOMCI_CLASS(ContentFrameMessageManager)
|
||||
DOMCI_CLASS(ContentProcessMessageManager)
|
||||
DOMCI_CLASS(ChromeMessageBroadcaster)
|
||||
DOMCI_CLASS(ChromeMessageSender)
|
||||
|
||||
DOMCI_CLASS(CSSKeyframeRule)
|
||||
DOMCI_CLASS(CSSKeyframesRule)
|
||||
|
||||
// @counter-style in CSS
|
||||
DOMCI_CLASS(CSSCounterStyleRule)
|
||||
|
||||
DOMCI_CLASS(CSSPageRule)
|
||||
|
||||
DOMCI_CLASS(CSSFontFeatureValuesRule)
|
||||
|
||||
DOMCI_CLASS(XULControlElement)
|
||||
DOMCI_CLASS(XULLabeledControlElement)
|
||||
DOMCI_CLASS(XULButtonElement)
|
||||
|
|
|
|||
|
|
@ -4940,7 +4940,7 @@ nsDocument::StyleRuleChanged(StyleSheet* aSheet,
|
|||
DO_STYLESHEET_NOTIFICATION(StyleRuleChangeEvent,
|
||||
"StyleRuleChanged",
|
||||
mRule,
|
||||
aStyleRule ? aStyleRule->GetDOMRule() : nullptr);
|
||||
aStyleRule);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -4954,8 +4954,7 @@ nsDocument::StyleRuleAdded(StyleSheet* aSheet,
|
|||
DO_STYLESHEET_NOTIFICATION(StyleRuleChangeEvent,
|
||||
"StyleRuleAdded",
|
||||
mRule,
|
||||
aStyleRule ? aStyleRule->GetDOMRule()
|
||||
: nullptr);
|
||||
aStyleRule);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -4969,8 +4968,7 @@ nsDocument::StyleRuleRemoved(StyleSheet* aSheet,
|
|||
DO_STYLESHEET_NOTIFICATION(StyleRuleChangeEvent,
|
||||
"StyleRuleRemoved",
|
||||
mRule,
|
||||
aStyleRule ? aStyleRule->GetDOMRule()
|
||||
: nullptr);
|
||||
aStyleRule);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ class TabChildGlobal;
|
|||
class ProcessGlobal;
|
||||
} // namespace dom
|
||||
} // namespace mozilla
|
||||
|
||||
class SandboxPrivate;
|
||||
class nsInProcessTabChildGlobal;
|
||||
class nsWindowRoot;
|
||||
|
|
@ -144,7 +145,7 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
bool PreservingWrapper()
|
||||
bool PreservingWrapper() const
|
||||
{
|
||||
return HasWrapperFlag(WRAPPER_BIT_PRESERVED);
|
||||
}
|
||||
|
|
@ -163,7 +164,7 @@ public:
|
|||
/**
|
||||
* Returns true if the object has a non-gray wrapper.
|
||||
*/
|
||||
bool IsBlack();
|
||||
bool IsBlack() const;
|
||||
|
||||
/**
|
||||
* Returns true if the object has a black wrapper,
|
||||
|
|
@ -271,11 +272,15 @@ protected:
|
|||
}
|
||||
|
||||
private:
|
||||
// Friend declarations for things that need to be able to call
|
||||
// SetIsNotDOMBinding(). The goal is to get rid of all of these, and
|
||||
// SetIsNotDOMBinding() too.
|
||||
friend class mozilla::dom::TabChildGlobal;
|
||||
friend class mozilla::dom::ProcessGlobal;
|
||||
friend class SandboxPrivate;
|
||||
friend class nsInProcessTabChildGlobal;
|
||||
friend class nsWindowRoot;
|
||||
|
||||
void SetIsNotDOMBinding()
|
||||
{
|
||||
MOZ_ASSERT(!mWrapper && !(GetWrapperFlags() & ~WRAPPER_IS_NOT_DOM_BINDING),
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ nsWrapperCache::GetWrapper() const
|
|||
}
|
||||
|
||||
inline bool
|
||||
nsWrapperCache::IsBlack()
|
||||
nsWrapperCache::IsBlack() const
|
||||
{
|
||||
JSObject* o = GetWrapperPreserveColor();
|
||||
return o && !JS::ObjectIsMarkedGray(o);
|
||||
|
|
|
|||
|
|
@ -197,23 +197,96 @@ DOMInterfaces = {
|
|||
'nativeType': 'nsDOMCSSDeclaration'
|
||||
},
|
||||
|
||||
'CSSConditionRule': {
|
||||
'concrete': False,
|
||||
'nativeType': 'mozilla::css::ConditionRule',
|
||||
'headerFile': 'mozilla/css/GroupRule.h',
|
||||
},
|
||||
|
||||
'CSSCounterStyleRule': {
|
||||
'nativeType': 'nsCSSCounterStyleRule',
|
||||
'headerFile': 'nsCSSRules.h',
|
||||
},
|
||||
|
||||
'CSSFontFaceRule': {
|
||||
'nativeType': 'nsCSSFontFaceRule',
|
||||
'headerFile': 'nsCSSRules.h',
|
||||
},
|
||||
|
||||
'CSSFontFeatureValuesRule': {
|
||||
'nativeType': 'nsCSSFontFeatureValuesRule',
|
||||
'headerFile': 'nsCSSRules.h',
|
||||
},
|
||||
|
||||
'CSSGroupingRule': {
|
||||
'concrete': False,
|
||||
'nativeType': 'mozilla::css::GroupRule',
|
||||
},
|
||||
|
||||
'CSSImportRule': {
|
||||
'nativeType': 'mozilla::css::ImportRule',
|
||||
},
|
||||
|
||||
'CSSKeyframeRule': {
|
||||
'nativeType': 'nsCSSKeyframeRule',
|
||||
'headerFile': 'nsCSSRules.h',
|
||||
},
|
||||
|
||||
'CSSKeyframesRule': {
|
||||
'nativeType': 'nsCSSKeyframesRule',
|
||||
'headerFile': 'nsCSSRules.h',
|
||||
},
|
||||
|
||||
'CSSLexer': {
|
||||
'wrapperCache': False
|
||||
},
|
||||
|
||||
'CSSMediaRule': {
|
||||
'nativeType': 'mozilla::css::MediaRule',
|
||||
'headerFile': 'nsCSSRules.h',
|
||||
},
|
||||
|
||||
'CSSMozDocumentRule': {
|
||||
'nativeType': 'mozilla::css::DocumentRule',
|
||||
'headerFile': 'nsCSSRules.h',
|
||||
},
|
||||
|
||||
'CSSNamespaceRule': {
|
||||
'nativeType': 'mozilla::css::NameSpaceRule',
|
||||
},
|
||||
|
||||
'CSSPageRule': {
|
||||
'nativeType': 'nsCSSPageRule',
|
||||
'headerFile': 'nsCSSRules.h',
|
||||
},
|
||||
|
||||
'CSSPrimitiveValue': {
|
||||
'nativeType': 'nsROCSSPrimitiveValue',
|
||||
},
|
||||
|
||||
'CSSRule': {
|
||||
'concrete': False,
|
||||
'nativeType': 'mozilla::css::Rule'
|
||||
},
|
||||
|
||||
'CSSStyleDeclaration': {
|
||||
'nativeType': 'nsICSSDeclaration'
|
||||
},
|
||||
|
||||
'CSSStyleRule': {
|
||||
'nativeType': 'mozilla::BindingStyleRule',
|
||||
},
|
||||
|
||||
'CSSStyleSheet': {
|
||||
'nativeType': 'mozilla::StyleSheet',
|
||||
'binaryNames': { 'ownerRule': 'DOMOwnerRule' },
|
||||
},
|
||||
|
||||
'CSSSupportsRule': {
|
||||
'nativeType': 'mozilla::CSSSupportsRule',
|
||||
'headerFile': 'nsCSSRules.h',
|
||||
},
|
||||
|
||||
'CSSValue': {
|
||||
'concrete': False
|
||||
},
|
||||
|
|
@ -1689,7 +1762,6 @@ def addExternalIface(iface, nativeType=None, headerFile=None,
|
|||
|
||||
addExternalIface('ApplicationCache', nativeType='nsIDOMOfflineResourceList')
|
||||
addExternalIface('Counter')
|
||||
addExternalIface('CSSRule')
|
||||
addExternalIface('RTCDataChannel', nativeType='nsIDOMDataChannel')
|
||||
addExternalIface('HitRegionOptions', nativeType='nsISupports')
|
||||
addExternalIface('imgINotificationObserver', nativeType='imgINotificationObserver')
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@
|
|||
* 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/. */
|
||||
|
||||
#include "nsIDOMCSSRule.idl"
|
||||
#include "nsISupports.idl"
|
||||
|
||||
[scriptable, uuid(9b5e48ce-d84c-4e31-aff5-34e9f4141313)]
|
||||
interface nsIDOMCSSCounterStyleRule : nsIDOMCSSRule
|
||||
interface nsIDOMCSSCounterStyleRule : nsISupports
|
||||
{
|
||||
attribute DOMString name;
|
||||
attribute DOMString system;
|
||||
|
|
|
|||
|
|
@ -3,10 +3,12 @@
|
|||
* 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/. */
|
||||
|
||||
#include "nsIDOMCSSRule.idl"
|
||||
#include "nsISupports.idl"
|
||||
|
||||
interface nsIDOMCSSStyleDeclaration;
|
||||
|
||||
[scriptable, uuid(db971017-fe0c-4529-972c-8217f2fee217)]
|
||||
interface nsIDOMCSSFontFaceRule : nsIDOMCSSRule
|
||||
interface nsIDOMCSSFontFaceRule : nsISupports
|
||||
{
|
||||
readonly attribute nsIDOMCSSStyleDeclaration style;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@
|
|||
* 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/. */
|
||||
|
||||
#include "nsIDOMCSSRule.idl"
|
||||
#include "nsISupports.idl"
|
||||
|
||||
[scriptable, uuid(a343d27f-1da6-4fc3-9355-d4ca434f958e)]
|
||||
interface nsIDOMCSSFontFeatureValuesRule : nsIDOMCSSRule
|
||||
interface nsIDOMCSSFontFeatureValuesRule : nsISupports
|
||||
{
|
||||
attribute DOMString fontFamily;
|
||||
// raises(DOMException) on setting
|
||||
|
|
|
|||
|
|
@ -3,13 +3,15 @@
|
|||
* 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/. */
|
||||
|
||||
#include "nsIDOMCSSRule.idl"
|
||||
#include "nsISupports.idl"
|
||||
|
||||
interface nsIDOMCSSRuleList;
|
||||
|
||||
/**
|
||||
* Interface for at-rules that have child rules in the CSS OM.
|
||||
*/
|
||||
[scriptable, uuid(a0e3324a-f911-4baf-9591-5322c76cbb0d)]
|
||||
interface nsIDOMCSSGroupingRule : nsIDOMCSSRule
|
||||
interface nsIDOMCSSGroupingRule : nsISupports
|
||||
{
|
||||
readonly attribute nsIDOMCSSRuleList cssRules;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,10 +3,13 @@
|
|||
* 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/. */
|
||||
|
||||
#include "nsIDOMCSSRule.idl"
|
||||
#include "nsISupports.idl"
|
||||
|
||||
interface nsIDOMMediaList;
|
||||
interface nsIDOMCSSStyleSheet;
|
||||
|
||||
[scriptable, uuid(d3b2b914-01ef-4663-beda-a6475a26f491)]
|
||||
interface nsIDOMCSSImportRule : nsIDOMCSSRule
|
||||
interface nsIDOMCSSImportRule : nsISupports
|
||||
{
|
||||
readonly attribute DOMString href;
|
||||
readonly attribute nsIDOMMediaList media;
|
||||
|
|
|
|||
|
|
@ -3,10 +3,12 @@
|
|||
* 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/. */
|
||||
|
||||
#include "nsIDOMCSSRule.idl"
|
||||
#include "nsISupports.idl"
|
||||
|
||||
interface nsIDOMCSSStyleDeclaration;
|
||||
|
||||
[scriptable, uuid(a281a8b4-eaa2-49a8-8b97-acc2814a57c9)]
|
||||
interface nsIDOMCSSKeyframeRule : nsIDOMCSSRule
|
||||
interface nsIDOMCSSKeyframeRule : nsISupports
|
||||
{
|
||||
attribute DOMString keyText;
|
||||
readonly attribute nsIDOMCSSStyleDeclaration style;
|
||||
|
|
|
|||
|
|
@ -3,10 +3,13 @@
|
|||
* 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/. */
|
||||
|
||||
#include "nsIDOMCSSRule.idl"
|
||||
#include "nsISupports.idl"
|
||||
|
||||
interface nsIDOMCSSRuleList;
|
||||
interface nsIDOMCSSKeyframeRule;
|
||||
|
||||
[scriptable, uuid(400f4b70-ad0a-4047-aba4-ee8019f6b907)]
|
||||
interface nsIDOMCSSKeyframesRule : nsIDOMCSSRule
|
||||
interface nsIDOMCSSKeyframesRule : nsISupports
|
||||
{
|
||||
attribute DOMString name;
|
||||
readonly attribute nsIDOMCSSRuleList cssRules;
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@
|
|||
|
||||
#include "nsIDOMCSSConditionRule.idl"
|
||||
|
||||
interface nsIDOMMediaList;
|
||||
|
||||
/**
|
||||
* Interface for @media rules in the CSS OM.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -3,10 +3,12 @@
|
|||
* 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/. */
|
||||
|
||||
#include "nsIDOMCSSRule.idl"
|
||||
#include "nsISupports.idl"
|
||||
|
||||
interface nsIDOMCSSStyleDeclaration;
|
||||
|
||||
[scriptable, uuid(c119072b-7d2f-4aeb-a90d-e2d6b606c32a)]
|
||||
interface nsIDOMCSSPageRule : nsIDOMCSSRule
|
||||
interface nsIDOMCSSPageRule : nsISupports
|
||||
{
|
||||
//attribute DOMString selectorText;
|
||||
// raises(DOMException) on setting
|
||||
|
|
|
|||
|
|
@ -3,10 +3,12 @@
|
|||
* 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/. */
|
||||
|
||||
#include "nsIDOMCSSRule.idl"
|
||||
#include "nsISupports.idl"
|
||||
|
||||
interface nsIDOMCSSStyleDeclaration;
|
||||
|
||||
[scriptable, uuid(b5e9af48-a7c2-4f88-aae3-58307af4b5a5)]
|
||||
interface nsIDOMCSSStyleRule : nsIDOMCSSRule
|
||||
interface nsIDOMCSSStyleRule : nsISupports
|
||||
{
|
||||
attribute DOMString selectorText;
|
||||
// raises(DOMException) on setting
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@
|
|||
* 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/. */
|
||||
|
||||
#include "nsIDOMCSSRule.idl"
|
||||
#include "nsISupports.idl"
|
||||
|
||||
[scriptable, uuid(98f4c27b-fb35-4355-8fd9-546c4697d71a)]
|
||||
interface nsIDOMCSSUnknownRule : nsIDOMCSSRule
|
||||
interface nsIDOMCSSUnknownRule : nsISupports
|
||||
{
|
||||
};
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
#include "AudioContext.h"
|
||||
#include "js/TypeDecls.h"
|
||||
#include "mozilla/MemoryReporting.h"
|
||||
#include "mozilla/dom/TypedArray.h"
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ var interfaceNamesInGlobalScope =
|
|||
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||
"CSSMozDocumentRule",
|
||||
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||
"CSSNameSpaceRule",
|
||||
"CSSNamespaceRule",
|
||||
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||
"CSSPageRule",
|
||||
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||
|
|
|
|||
|
|
@ -55,6 +55,14 @@ public:
|
|||
Constructor(const GlobalObject& aGlobal, const nsAString& aURL,
|
||||
const Optional<nsAString>& aBase, ErrorResult& aRv);
|
||||
|
||||
// Helper for window.URL constructor
|
||||
static already_AddRefed<URL>
|
||||
WebkitURL(const GlobalObject& aGlobal, const nsAString& aURL,
|
||||
const Optional<nsAString>& aBase, ErrorResult& aRv)
|
||||
{
|
||||
return Constructor(aGlobal, aURL, aBase, aRv);
|
||||
}
|
||||
|
||||
// Helper for Fetch API
|
||||
static already_AddRefed<URL>
|
||||
WorkerConstructor(const GlobalObject& aGlobal, const nsAString& aURL,
|
||||
|
|
|
|||
14
dom/webidl/CSSConditionRule.webidl
Normal file
14
dom/webidl/CSSConditionRule.webidl
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
/* -*- 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-conditional/#the-cssconditionrule-interface
|
||||
*/
|
||||
|
||||
// https://drafts.csswg.org/css-conditional/#the-cssconditionrule-interface
|
||||
interface CSSConditionRule : CSSGroupingRule {
|
||||
[SetterThrows]
|
||||
attribute DOMString conditionText;
|
||||
};
|
||||
23
dom/webidl/CSSCounterStyleRule.webidl
Normal file
23
dom/webidl/CSSCounterStyleRule.webidl
Normal file
|
|
@ -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;
|
||||
};
|
||||
15
dom/webidl/CSSFontFaceRule.webidl
Normal file
15
dom/webidl/CSSFontFaceRule.webidl
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
/* -*- 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-fonts/#om-fontface
|
||||
*/
|
||||
|
||||
// https://drafts.csswg.org/css-fonts/#om-fontface
|
||||
// But we implement a very old draft, apparently....
|
||||
// See bug 1058408 for implementing the current spec.
|
||||
interface CSSFontFaceRule : CSSRule {
|
||||
[SameObject] readonly attribute CSSStyleDeclaration style;
|
||||
};
|
||||
29
dom/webidl/CSSFontFeatureValuesRule.webidl
Normal file
29
dom/webidl/CSSFontFeatureValuesRule.webidl
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
/* -*- 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-fonts/#om-fontfeaturevalues
|
||||
*/
|
||||
|
||||
// https://drafts.csswg.org/css-fonts/#om-fontfeaturevalues
|
||||
// but we don't implement anything remotely resembling the spec.
|
||||
interface CSSFontFeatureValuesRule : CSSRule {
|
||||
[SetterThrows]
|
||||
attribute DOMString fontFamily;
|
||||
|
||||
// Not yet implemented
|
||||
// readonly attribute CSSFontFeatureValuesMap annotation;
|
||||
// readonly attribute CSSFontFeatureValuesMap ornaments;
|
||||
// readonly attribute CSSFontFeatureValuesMap stylistic;
|
||||
// readonly attribute CSSFontFeatureValuesMap swash;
|
||||
// readonly attribute CSSFontFeatureValuesMap characterVariant;
|
||||
// readonly attribute CSSFontFeatureValuesMap styleset;
|
||||
};
|
||||
|
||||
partial interface CSSFontFeatureValuesRule {
|
||||
// Gecko addition?
|
||||
[SetterThrows]
|
||||
attribute DOMString valueText;
|
||||
};
|
||||
17
dom/webidl/CSSGroupingRule.webidl
Normal file
17
dom/webidl/CSSGroupingRule.webidl
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
/* -*- 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/cssom/#cssgroupingrule
|
||||
*/
|
||||
|
||||
// https://drafts.csswg.org/cssom/#cssgroupingrule
|
||||
interface CSSGroupingRule : CSSRule {
|
||||
[SameObject] readonly attribute CSSRuleList cssRules;
|
||||
[Throws]
|
||||
unsigned long insertRule(DOMString rule, unsigned long index);
|
||||
[Throws]
|
||||
void deleteRule(unsigned long index);
|
||||
};
|
||||
17
dom/webidl/CSSImportRule.webidl
Normal file
17
dom/webidl/CSSImportRule.webidl
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
/* -*- 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/cssom/#cssimportrule
|
||||
*/
|
||||
|
||||
// https://drafts.csswg.org/cssom/#cssimportrule
|
||||
interface CSSImportRule : CSSRule {
|
||||
readonly attribute DOMString href;
|
||||
[SameObject, PutForwards=mediaText] readonly attribute MediaList media;
|
||||
// Per spec, the .styleSheet is never null, but in our implementation it can
|
||||
// be. See <https://bugzilla.mozilla.org/show_bug.cgi?id=1326509>.
|
||||
[SameObject] readonly attribute CSSStyleSheet? styleSheet;
|
||||
};
|
||||
14
dom/webidl/CSSKeyframeRule.webidl
Normal file
14
dom/webidl/CSSKeyframeRule.webidl
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
/* -*- 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-animations/#interface-csskeyframerule
|
||||
*/
|
||||
|
||||
// https://drafts.csswg.org/css-animations/#interface-csskeyframerule
|
||||
interface CSSKeyframeRule : CSSRule {
|
||||
attribute DOMString keyText;
|
||||
readonly attribute CSSStyleDeclaration style;
|
||||
};
|
||||
18
dom/webidl/CSSKeyframesRule.webidl
Normal file
18
dom/webidl/CSSKeyframesRule.webidl
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
/* -*- 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-animations/#interface-csskeyframesrule
|
||||
*/
|
||||
|
||||
// https://drafts.csswg.org/css-animations/#interface-csskeyframesrule
|
||||
interface CSSKeyframesRule : CSSRule {
|
||||
attribute DOMString name;
|
||||
readonly attribute CSSRuleList cssRules;
|
||||
|
||||
void appendRule(DOMString rule);
|
||||
void deleteRule(DOMString select);
|
||||
CSSKeyframeRule? findRule(DOMString select);
|
||||
};
|
||||
17
dom/webidl/CSSMediaRule.webidl
Normal file
17
dom/webidl/CSSMediaRule.webidl
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
/* -*- 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/cssom/#the-cssmediarule-interface
|
||||
* https://drafts.csswg.org/css-conditional/#the-cssmediarule-interface
|
||||
*/
|
||||
|
||||
// https://drafts.csswg.org/cssom/#the-cssmediarule-interface and
|
||||
// https://drafts.csswg.org/css-conditional/#the-cssmediarule-interface
|
||||
// except they disagree with each other. We're taking the inheritance from
|
||||
// css-conditional and the PutForwards behavior from cssom.
|
||||
interface CSSMediaRule : CSSConditionRule {
|
||||
[SameObject, PutForwards=mediaText] readonly attribute MediaList media;
|
||||
};
|
||||
10
dom/webidl/CSSMozDocumentRule.webidl
Normal file
10
dom/webidl/CSSMozDocumentRule.webidl
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
/* -*- 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/.
|
||||
*/
|
||||
|
||||
// This is a non-standard interface for @-moz-document rules
|
||||
interface CSSMozDocumentRule : CSSConditionRule {
|
||||
// XXX Add access to the URL list.
|
||||
};
|
||||
16
dom/webidl/CSSNamespaceRule.webidl
Normal file
16
dom/webidl/CSSNamespaceRule.webidl
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
/* -*- 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/cssom/#cssnamespacerule
|
||||
*/
|
||||
|
||||
// https://drafts.csswg.org/cssom/#cssnamespacerule
|
||||
interface CSSNamespaceRule : CSSRule {
|
||||
// Not implemented yet. <See
|
||||
// https://bugzilla.mozilla.org/show_bug.cgi?id=1326514>.
|
||||
// readonly attribute DOMString namespaceURI;
|
||||
// readonly attribute DOMString prefix;
|
||||
};
|
||||
17
dom/webidl/CSSPageRule.webidl
Normal file
17
dom/webidl/CSSPageRule.webidl
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
/* -*- 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/cssom/#the-csspagerule-interface
|
||||
*/
|
||||
|
||||
// https://drafts.csswg.org/cssom/#the-csspagerule-interface
|
||||
// Per spec, this should inherit from CSSGroupingRule, but we don't
|
||||
// implement this yet.
|
||||
interface CSSPageRule : CSSRule {
|
||||
// selectorText not implemented yet
|
||||
// attribute DOMString selectorText;
|
||||
[SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style;
|
||||
};
|
||||
52
dom/webidl/CSSRule.webidl
Normal file
52
dom/webidl/CSSRule.webidl
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
/* -*- 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/cssom/#the-cssrule-interface
|
||||
* https://drafts.csswg.org/css-animations/#interface-cssrule
|
||||
* https://drafts.csswg.org/css-counter-styles-3/#extentions-to-cssrule-interface
|
||||
* https://drafts.csswg.org/css-conditional-3/#extentions-to-cssrule-interface
|
||||
* https://drafts.csswg.org/css-fonts-3/#om-fontfeaturevalues
|
||||
*/
|
||||
|
||||
// https://drafts.csswg.org/cssom/#the-cssrule-interface
|
||||
interface CSSRule {
|
||||
|
||||
const unsigned short STYLE_RULE = 1;
|
||||
const unsigned short CHARSET_RULE = 2; // historical
|
||||
const unsigned short IMPORT_RULE = 3;
|
||||
const unsigned short MEDIA_RULE = 4;
|
||||
const unsigned short FONT_FACE_RULE = 5;
|
||||
const unsigned short PAGE_RULE = 6;
|
||||
// FIXME: We don't support MARGIN_RULE yet.
|
||||
// XXXbz Should we expose the constant anyway?
|
||||
// const unsigned short MARGIN_RULE = 9;
|
||||
const unsigned short NAMESPACE_RULE = 10;
|
||||
readonly attribute unsigned short type;
|
||||
attribute DOMString cssText;
|
||||
readonly attribute CSSRule? parentRule;
|
||||
readonly attribute CSSStyleSheet? parentStyleSheet;
|
||||
};
|
||||
|
||||
// https://drafts.csswg.org/css-animations/#interface-cssrule
|
||||
partial interface CSSRule {
|
||||
const unsigned short KEYFRAMES_RULE = 7;
|
||||
const unsigned short KEYFRAME_RULE = 8;
|
||||
};
|
||||
|
||||
// https://drafts.csswg.org/css-counter-styles-3/#extentions-to-cssrule-interface
|
||||
partial interface CSSRule {
|
||||
const unsigned short COUNTER_STYLE_RULE = 11;
|
||||
};
|
||||
|
||||
// https://drafts.csswg.org/css-conditional-3/#extentions-to-cssrule-interface
|
||||
partial interface CSSRule {
|
||||
const unsigned short SUPPORTS_RULE = 12;
|
||||
};
|
||||
|
||||
// https://drafts.csswg.org/css-fonts-3/#om-fontfeaturevalues
|
||||
partial interface CSSRule {
|
||||
const unsigned short FONT_FEATURE_VALUES_RULE = 14;
|
||||
};
|
||||
|
|
@ -7,8 +7,6 @@
|
|||
* http://dev.w3.org/csswg/cssom/
|
||||
*/
|
||||
|
||||
interface CSSRule;
|
||||
|
||||
interface CSSStyleDeclaration {
|
||||
[CEReactions, SetterThrows]
|
||||
attribute DOMString cssText;
|
||||
|
|
|
|||
14
dom/webidl/CSSStyleRule.webidl
Normal file
14
dom/webidl/CSSStyleRule.webidl
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
/* -*- 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/cssom/#the-cssstylerule-interface
|
||||
*/
|
||||
|
||||
// https://drafts.csswg.org/cssom/#the-cssstylerule-interface
|
||||
interface CSSStyleRule : CSSRule {
|
||||
attribute DOMString selectorText;
|
||||
[SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style;
|
||||
};
|
||||
|
|
@ -7,8 +7,6 @@
|
|||
* http://dev.w3.org/csswg/cssom/
|
||||
*/
|
||||
|
||||
interface CSSRule;
|
||||
|
||||
enum CSSStyleSheetParsingMode {
|
||||
"author",
|
||||
"user",
|
||||
|
|
|
|||
12
dom/webidl/CSSSupportsRule.webidl
Normal file
12
dom/webidl/CSSSupportsRule.webidl
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
/* -*- 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-conditional/#the-csssupportsrule-interface
|
||||
*/
|
||||
|
||||
// https://drafts.csswg.org/css-conditional/#the-csssupportsrule-interface
|
||||
interface CSSSupportsRule : CSSConditionRule {
|
||||
};
|
||||
|
|
@ -24,8 +24,10 @@ BoxObject implements LegacyQueryInterface;
|
|||
CaretPosition implements LegacyQueryInterface;
|
||||
Comment implements LegacyQueryInterface;
|
||||
Crypto implements LegacyQueryInterface;
|
||||
CSSMozDocumentRule implements LegacyQueryInterface;
|
||||
CSSPrimitiveValue implements LegacyQueryInterface;
|
||||
CSSStyleDeclaration implements LegacyQueryInterface;
|
||||
CSSStyleRule implements LegacyQueryInterface;
|
||||
CSSValueList implements LegacyQueryInterface;
|
||||
DOMImplementation implements LegacyQueryInterface;
|
||||
DOMParser implements LegacyQueryInterface;
|
||||
|
|
|
|||
|
|
@ -3,8 +3,6 @@
|
|||
* 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/.
|
||||
*/
|
||||
interface CSSRule;
|
||||
|
||||
[ChromeOnly, Constructor(DOMString type, optional StyleRuleChangeEventInit eventInitDict)]
|
||||
interface StyleRuleChangeEvent : Event
|
||||
{
|
||||
|
|
|
|||
|
|
@ -7,8 +7,6 @@
|
|||
* http://dev.w3.org/csswg/cssom/
|
||||
*/
|
||||
|
||||
interface CSSRule;
|
||||
|
||||
interface StyleSheet {
|
||||
[Constant]
|
||||
readonly attribute DOMString type;
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
// [Constructor(DOMString url, optional (URL or DOMString) base = "about:blank")]
|
||||
[Constructor(DOMString url, URL base),
|
||||
Constructor(DOMString url, optional DOMString base),
|
||||
NamedConstructor=webkitURL(DOMString url, optional DOMString base),
|
||||
Exposed=(Window,Worker,WorkerDebugger)]
|
||||
interface URL {
|
||||
// Bug 824857: no support for stringifier attributes yet.
|
||||
|
|
|
|||
|
|
@ -90,12 +90,27 @@ WEBIDL_FILES = [
|
|||
'CSPReport.webidl',
|
||||
'CSS.webidl',
|
||||
'CSSAnimation.webidl',
|
||||
'CSSConditionRule.webidl',
|
||||
'CSSCounterStyleRule.webidl',
|
||||
'CSSFontFaceRule.webidl',
|
||||
'CSSFontFeatureValuesRule.webidl',
|
||||
'CSSGroupingRule.webidl',
|
||||
'CSSImportRule.webidl',
|
||||
'CSSKeyframeRule.webidl',
|
||||
'CSSKeyframesRule.webidl',
|
||||
'CSSLexer.webidl',
|
||||
'CSSMediaRule.webidl',
|
||||
'CSSMozDocumentRule.webidl',
|
||||
'CSSNamespaceRule.webidl',
|
||||
'CSSPageRule.webidl',
|
||||
'CSSPrimitiveValue.webidl',
|
||||
'CSSPseudoElement.webidl',
|
||||
'CSSRule.webidl',
|
||||
'CSSRuleList.webidl',
|
||||
'CSSStyleDeclaration.webidl',
|
||||
'CSSStyleRule.webidl',
|
||||
'CSSStyleSheet.webidl',
|
||||
'CSSSupportsRule.webidl',
|
||||
'CSSTransition.webidl',
|
||||
'CSSValue.webidl',
|
||||
'CSSValueList.webidl',
|
||||
|
|
|
|||
|
|
@ -214,28 +214,8 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=668855
|
|||
|
||||
make_live_map();
|
||||
|
||||
let unpreservable_native_key = function () {
|
||||
// We only allow natives that support wrapper preservation to be used as weak
|
||||
// map keys. We should be able to try to add unpreservable natives as keys without
|
||||
// crashing (bug 711616), but we should throw an error (bug 761620).
|
||||
|
||||
let dummy_test_map = new WeakMap;
|
||||
|
||||
let rule_fail = false;
|
||||
let got_rule = false;
|
||||
try {
|
||||
var rule = document.styleSheets[0].cssRules[0];
|
||||
got_rule = true;
|
||||
dummy_test_map.set(rule, 1);
|
||||
} catch (e) {
|
||||
rule_fail = true;
|
||||
}
|
||||
ok(got_rule, "Got the CSS rule");
|
||||
ok(rule_fail, "Using a CSS rule as a weak map key should produce an exception because it can't be wrapper preserved.");
|
||||
|
||||
}
|
||||
|
||||
unpreservable_native_key();
|
||||
// We're out of ideas for unpreservable natives, now that just about
|
||||
// everything is on webidl, so just don't test those.
|
||||
|
||||
/* set up for running precise GC/CC then checking the results */
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" href="data:text/css,div {}">
|
||||
<title>Test Cross-Compartment DOM WeakMaps</title>
|
||||
</head>
|
||||
<body>
|
||||
|
|
|
|||
|
|
@ -15,14 +15,6 @@ function setup() {
|
|||
var item = window.frames[0].document.querySelector("body");
|
||||
|
||||
my_map.set(item, "success_string");
|
||||
|
||||
var rule_fail = false;
|
||||
try {
|
||||
my_map.set(window.frames[0].document.styleSheets[0].cssRules[0], 1);
|
||||
} catch (e) {
|
||||
rule_fail = true;
|
||||
}
|
||||
ok(rule_fail, "Using rule as a weak map key across compartments should produce an exception because it can't be wrapper preserved.");
|
||||
}
|
||||
|
||||
function runTest() {
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
#include "nsIDOMCSSImportRule.h"
|
||||
#include "nsIDOMCSSMediaRule.h"
|
||||
#include "nsIDOMCSSSupportsRule.h"
|
||||
#include "nsIDOMCSSRule.h"
|
||||
#include "nsIURI.h"
|
||||
#include "nsIDocument.h"
|
||||
#include "nsNetUtil.h"
|
||||
|
|
|
|||
|
|
@ -248,13 +248,9 @@ inDOMUtils::GetCSSStyleRules(nsIDOMElement *aElement,
|
|||
for (nsRuleNode* ruleNode : Reversed(ruleNodes)) {
|
||||
RefPtr<Declaration> decl = do_QueryObject(ruleNode->GetRule());
|
||||
if (decl) {
|
||||
RefPtr<mozilla::css::StyleRule> styleRule =
|
||||
do_QueryObject(decl->GetOwningRule());
|
||||
if (styleRule) {
|
||||
nsCOMPtr<nsIDOMCSSRule> domRule = styleRule->GetDOMRule();
|
||||
if (domRule) {
|
||||
rules->AppendElement(domRule, /*weak =*/ false);
|
||||
}
|
||||
css::Rule* owningRule = decl->GetOwningRule();
|
||||
if (owningRule) {
|
||||
rules->AppendElement(owningRule, /*weak =*/ false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
18
layout/style/BindingStyleRule.cpp
Normal file
18
layout/style/BindingStyleRule.cpp
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
/* -*- Mode: C++; 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/. */
|
||||
|
||||
#include "mozilla/BindingStyleRule.h"
|
||||
#include "mozilla/dom/CSSStyleRuleBinding.h"
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
/* virtual */ JSObject*
|
||||
BindingStyleRule::WrapObject(JSContext* aCx,
|
||||
JS::Handle<JSObject*> aGivenProto)
|
||||
{
|
||||
return dom::CSSStyleRuleBinding::Wrap(aCx, this, aGivenProto);
|
||||
}
|
||||
|
||||
} // namespace mozilla
|
||||
60
layout/style/BindingStyleRule.h
Normal file
60
layout/style/BindingStyleRule.h
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
/* -*- Mode: C++; 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/. */
|
||||
|
||||
#ifndef mozilla_BindingStyleRule_h__
|
||||
#define mozilla_BindingStyleRule_h__
|
||||
|
||||
#include "nscore.h"
|
||||
#include "nsStringGlue.h"
|
||||
#include "mozilla/css/Rule.h"
|
||||
|
||||
/**
|
||||
* Superclass for mozilla::css::StyleRule, for use from bindings code.
|
||||
*/
|
||||
|
||||
class nsICSSDeclaration;
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
class BindingStyleRule : public css::Rule
|
||||
{
|
||||
protected:
|
||||
BindingStyleRule(uint32_t aLineNumber, uint32_t aColumnNumber)
|
||||
: css::Rule(aLineNumber, aColumnNumber)
|
||||
{
|
||||
}
|
||||
BindingStyleRule(const BindingStyleRule& aCopy)
|
||||
: css::Rule(aCopy)
|
||||
{
|
||||
}
|
||||
virtual ~BindingStyleRule() {}
|
||||
|
||||
public:
|
||||
// This is pure virtual because we have no members, and are an abstract class
|
||||
// to start with. The fact that we have to have this declaration at all is
|
||||
// kinda dumb. :(
|
||||
virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf)
|
||||
const override MOZ_MUST_OVERRIDE = 0;
|
||||
|
||||
// Likewise for this one. We have to override our superclass, but don't
|
||||
// really need to do anything in this method.
|
||||
virtual bool IsCCLeaf() const override MOZ_MUST_OVERRIDE = 0;
|
||||
|
||||
// WebIDL API
|
||||
// For GetSelectorText/SetSelectorText, we purposefully use a signature that
|
||||
// matches the nsIDOMCSSStyleRule one for now, so subclasses can just
|
||||
// implement both at once. The actual implementations must never return
|
||||
// anything other than NS_OK;
|
||||
NS_IMETHOD GetSelectorText(nsAString& aSelectorText) = 0;
|
||||
NS_IMETHOD SetSelectorText(const nsAString& aSelectorText) = 0;
|
||||
virtual nsICSSDeclaration* Style() = 0;
|
||||
|
||||
virtual JSObject* WrapObject(JSContext* aCx,
|
||||
JS::Handle<JSObject*> aGivenProto) override;
|
||||
};
|
||||
|
||||
} // namespace mozilla
|
||||
|
||||
#endif // mozilla_BindingStyleRule_h__
|
||||
|
|
@ -7,6 +7,7 @@
|
|||
#define mozilla_dom_CSSRuleList_h
|
||||
|
||||
#include "mozilla/StyleSheetInlines.h"
|
||||
#include "mozilla/css/Rule.h"
|
||||
#include "nsIDOMCSSRule.h"
|
||||
#include "nsIDOMCSSRuleList.h"
|
||||
#include "nsWrapperCache.h"
|
||||
|
|
@ -45,13 +46,13 @@ public:
|
|||
}
|
||||
|
||||
// WebIDL API
|
||||
nsIDOMCSSRule* Item(uint32_t aIndex)
|
||||
css::Rule* Item(uint32_t aIndex)
|
||||
{
|
||||
bool unused;
|
||||
return IndexedGetter(aIndex, unused);
|
||||
}
|
||||
|
||||
virtual nsIDOMCSSRule* IndexedGetter(uint32_t aIndex, bool& aFound) = 0;
|
||||
virtual css::Rule* IndexedGetter(uint32_t aIndex, bool& aFound) = 0;
|
||||
virtual uint32_t Length() = 0;
|
||||
|
||||
protected:
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ public:
|
|||
|
||||
virtual CSSStyleSheet* GetParentObject() override;
|
||||
|
||||
virtual nsIDOMCSSRule*
|
||||
virtual css::Rule*
|
||||
IndexedGetter(uint32_t aIndex, bool& aFound) override;
|
||||
virtual uint32_t
|
||||
Length() override;
|
||||
|
|
@ -101,7 +101,7 @@ CSSRuleListImpl::Length()
|
|||
return AssertedCast<uint32_t>(mStyleSheet->StyleRuleCount());
|
||||
}
|
||||
|
||||
nsIDOMCSSRule*
|
||||
css::Rule*
|
||||
CSSRuleListImpl::IndexedGetter(uint32_t aIndex, bool& aFound)
|
||||
{
|
||||
aFound = false;
|
||||
|
|
@ -112,7 +112,7 @@ CSSRuleListImpl::IndexedGetter(uint32_t aIndex, bool& aFound)
|
|||
css::Rule* rule = mStyleSheet->GetStyleRuleAt(aIndex);
|
||||
if (rule) {
|
||||
aFound = true;
|
||||
return rule->GetDOMRule();
|
||||
return rule;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1238,8 +1238,10 @@ CSSStyleSheet::TraverseInner(nsCycleCollectionTraversalCallback &cb)
|
|||
|
||||
const nsCOMArray<css::Rule>& rules = mInner->mOrderedRules;
|
||||
for (int32_t i = 0, count = rules.Count(); i < count; ++i) {
|
||||
NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mOrderedRules[i]");
|
||||
cb.NoteXPCOMChild(rules[i]->GetExistingDOMRule());
|
||||
if (!rules[i]->IsCCLeaf()) {
|
||||
NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mOrderedRules[i]");
|
||||
cb.NoteXPCOMChild(rules[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1646,10 +1648,10 @@ CSSStyleSheet::Media()
|
|||
return mMedia;
|
||||
}
|
||||
|
||||
nsIDOMCSSRule*
|
||||
css::Rule*
|
||||
CSSStyleSheet::GetDOMOwnerRule() const
|
||||
{
|
||||
return mOwnerRule ? mOwnerRule->GetDOMRule() : nullptr;
|
||||
return mOwnerRule;
|
||||
}
|
||||
|
||||
CSSRuleList*
|
||||
|
|
@ -1812,11 +1814,6 @@ CSSStyleSheet::DeleteRuleInternal(uint32_t aIndex, ErrorResult& aRv)
|
|||
RefPtr<css::Rule> rule = mInner->mOrderedRules.ObjectAt(aIndex);
|
||||
if (rule) {
|
||||
mInner->mOrderedRules.RemoveObjectAt(aIndex);
|
||||
if (mDocument && mDocument->StyleSheetChangeEventsEnabled()) {
|
||||
// Force creation of the DOM rule, so that it can be put on the
|
||||
// StyleRuleRemoved event object.
|
||||
rule->GetDOMRule();
|
||||
}
|
||||
rule->SetStyleSheet(nullptr);
|
||||
DidDirty();
|
||||
|
||||
|
|
|
|||
|
|
@ -212,7 +212,7 @@ public:
|
|||
// Can't be inline because we can't include ImportRule here. And can't be
|
||||
// called GetOwnerRule because that would be ambiguous with the ImportRule
|
||||
// version.
|
||||
nsIDOMCSSRule* GetDOMOwnerRule() const final;
|
||||
css::Rule* GetDOMOwnerRule() const final;
|
||||
|
||||
void WillDirty();
|
||||
void DidDirty();
|
||||
|
|
|
|||
|
|
@ -96,6 +96,8 @@ public:
|
|||
|
||||
NS_DECLARE_STATIC_IID_ACCESSOR(NS_CSS_DECLARATION_IMPL_CID)
|
||||
|
||||
// If this ever becomes cycle-collected, please change the CC implementation
|
||||
// for StyleRule to traverse it.
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
private:
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
#define mozilla_css_GroupRule_h__
|
||||
|
||||
#include "mozilla/Attributes.h"
|
||||
#include "mozilla/ErrorResult.h"
|
||||
#include "mozilla/IncrementalClearCOMRuleArray.h"
|
||||
#include "mozilla/MemoryReporting.h"
|
||||
#include "mozilla/css/Rule.h"
|
||||
|
|
@ -24,6 +25,10 @@ namespace mozilla {
|
|||
|
||||
class CSSStyleSheet;
|
||||
|
||||
namespace dom {
|
||||
class CSSRuleList;
|
||||
} // namespace dom
|
||||
|
||||
namespace css {
|
||||
|
||||
class GroupRuleRuleList;
|
||||
|
|
@ -38,11 +43,10 @@ protected:
|
|||
virtual ~GroupRule();
|
||||
public:
|
||||
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS(GroupRule)
|
||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(GroupRule, Rule)
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
virtual bool IsCCLeaf() const override;
|
||||
|
||||
// implement part of Rule
|
||||
DECL_STYLE_RULE_INHERIT_NO_DOMRULE
|
||||
#ifdef DEBUG
|
||||
virtual void List(FILE* out = stdout, int32_t aIndent = 0) const override;
|
||||
#endif
|
||||
|
|
@ -80,9 +84,15 @@ public:
|
|||
return true;
|
||||
}
|
||||
|
||||
// WebIDL API
|
||||
dom::CSSRuleList* CssRules();
|
||||
uint32_t InsertRule(const nsAString& aRule, uint32_t aIndex,
|
||||
ErrorResult& aRv);
|
||||
void DeleteRule(uint32_t aIndex, ErrorResult& aRv);
|
||||
|
||||
protected:
|
||||
// to help implement nsIDOMCSSRule
|
||||
void AppendRulesToCssText(nsAString& aCssText);
|
||||
void AppendRulesToCssText(nsAString& aCssText) const;
|
||||
|
||||
// to implement common methods on nsIDOMCSSMediaRule and
|
||||
// nsIDOMCSSMozDocumentRule
|
||||
|
|
@ -95,6 +105,24 @@ protected:
|
|||
RefPtr<GroupRuleRuleList> mRuleCollection; // lazily constructed
|
||||
};
|
||||
|
||||
// Implementation of WebIDL CSSConditionRule.
|
||||
class ConditionRule : public GroupRule
|
||||
{
|
||||
protected:
|
||||
ConditionRule(uint32_t aLineNumber, uint32_t aColumnNumber);
|
||||
ConditionRule(const ConditionRule& aCopy);
|
||||
virtual ~ConditionRule();
|
||||
|
||||
public:
|
||||
|
||||
// GetConditionText signature matches nsIDOMCSSConditionRule, so subclasses
|
||||
// can implement this easily. The implementations should never return
|
||||
// anything other than NS_OK.
|
||||
NS_IMETHOD GetConditionText(nsAString& aConditionText) = 0;
|
||||
virtual void SetConditionText(const nsAString& aConditionText,
|
||||
ErrorResult& aRv) = 0;
|
||||
};
|
||||
|
||||
} // namespace css
|
||||
} // namespace mozilla
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ class nsString;
|
|||
namespace mozilla {
|
||||
|
||||
class CSSStyleSheet;
|
||||
class StyleSheet;
|
||||
|
||||
namespace css {
|
||||
|
||||
|
|
@ -34,10 +35,9 @@ private:
|
|||
ImportRule(const ImportRule& aCopy);
|
||||
~ImportRule();
|
||||
public:
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(ImportRule, mozilla::css::Rule)
|
||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||
|
||||
DECL_STYLE_RULE_INHERIT
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(ImportRule, Rule)
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
virtual bool IsCCLeaf() const override;
|
||||
|
||||
#ifdef HAVE_CPP_AMBIGUITY_RESOLVING_USING
|
||||
using Rule::GetStyleSheet; // unhide since nsIDOMCSSImportRule has its own GetStyleSheet
|
||||
|
|
@ -54,12 +54,18 @@ public:
|
|||
|
||||
virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const override;
|
||||
|
||||
// nsIDOMCSSRule interface
|
||||
NS_DECL_NSIDOMCSSRULE
|
||||
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
|
||||
|
||||
// nsIDOMCSSImportRule interface
|
||||
NS_DECL_NSIDOMCSSIMPORTRULE
|
||||
|
||||
// WebIDL interface
|
||||
uint16_t Type() const override;
|
||||
void GetCssTextImpl(nsAString& aCssText) const override;
|
||||
// The XPCOM GetHref is fine, since it never fails.
|
||||
nsMediaList* Media() const { return mMedia; }
|
||||
StyleSheet* GetStyleSheet() const;
|
||||
|
||||
private:
|
||||
nsString mURLSpec;
|
||||
RefPtr<nsMediaList> mMedia;
|
||||
|
|
|
|||
|
|
@ -24,8 +24,7 @@ class nsIAtom;
|
|||
namespace mozilla {
|
||||
namespace css {
|
||||
|
||||
class NameSpaceRule final : public Rule,
|
||||
public nsIDOMCSSRule
|
||||
class NameSpaceRule final : public Rule
|
||||
{
|
||||
public:
|
||||
NameSpaceRule(nsIAtom* aPrefix, const nsString& aURLSpec,
|
||||
|
|
@ -37,25 +36,28 @@ private:
|
|||
public:
|
||||
NS_DECLARE_STATIC_IID_ACCESSOR(NS_CSS_NAMESPACE_RULE_IMPL_CID)
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
virtual bool IsCCLeaf() const override;
|
||||
|
||||
// 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;
|
||||
using Rule::GetType;
|
||||
virtual already_AddRefed<Rule> Clone() const override;
|
||||
|
||||
nsIAtom* GetPrefix() const { return mPrefix; }
|
||||
|
||||
void GetURLSpec(nsString& aURLSpec) const { aURLSpec = mURLSpec; }
|
||||
|
||||
// WebIDL interface
|
||||
uint16_t Type() const override;
|
||||
void GetCssTextImpl(nsAString& aCssText) const override;
|
||||
|
||||
virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const
|
||||
override MOZ_MUST_OVERRIDE;
|
||||
|
||||
// nsIDOMCSSRule interface
|
||||
NS_DECL_NSIDOMCSSRULE
|
||||
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
|
||||
|
||||
private:
|
||||
nsCOMPtr<nsIAtom> mPrefix;
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
#include "mozilla/MemoryReporting.h"
|
||||
#include "nsISupports.h"
|
||||
#include "nsIDOMCSSRule.h"
|
||||
#include "nsWrapperCache.h"
|
||||
|
||||
class nsIDocument;
|
||||
struct nsRuleData;
|
||||
|
|
@ -22,15 +23,9 @@ namespace mozilla {
|
|||
namespace css {
|
||||
class GroupRule;
|
||||
|
||||
#define DECL_STYLE_RULE_INHERIT_NO_DOMRULE \
|
||||
/* nothing */
|
||||
|
||||
#define DECL_STYLE_RULE_INHERIT \
|
||||
DECL_STYLE_RULE_INHERIT_NO_DOMRULE \
|
||||
virtual nsIDOMCSSRule* GetDOMRule() override; \
|
||||
virtual nsIDOMCSSRule* GetExistingDOMRule() override;
|
||||
|
||||
class Rule : public nsISupports {
|
||||
class Rule : public nsIDOMCSSRule
|
||||
, public nsWrapperCache
|
||||
{
|
||||
protected:
|
||||
Rule(uint32_t aLineNumber, uint32_t aColumnNumber)
|
||||
: mSheet(nullptr),
|
||||
|
|
@ -51,6 +46,14 @@ protected:
|
|||
virtual ~Rule() {}
|
||||
|
||||
public:
|
||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||
NS_DECL_CYCLE_COLLECTION_SKIPPABLE_SCRIPT_HOLDER_CLASS(Rule)
|
||||
// Return true if this rule is known to be a cycle collection leaf, in the
|
||||
// sense that it doesn't have any outgoing owning edges.
|
||||
virtual bool IsCCLeaf() const MOZ_MUST_OVERRIDE;
|
||||
|
||||
// nsIDOMCSSRule interface
|
||||
NS_DECL_NSIDOMCSSRULE
|
||||
|
||||
#ifdef DEBUG
|
||||
virtual void List(FILE* out = stdout, int32_t aIndent = 0) const = 0;
|
||||
|
|
@ -106,24 +109,24 @@ public:
|
|||
*/
|
||||
virtual already_AddRefed<Rule> Clone() const = 0;
|
||||
|
||||
// Note that this returns null for inline style rules since they aren't
|
||||
// supposed to have a DOM rule representation (and our code wouldn't work).
|
||||
virtual nsIDOMCSSRule* GetDOMRule() = 0;
|
||||
|
||||
// Like GetDOMRule(), but won't create one if we don't have one yet
|
||||
virtual nsIDOMCSSRule* GetExistingDOMRule() = 0;
|
||||
|
||||
// to implement methods on nsIDOMCSSRule
|
||||
nsresult GetParentRule(nsIDOMCSSRule** aParentRule);
|
||||
nsresult GetParentStyleSheet(nsIDOMCSSStyleSheet** aSheet);
|
||||
Rule* GetCSSRule();
|
||||
|
||||
// This is pure virtual because all of Rule's data members are non-owning and
|
||||
// thus measured elsewhere.
|
||||
virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf)
|
||||
const MOZ_MUST_OVERRIDE = 0;
|
||||
|
||||
// WebIDL interface, aka helpers for nsIDOMCSSRule implementation.
|
||||
virtual uint16_t Type() const = 0;
|
||||
virtual void GetCssTextImpl(nsAString& aCssText) const = 0;
|
||||
// XPCOM GetCssText is OK, since it never throws.
|
||||
// XPCOM SetCssText is OK, since it never throws.
|
||||
Rule* GetParentRule() const;
|
||||
StyleSheet* GetParentStyleSheet() const { return GetStyleSheet(); }
|
||||
nsIDocument* GetParentObject() const { return GetDocument(); }
|
||||
|
||||
protected:
|
||||
// True if we're known-live for cycle collection purposes.
|
||||
bool IsKnownLive() const;
|
||||
|
||||
// This is sometimes null (e.g., for style attributes).
|
||||
CSSStyleSheet* mSheet;
|
||||
// When the parent GroupRule is destroyed, it will call SetParentRule(nullptr)
|
||||
|
|
|
|||
|
|
@ -15,11 +15,11 @@
|
|||
#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"
|
||||
#include "nsStyleUtil.h"
|
||||
#include "nsICSSStyleRuleDOMWrapper.h"
|
||||
#include "nsDOMCSSDeclaration.h"
|
||||
#include "nsNameSpaceManager.h"
|
||||
#include "nsXMLNameSpaceMap.h"
|
||||
|
|
@ -27,7 +27,6 @@
|
|||
#include "nsCSSPseudoClasses.h"
|
||||
#include "nsCSSAnonBoxes.h"
|
||||
#include "nsTArray.h"
|
||||
#include "nsDOMClassInfoID.h"
|
||||
#include "nsContentUtils.h"
|
||||
#include "nsError.h"
|
||||
#include "mozAutoDocUpdate.h"
|
||||
|
|
@ -1096,30 +1095,26 @@ nsCSSSelectorList::SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) cons
|
|||
|
||||
// --------------------------------------------------------
|
||||
|
||||
namespace mozilla {
|
||||
namespace css {
|
||||
class DOMCSSStyleRule;
|
||||
} // namespace css
|
||||
} // namespace mozilla
|
||||
|
||||
class DOMCSSDeclarationImpl : public nsDOMCSSDeclaration
|
||||
{
|
||||
protected:
|
||||
// Needs to be protected so we can use NS_IMPL_ADDREF_USING_AGGREGATOR.
|
||||
virtual ~DOMCSSDeclarationImpl(void);
|
||||
|
||||
// But we need to allow UniquePtr to delete us.
|
||||
friend class mozilla::DefaultDelete<DOMCSSDeclarationImpl>;
|
||||
|
||||
public:
|
||||
explicit DOMCSSDeclarationImpl(css::StyleRule *aRule);
|
||||
|
||||
NS_IMETHOD GetParentRule(nsIDOMCSSRule **aParent) override;
|
||||
void DropReference(void);
|
||||
virtual css::Declaration* GetCSSDeclaration(Operation aOperation) override;
|
||||
virtual nsresult SetCSSDeclaration(css::Declaration* aDecl) override;
|
||||
virtual void GetCSSParsingEnvironment(CSSParsingEnvironment& aCSSParseEnv) override;
|
||||
virtual nsIDocument* DocToUpdate() override;
|
||||
|
||||
// Override |AddRef| and |Release| for being a member of
|
||||
// |DOMCSSStyleRule|. Also, we need to forward QI for cycle
|
||||
// collection things to DOMCSSStyleRule.
|
||||
// Override |AddRef| and |Release| for being owned by StyleRule. Also, we
|
||||
// need to forward QI for cycle collection things to StyleRule.
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
virtual nsINode *GetParentObject() override
|
||||
|
|
@ -1137,55 +1132,12 @@ public:
|
|||
return document ? document->GetDocGroup() : nullptr;
|
||||
}
|
||||
|
||||
friend class css::DOMCSSStyleRule;
|
||||
|
||||
protected:
|
||||
// This reference is not reference-counted. The rule object tells us
|
||||
// when it's about to go away.
|
||||
// This reference is not reference-counted. The rule object owns us and we go
|
||||
// away when it does.
|
||||
css::StyleRule *mRule;
|
||||
|
||||
inline css::DOMCSSStyleRule* DomRule();
|
||||
|
||||
private:
|
||||
// NOT TO BE IMPLEMENTED
|
||||
// This object cannot be allocated on its own. It must be a member of
|
||||
// DOMCSSStyleRule.
|
||||
void* operator new(size_t size) CPP_THROW_NEW;
|
||||
};
|
||||
|
||||
namespace mozilla {
|
||||
namespace css {
|
||||
|
||||
class DOMCSSStyleRule : public nsICSSStyleRuleDOMWrapper
|
||||
{
|
||||
public:
|
||||
explicit DOMCSSStyleRule(StyleRule *aRule);
|
||||
|
||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(DOMCSSStyleRule)
|
||||
NS_DECL_NSIDOMCSSRULE
|
||||
NS_DECL_NSIDOMCSSSTYLERULE
|
||||
|
||||
// nsICSSStyleRuleDOMWrapper
|
||||
NS_IMETHOD GetCSSStyleRule(StyleRule **aResult) override;
|
||||
|
||||
DOMCSSDeclarationImpl* DOMDeclaration() { return &mDOMDeclaration; }
|
||||
|
||||
friend class ::DOMCSSDeclarationImpl;
|
||||
|
||||
protected:
|
||||
virtual ~DOMCSSStyleRule();
|
||||
|
||||
DOMCSSDeclarationImpl mDOMDeclaration;
|
||||
|
||||
StyleRule* Rule() {
|
||||
return mDOMDeclaration.mRule;
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace css
|
||||
} // namespace mozilla
|
||||
|
||||
DOMCSSDeclarationImpl::DOMCSSDeclarationImpl(css::StyleRule *aRule)
|
||||
: mRule(aRule)
|
||||
{
|
||||
|
|
@ -1194,52 +1146,33 @@ DOMCSSDeclarationImpl::DOMCSSDeclarationImpl(css::StyleRule *aRule)
|
|||
|
||||
DOMCSSDeclarationImpl::~DOMCSSDeclarationImpl(void)
|
||||
{
|
||||
NS_ASSERTION(!mRule, "DropReference not called.");
|
||||
|
||||
MOZ_COUNT_DTOR(DOMCSSDeclarationImpl);
|
||||
}
|
||||
|
||||
inline css::DOMCSSStyleRule* DOMCSSDeclarationImpl::DomRule()
|
||||
{
|
||||
return reinterpret_cast<css::DOMCSSStyleRule*>
|
||||
(reinterpret_cast<char*>(this) -
|
||||
offsetof(css::DOMCSSStyleRule, mDOMDeclaration));
|
||||
}
|
||||
|
||||
NS_IMPL_ADDREF_USING_AGGREGATOR(DOMCSSDeclarationImpl, DomRule())
|
||||
NS_IMPL_RELEASE_USING_AGGREGATOR(DOMCSSDeclarationImpl, DomRule())
|
||||
NS_IMPL_ADDREF_USING_AGGREGATOR(DOMCSSDeclarationImpl, mRule)
|
||||
NS_IMPL_RELEASE_USING_AGGREGATOR(DOMCSSDeclarationImpl, mRule)
|
||||
|
||||
NS_INTERFACE_MAP_BEGIN(DOMCSSDeclarationImpl)
|
||||
NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
|
||||
// We forward the cycle collection interfaces to DomRule(), which is
|
||||
// never null (in fact, we're part of that object!)
|
||||
// We forward the cycle collection interfaces to mRule, which is
|
||||
// never null.
|
||||
if (aIID.Equals(NS_GET_IID(nsCycleCollectionISupports)) ||
|
||||
aIID.Equals(NS_GET_IID(nsXPCOMCycleCollectionParticipant))) {
|
||||
return DomRule()->QueryInterface(aIID, aInstancePtr);
|
||||
return mRule->QueryInterface(aIID, aInstancePtr);
|
||||
}
|
||||
else
|
||||
NS_IMPL_QUERY_TAIL_INHERITING(nsDOMCSSDeclaration)
|
||||
|
||||
void
|
||||
DOMCSSDeclarationImpl::DropReference(void)
|
||||
{
|
||||
mRule = nullptr;
|
||||
}
|
||||
|
||||
css::Declaration*
|
||||
DOMCSSDeclarationImpl::GetCSSDeclaration(Operation aOperation)
|
||||
{
|
||||
if (mRule) {
|
||||
if (aOperation != eOperation_Read) {
|
||||
RefPtr<CSSStyleSheet> sheet = mRule->GetStyleSheet();
|
||||
if (sheet) {
|
||||
sheet->WillDirty();
|
||||
}
|
||||
if (aOperation != eOperation_Read) {
|
||||
RefPtr<CSSStyleSheet> sheet = mRule->GetStyleSheet();
|
||||
if (sheet) {
|
||||
sheet->WillDirty();
|
||||
}
|
||||
return mRule->GetDeclaration();
|
||||
} else {
|
||||
return nullptr;
|
||||
}
|
||||
return mRule->GetDeclaration();
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -1253,12 +1186,7 @@ DOMCSSDeclarationImpl::GetParentRule(nsIDOMCSSRule **aParent)
|
|||
{
|
||||
NS_ENSURE_ARG_POINTER(aParent);
|
||||
|
||||
if (!mRule) {
|
||||
*aParent = nullptr;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IF_ADDREF(*aParent = mRule->GetDOMRule());
|
||||
NS_IF_ADDREF(*aParent = mRule);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
|
@ -1294,153 +1222,48 @@ DOMCSSDeclarationImpl::DocToUpdate()
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
namespace mozilla {
|
||||
namespace css {
|
||||
|
||||
DOMCSSStyleRule::DOMCSSStyleRule(StyleRule* aRule)
|
||||
: mDOMDeclaration(aRule)
|
||||
{
|
||||
}
|
||||
|
||||
DOMCSSStyleRule::~DOMCSSStyleRule()
|
||||
{
|
||||
}
|
||||
|
||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(DOMCSSStyleRule)
|
||||
NS_INTERFACE_MAP_ENTRY(nsICSSStyleRuleDOMWrapper)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIDOMCSSStyleRule)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIDOMCSSRule)
|
||||
NS_INTERFACE_MAP_ENTRY(nsISupports)
|
||||
NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(CSSStyleRule)
|
||||
NS_INTERFACE_MAP_END
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTING_ADDREF(DOMCSSStyleRule)
|
||||
NS_IMPL_CYCLE_COLLECTING_RELEASE(DOMCSSStyleRule)
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_CLASS(DOMCSSStyleRule)
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(DOMCSSStyleRule)
|
||||
// Trace the wrapper for our declaration. This just expands out
|
||||
// NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER which we can't use
|
||||
// directly because the wrapper is on the declaration, not on us.
|
||||
tmp->DOMDeclaration()->TraceWrapper(aCallbacks, aClosure);
|
||||
NS_IMPL_CYCLE_COLLECTION_TRACE_END
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(DOMCSSStyleRule)
|
||||
// Unlink the wrapper for our declaraton. This just expands out
|
||||
// NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER which we can't use
|
||||
// directly because the wrapper is on the declaration, not on us.
|
||||
tmp->DOMDeclaration()->ReleaseWrapper(static_cast<nsISupports*>(p));
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(DOMCSSStyleRule)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
||||
|
||||
NS_IMETHODIMP
|
||||
DOMCSSStyleRule::GetType(uint16_t* aType)
|
||||
{
|
||||
*aType = nsIDOMCSSRule::STYLE_RULE;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
DOMCSSStyleRule::GetCssText(nsAString& aCssText)
|
||||
{
|
||||
if (!Rule()) {
|
||||
aCssText.Truncate();
|
||||
} else {
|
||||
Rule()->GetCssText(aCssText);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
DOMCSSStyleRule::SetCssText(const nsAString& aCssText)
|
||||
{
|
||||
if (Rule()) {
|
||||
Rule()->SetCssText(aCssText);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
DOMCSSStyleRule::GetParentStyleSheet(nsIDOMCSSStyleSheet** aSheet)
|
||||
{
|
||||
if (!Rule()) {
|
||||
*aSheet = nullptr;
|
||||
return NS_OK;
|
||||
}
|
||||
return Rule()->GetParentStyleSheet(aSheet);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
DOMCSSStyleRule::GetParentRule(nsIDOMCSSRule** aParentRule)
|
||||
{
|
||||
if (!Rule()) {
|
||||
*aParentRule = nullptr;
|
||||
return NS_OK;
|
||||
}
|
||||
return Rule()->GetParentRule(aParentRule);
|
||||
}
|
||||
|
||||
css::Rule*
|
||||
DOMCSSStyleRule::GetCSSRule()
|
||||
{
|
||||
return Rule();
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
DOMCSSStyleRule::GetSelectorText(nsAString& aSelectorText)
|
||||
{
|
||||
if (!Rule()) {
|
||||
aSelectorText.Truncate();
|
||||
} else {
|
||||
Rule()->GetSelectorText(aSelectorText);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
DOMCSSStyleRule::SetSelectorText(const nsAString& aSelectorText)
|
||||
{
|
||||
if (Rule()) {
|
||||
Rule()->SetSelectorText(aSelectorText);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
DOMCSSStyleRule::GetStyle(nsIDOMCSSStyleDeclaration** aStyle)
|
||||
{
|
||||
*aStyle = &mDOMDeclaration;
|
||||
NS_ADDREF(*aStyle);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
DOMCSSStyleRule::GetCSSStyleRule(StyleRule **aResult)
|
||||
{
|
||||
*aResult = Rule();
|
||||
NS_IF_ADDREF(*aResult);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
} // namespace css
|
||||
} // namespace mozilla
|
||||
|
||||
// -- StyleRule ------------------------------------
|
||||
|
||||
namespace mozilla {
|
||||
namespace css {
|
||||
|
||||
uint16_t
|
||||
StyleRule::Type() const
|
||||
{
|
||||
return nsIDOMCSSRule::STYLE_RULE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
StyleRule::GetStyle(nsIDOMCSSStyleDeclaration** aStyle)
|
||||
{
|
||||
NS_ADDREF(*aStyle = Style());
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsICSSDeclaration*
|
||||
StyleRule::Style()
|
||||
{
|
||||
if (!mDOMDeclaration) {
|
||||
mDOMDeclaration.reset(new DOMCSSDeclarationImpl(this));
|
||||
}
|
||||
return mDOMDeclaration.get();
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
StyleRule::GetCSSStyleRule(StyleRule **aResult)
|
||||
{
|
||||
*aResult = this;
|
||||
NS_ADDREF(*aResult);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
NS_PRECONDITION(aDeclaration, "must have a declaration");
|
||||
|
||||
|
|
@ -1449,9 +1272,9 @@ 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))
|
||||
{
|
||||
mDeclaration->SetOwningRule(this);
|
||||
// rest is constructed lazily on existing data
|
||||
|
|
@ -1460,28 +1283,66 @@ StyleRule::StyleRule(const StyleRule& aCopy)
|
|||
StyleRule::~StyleRule()
|
||||
{
|
||||
delete mSelector;
|
||||
if (mDOMRule) {
|
||||
mDOMRule->DOMDeclaration()->DropReference();
|
||||
}
|
||||
DropReferences();
|
||||
}
|
||||
|
||||
void
|
||||
StyleRule::DropReferences()
|
||||
{
|
||||
if (mDeclaration) {
|
||||
mDeclaration->SetOwningRule(nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
// 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_ENTRY(nsICSSStyleRuleDOMWrapper)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIDOMCSSStyleRule)
|
||||
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_TRACE_BEGIN_INHERITED(StyleRule, Rule)
|
||||
// Keep this in sync with IsCCLeaf.
|
||||
// Trace the wrapper for our declaration. This just expands out
|
||||
// NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER which we can't use
|
||||
// directly because the wrapper is on the declaration, not on us.
|
||||
if (tmp->mDOMDeclaration) {
|
||||
tmp->mDOMDeclaration->TraceWrapper(aCallbacks, aClosure);
|
||||
}
|
||||
NS_IMPL_CYCLE_COLLECTION_TRACE_END
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(StyleRule, Rule)
|
||||
// Unlink the wrapper for our declaraton. This just expands out
|
||||
// NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER which we can't use
|
||||
// directly because the wrapper is on the declaration, not on us.
|
||||
if (tmp->mDOMDeclaration) {
|
||||
tmp->mDOMDeclaration->ReleaseWrapper(static_cast<nsISupports*>(p));
|
||||
}
|
||||
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_END
|
||||
|
||||
bool
|
||||
StyleRule::IsCCLeaf() const
|
||||
{
|
||||
if (!Rule::IsCCLeaf()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return !mDOMDeclaration || !mDOMDeclaration->PreservingWrapper();
|
||||
}
|
||||
|
||||
/* virtual */ int32_t
|
||||
StyleRule::GetType() const
|
||||
|
|
@ -1496,27 +1357,6 @@ StyleRule::Clone() const
|
|||
return clone.forget();
|
||||
}
|
||||
|
||||
/* virtual */ nsIDOMCSSRule*
|
||||
StyleRule::GetDOMRule()
|
||||
{
|
||||
if (!mDOMRule) {
|
||||
if (!GetStyleSheet()) {
|
||||
// Inline style rules aren't supposed to have a DOM rule object, only
|
||||
// a declaration. But if we do have one already, from a style sheet
|
||||
// rule that used to be in a document, we still want to return it.
|
||||
return nullptr;
|
||||
}
|
||||
mDOMRule = new DOMCSSStyleRule(this);
|
||||
}
|
||||
return mDOMRule;
|
||||
}
|
||||
|
||||
/* virtual */ nsIDOMCSSRule*
|
||||
StyleRule::GetExistingDOMRule()
|
||||
{
|
||||
return mDOMRule;
|
||||
}
|
||||
|
||||
void
|
||||
StyleRule::SetDeclaration(Declaration* aDecl)
|
||||
{
|
||||
|
|
@ -1572,7 +1412,7 @@ StyleRule::List(FILE* out, int32_t aIndent) const
|
|||
#endif
|
||||
|
||||
void
|
||||
StyleRule::GetCssText(nsAString& aCssText)
|
||||
StyleRule::GetCssTextImpl(nsAString& aCssText) const
|
||||
{
|
||||
if (mSelector) {
|
||||
mSelector->ToString(aCssText, GetStyleSheet());
|
||||
|
|
@ -1590,22 +1430,17 @@ StyleRule::GetCssText(nsAString& aCssText)
|
|||
aCssText.Append(char16_t('}'));
|
||||
}
|
||||
|
||||
void
|
||||
StyleRule::SetCssText(const nsAString& aCssText)
|
||||
{
|
||||
// XXX TBI - need to re-parse rule & declaration
|
||||
}
|
||||
|
||||
void
|
||||
NS_IMETHODIMP
|
||||
StyleRule::GetSelectorText(nsAString& aSelectorText)
|
||||
{
|
||||
if (mSelector)
|
||||
mSelector->ToString(aSelectorText, GetStyleSheet());
|
||||
else
|
||||
aSelectorText.Truncate();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
NS_IMETHODIMP
|
||||
StyleRule::SetSelectorText(const nsAString& aSelectorText)
|
||||
{
|
||||
CSSStyleSheet* sheet = GetStyleSheet();
|
||||
|
|
@ -1632,7 +1467,7 @@ StyleRule::SetSelectorText(const nsAString& aSelectorText)
|
|||
aSelectorText, sheet->GetSheetURI(), 0, &selectorList);
|
||||
if (NS_FAILED(result)) {
|
||||
// Ignore parsing errors and continue to use the previous value.
|
||||
return;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// Replace selector.
|
||||
|
|
@ -1645,6 +1480,8 @@ StyleRule::SetSelectorText(const nsAString& aSelectorText)
|
|||
mozAutoDocUpdate updateBatch(doc, UPDATE_STYLE, true);
|
||||
doc->StyleRuleChanged(sheet, this);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/* virtual */ size_t
|
||||
|
|
@ -1661,6 +1498,5 @@ StyleRule::SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const
|
|||
return n;
|
||||
}
|
||||
|
||||
|
||||
} // namespace css
|
||||
} // namespace mozilla
|
||||
|
|
|
|||
|
|
@ -13,12 +13,14 @@
|
|||
|
||||
#include "mozilla/Attributes.h"
|
||||
#include "mozilla/MemoryReporting.h"
|
||||
#include "mozilla/css/Rule.h"
|
||||
#include "mozilla/UniquePtr.h"
|
||||
#include "mozilla/BindingStyleRule.h"
|
||||
|
||||
#include "nsString.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsCSSPseudoElements.h"
|
||||
#include "nsIStyleRule.h"
|
||||
#include "nsICSSStyleRuleDOMWrapper.h"
|
||||
|
||||
class nsIAtom;
|
||||
struct nsCSSSelectorList;
|
||||
|
|
@ -316,13 +318,15 @@ private:
|
|||
{ 0x464bab7a, 0x2fce, 0x4f30, \
|
||||
{ 0xab, 0x44, 0xb7, 0xa5, 0xf3, 0xaa, 0xe5, 0x7d } }
|
||||
|
||||
class DOMCSSDeclarationImpl;
|
||||
|
||||
namespace mozilla {
|
||||
namespace css {
|
||||
|
||||
class Declaration;
|
||||
class DOMCSSStyleRule;
|
||||
|
||||
class StyleRule final : public Rule
|
||||
class StyleRule final : public BindingStyleRule
|
||||
, public nsICSSStyleRuleDOMWrapper
|
||||
{
|
||||
public:
|
||||
StyleRule(nsCSSSelectorList* aSelector,
|
||||
|
|
@ -334,7 +338,19 @@ private:
|
|||
public:
|
||||
NS_DECLARE_STATIC_IID_ACCESSOR(NS_CSS_STYLE_RULE_IMPL_CID)
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(StyleRule, Rule)
|
||||
virtual bool IsCCLeaf() const override;
|
||||
|
||||
NS_DECL_NSIDOMCSSSTYLERULE
|
||||
|
||||
// nsICSSStyleRuleDOMWrapper
|
||||
NS_IMETHOD GetCSSStyleRule(StyleRule **aResult) override;
|
||||
|
||||
// WebIDL interface
|
||||
uint16_t Type() const override;
|
||||
void GetCssTextImpl(nsAString& aCssText) const override;
|
||||
virtual nsICSSDeclaration* Style() override;
|
||||
|
||||
// null for style attribute
|
||||
nsCSSSelectorList* Selector() { return mSelector; }
|
||||
|
|
@ -343,20 +359,11 @@ public:
|
|||
|
||||
void SetDeclaration(Declaration* aDecl);
|
||||
|
||||
// hooks for DOM rule
|
||||
void GetCssText(nsAString& aCssText);
|
||||
void SetCssText(const nsAString& aCssText);
|
||||
void GetSelectorText(nsAString& aSelectorText);
|
||||
void SetSelectorText(const nsAString& aSelectorText);
|
||||
|
||||
virtual int32_t GetType() const override;
|
||||
using Rule::GetType;
|
||||
|
||||
virtual already_AddRefed<Rule> Clone() const override;
|
||||
|
||||
virtual nsIDOMCSSRule* GetDOMRule() override;
|
||||
|
||||
virtual nsIDOMCSSRule* GetExistingDOMRule() override;
|
||||
|
||||
#ifdef DEBUG
|
||||
virtual void List(FILE* out = stdout, int32_t aIndent = 0) const override;
|
||||
#endif
|
||||
|
|
@ -366,10 +373,16 @@ public:
|
|||
private:
|
||||
~StyleRule();
|
||||
|
||||
// Drop our references to mDeclaration and mRule, and let them know we're
|
||||
// doing that.
|
||||
void DropReferences();
|
||||
|
||||
private:
|
||||
nsCSSSelectorList* mSelector; // null for style attribute
|
||||
RefPtr<Declaration> mDeclaration;
|
||||
RefPtr<DOMCSSStyleRule> mDOMRule;
|
||||
|
||||
// We own it, and it aggregates its refcount with us.
|
||||
UniquePtr<DOMCSSDeclarationImpl> mDOMDeclaration;
|
||||
|
||||
private:
|
||||
StyleRule& operator=(const StyleRule& aCopy) = delete;
|
||||
|
|
|
|||
|
|
@ -29,6 +29,10 @@ class CSSRuleList;
|
|||
class SRIMetadata;
|
||||
} // namespace dom
|
||||
|
||||
namespace css {
|
||||
class Rule;
|
||||
}
|
||||
|
||||
/**
|
||||
* Superclass for CSSStyleSheet.
|
||||
*/
|
||||
|
|
@ -145,7 +149,7 @@ public:
|
|||
// The XPCOM SetDisabled is fine for WebIDL.
|
||||
|
||||
// WebIDL CSSStyleSheet API
|
||||
virtual nsIDOMCSSRule* GetDOMOwnerRule() const = 0;
|
||||
virtual css::Rule* GetDOMOwnerRule() const = 0;
|
||||
dom::CSSRuleList* GetCssRules(nsIPrincipal& aSubjectPrincipal,
|
||||
ErrorResult& aRv);
|
||||
uint32_t InsertRule(const nsAString& aRule, uint32_t aIndex,
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ EXPORTS += [
|
|||
|
||||
EXPORTS.mozilla += [
|
||||
'AnimationCollection.h',
|
||||
'BindingStyleRule.h',
|
||||
'CSSEnabledState.h',
|
||||
'CSSStyleSheet.h',
|
||||
'CSSVariableDeclarations.h',
|
||||
|
|
@ -177,10 +178,18 @@ UNIFIED_SOURCES += [
|
|||
'SVGAttrAnimationRuleProcessor.cpp',
|
||||
]
|
||||
|
||||
# nsCSSRuleProcessor.cpp needs to be built separately because it uses plarena.h.
|
||||
# nsLayoutStylesheetCache.cpp needs to be built separately because it uses
|
||||
# - BindingStyleRule.cpp doesn't necessarily need to be built separately,
|
||||
# however, it may shift unified build boundaries, causing
|
||||
# the Unified CPP containing it to include nsStyleCoord.cpp, which
|
||||
# includes, via nsStyleCoord.h, <type_traits>, which ends up including
|
||||
# <xutility>, which fails in much the way described in
|
||||
# <https://bugzilla.mozilla.org/show_bug.cgi?id=1331102>.
|
||||
# - nsCSSRuleProcessor.cpp needs to be built separately because it uses
|
||||
# plarena.h.
|
||||
# - nsLayoutStylesheetCache.cpp needs to be built separately because it uses
|
||||
# nsExceptionHandler.h, which includes windows.h.
|
||||
SOURCES += [
|
||||
'BindingStyleRule.cpp',
|
||||
'nsCSSRuleProcessor.cpp',
|
||||
'nsLayoutStylesheetCache.cpp',
|
||||
]
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -46,7 +46,7 @@ class ErrorResult;
|
|||
|
||||
namespace css {
|
||||
|
||||
class MediaRule final : public GroupRule,
|
||||
class MediaRule final : public ConditionRule,
|
||||
public nsIDOMCSSMediaRule
|
||||
{
|
||||
public:
|
||||
|
|
@ -56,7 +56,7 @@ private:
|
|||
~MediaRule();
|
||||
public:
|
||||
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(MediaRule, GroupRule)
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(MediaRule, ConditionRule)
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
// Rule methods
|
||||
|
|
@ -65,18 +65,8 @@ public:
|
|||
#endif
|
||||
virtual void SetStyleSheet(mozilla::CSSStyleSheet* aSheet) override; //override GroupRule
|
||||
virtual int32_t GetType() const override;
|
||||
using Rule::GetType;
|
||||
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
|
||||
|
|
@ -93,17 +83,28 @@ public:
|
|||
|
||||
// @media rule methods
|
||||
nsresult SetMedia(nsMediaList* aMedia);
|
||||
|
||||
|
||||
// WebIDL interface
|
||||
uint16_t Type() const override;
|
||||
void GetCssTextImpl(nsAString& aCssText) const override;
|
||||
// Our XPCOM GetConditionText is OK
|
||||
virtual void SetConditionText(const nsAString& aConditionText,
|
||||
ErrorResult& aRv) override;
|
||||
nsMediaList* Media() const;
|
||||
|
||||
virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf)
|
||||
const override MOZ_MUST_OVERRIDE;
|
||||
|
||||
virtual JSObject* WrapObject(JSContext* aCx,
|
||||
JS::Handle<JSObject*> aGivenProto) override;
|
||||
|
||||
protected:
|
||||
void AppendConditionText(nsAString& aOutput);
|
||||
void AppendConditionText(nsAString& aOutput) const;
|
||||
|
||||
RefPtr<nsMediaList> mMedia;
|
||||
};
|
||||
|
||||
class DocumentRule final : public GroupRule,
|
||||
class DocumentRule final : public ConditionRule,
|
||||
public nsIDOMCSSMozDocumentRule
|
||||
{
|
||||
public:
|
||||
|
|
@ -120,18 +121,8 @@ public:
|
|||
virtual void List(FILE* out = stdout, int32_t aIndent = 0) const override;
|
||||
#endif
|
||||
virtual int32_t GetType() const override;
|
||||
using Rule::GetType;
|
||||
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
|
||||
|
|
@ -172,11 +163,21 @@ public:
|
|||
|
||||
void SetURLs(URL *aURLs) { mURLs = aURLs; }
|
||||
|
||||
// WebIDL interface
|
||||
uint16_t Type() const override;
|
||||
void GetCssTextImpl(nsAString& aCssText) const override;
|
||||
// Our XPCOM GetConditionText is OK
|
||||
virtual void SetConditionText(const nsAString& aConditionText,
|
||||
ErrorResult& aRv) override;
|
||||
|
||||
virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf)
|
||||
const override MOZ_MUST_OVERRIDE;
|
||||
|
||||
virtual JSObject* WrapObject(JSContext* aCx,
|
||||
JS::Handle<JSObject*> aGivenProto) override;
|
||||
|
||||
protected:
|
||||
void AppendConditionText(nsAString& aOutput);
|
||||
void AppendConditionText(nsAString& aOutput) const;
|
||||
|
||||
nsAutoPtr<URL> mURLs; // linked list of |struct URL| above.
|
||||
};
|
||||
|
|
@ -230,6 +231,9 @@ protected:
|
|||
|
||||
mozilla::CSSFontFaceDescriptors mDescriptors;
|
||||
|
||||
// The actual implementation of GetCssText, so we can make it const.
|
||||
void GetCssTextImpl(nsAString& aCssText) const;
|
||||
|
||||
private:
|
||||
// NOT TO BE IMPLEMENTED
|
||||
// This object cannot be allocated on its own, only as part of
|
||||
|
|
@ -242,35 +246,44 @@ class nsCSSFontFaceRule final : public mozilla::css::Rule,
|
|||
{
|
||||
public:
|
||||
nsCSSFontFaceRule(uint32_t aLineNumber, uint32_t aColumnNumber)
|
||||
: mozilla::css::Rule(aLineNumber, aColumnNumber) {}
|
||||
: mozilla::css::Rule(aLineNumber, aColumnNumber)
|
||||
{
|
||||
}
|
||||
|
||||
nsCSSFontFaceRule(const nsCSSFontFaceRule& aCopy)
|
||||
// copy everything except our reference count
|
||||
: mozilla::css::Rule(aCopy), mDecl(aCopy.mDecl) {}
|
||||
: mozilla::css::Rule(aCopy)
|
||||
, mDecl(aCopy.mDecl)
|
||||
{
|
||||
}
|
||||
|
||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(nsCSSFontFaceRule,
|
||||
mozilla::css::Rule)
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(nsCSSFontFaceRule, mozilla::css::Rule)
|
||||
virtual bool IsCCLeaf() const override;
|
||||
|
||||
// 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;
|
||||
using Rule::GetType;
|
||||
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);
|
||||
|
||||
// WebIDL interface
|
||||
uint16_t Type() const override;
|
||||
void GetCssTextImpl(nsAString& aCssText) const override;
|
||||
nsICSSDeclaration* Style();
|
||||
|
||||
virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const override;
|
||||
|
||||
virtual JSObject* WrapObject(JSContext* aCx,
|
||||
JS::Handle<JSObject*> aGivenProto) override;
|
||||
|
||||
void GetDescriptors(mozilla::CSSFontFaceDescriptors& aDescriptors) const
|
||||
{ aDescriptors = mDecl.mDescriptors; }
|
||||
|
||||
|
|
@ -307,30 +320,39 @@ class nsCSSFontFeatureValuesRule final : public mozilla::css::Rule,
|
|||
{
|
||||
public:
|
||||
nsCSSFontFeatureValuesRule(uint32_t aLineNumber, uint32_t aColumnNumber)
|
||||
: mozilla::css::Rule(aLineNumber, 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) {}
|
||||
: mozilla::css::Rule(aCopy)
|
||||
, mFamilyList(aCopy.mFamilyList)
|
||||
, mFeatureValues(aCopy.mFeatureValues)
|
||||
{
|
||||
}
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
virtual bool IsCCLeaf() const override;
|
||||
|
||||
// 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;
|
||||
using Rule::GetType;
|
||||
virtual already_AddRefed<mozilla::css::Rule> Clone() const override;
|
||||
|
||||
// nsIDOMCSSRule interface
|
||||
NS_DECL_NSIDOMCSSRULE
|
||||
|
||||
// nsIDOMCSSFontFaceRule interface
|
||||
NS_DECL_NSIDOMCSSFONTFEATUREVALUESRULE
|
||||
|
||||
// WebIDL interface
|
||||
uint16_t Type() const override;
|
||||
void GetCssTextImpl(nsAString& aCssText) const override;
|
||||
// Our XPCOM GetFontFamily is OK
|
||||
void SetFontFamily(const nsAString& aFamily, mozilla::ErrorResult& aRv);
|
||||
// Our XPCOM GetValueText is OK
|
||||
void SetValueText(const nsAString& aFamily, mozilla::ErrorResult& aRv);
|
||||
|
||||
const mozilla::FontFamilyList& GetFamilyList() { return mFamilyList; }
|
||||
void SetFamilyList(const mozilla::FontFamilyList& aFamilyList);
|
||||
|
||||
|
|
@ -344,6 +366,8 @@ public:
|
|||
|
||||
virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const override;
|
||||
|
||||
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
|
||||
|
||||
protected:
|
||||
~nsCSSFontFeatureValuesRule() {}
|
||||
|
||||
|
|
@ -398,23 +422,27 @@ private:
|
|||
nsCSSKeyframeRule(const nsCSSKeyframeRule& aCopy);
|
||||
~nsCSSKeyframeRule();
|
||||
public:
|
||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsCSSKeyframeRule, mozilla::css::Rule)
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(nsCSSKeyframeRule, mozilla::css::Rule)
|
||||
virtual bool IsCCLeaf() const override;
|
||||
|
||||
// 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;
|
||||
using Rule::GetType;
|
||||
virtual already_AddRefed<mozilla::css::Rule> Clone() const override;
|
||||
|
||||
// nsIDOMCSSRule interface
|
||||
NS_DECL_NSIDOMCSSRULE
|
||||
|
||||
// nsIDOMCSSKeyframeRule interface
|
||||
NS_DECL_NSIDOMCSSKEYFRAMERULE
|
||||
|
||||
// WebIDL interface
|
||||
uint16_t Type() const override;
|
||||
void GetCssTextImpl(nsAString& aCssText) const override;
|
||||
// Our XPCOM GetKeyText is OK.
|
||||
// Our XPCOM SetKeyText is OK.
|
||||
nsICSSDeclaration* Style();
|
||||
|
||||
const nsTArray<float>& GetKeys() const { return mKeys; }
|
||||
mozilla::css::Declaration* Declaration() { return mDeclaration; }
|
||||
|
||||
|
|
@ -422,6 +450,8 @@ public:
|
|||
|
||||
virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const override;
|
||||
|
||||
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
|
||||
|
||||
void DoGetKeyText(nsAString &aKeyText) const;
|
||||
|
||||
private:
|
||||
|
|
@ -452,22 +482,22 @@ public:
|
|||
virtual void List(FILE* out = stdout, int32_t aIndent = 0) const override;
|
||||
#endif
|
||||
virtual int32_t GetType() const override;
|
||||
using Rule::GetType;
|
||||
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
|
||||
|
||||
// WebIDL interface
|
||||
uint16_t Type() const override;
|
||||
void GetCssTextImpl(nsAString& aCssText) const override;
|
||||
// The XPCOM GetName is OK
|
||||
// The XPCOM SetName is OK
|
||||
using mozilla::css::GroupRule::CssRules;
|
||||
// The XPCOM appendRule is OK, since it never throws
|
||||
// The XPCOM deleteRule is OK, since it never throws
|
||||
nsCSSKeyframeRule* FindRule(const nsAString& aKey);
|
||||
|
||||
// rest of GroupRule
|
||||
virtual bool UseForPresentation(nsPresContext* aPresContext,
|
||||
nsMediaQueryResultCacheKey& aKey) override;
|
||||
|
|
@ -476,6 +506,8 @@ public:
|
|||
|
||||
virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const override;
|
||||
|
||||
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
|
||||
|
||||
private:
|
||||
uint32_t FindRuleIndexForKey(const nsAString& aKey);
|
||||
|
||||
|
|
@ -526,28 +558,33 @@ private:
|
|||
nsCSSPageRule(const nsCSSPageRule& aCopy);
|
||||
~nsCSSPageRule();
|
||||
public:
|
||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsCSSPageRule, nsIDOMCSSPageRule)
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(nsCSSPageRule, mozilla::css::Rule)
|
||||
virtual bool IsCCLeaf() const override;
|
||||
|
||||
// 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;
|
||||
using Rule::GetType;
|
||||
virtual already_AddRefed<mozilla::css::Rule> Clone() const override;
|
||||
|
||||
// nsIDOMCSSRule interface
|
||||
NS_DECL_NSIDOMCSSRULE
|
||||
|
||||
// nsIDOMCSSPageRule interface
|
||||
NS_DECL_NSIDOMCSSPAGERULE
|
||||
|
||||
// WebIDL interface
|
||||
uint16_t Type() const override;
|
||||
void GetCssTextImpl(nsAString& aCssText) const override;
|
||||
nsICSSDeclaration* Style();
|
||||
|
||||
mozilla::css::Declaration* Declaration() { return mDeclaration; }
|
||||
|
||||
void ChangeDeclaration(mozilla::css::Declaration* aDeclaration);
|
||||
|
||||
virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const override;
|
||||
|
||||
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
|
||||
|
||||
private:
|
||||
RefPtr<mozilla::css::Declaration> mDeclaration;
|
||||
// lazily created when needed:
|
||||
|
|
@ -556,8 +593,8 @@ private:
|
|||
|
||||
namespace mozilla {
|
||||
|
||||
class CSSSupportsRule : public css::GroupRule,
|
||||
public nsIDOMCSSSupportsRule
|
||||
class CSSSupportsRule final : public css::ConditionRule,
|
||||
public nsIDOMCSSSupportsRule
|
||||
{
|
||||
public:
|
||||
CSSSupportsRule(bool aConditionMet, const nsString& aCondition,
|
||||
|
|
@ -569,23 +606,13 @@ public:
|
|||
virtual void List(FILE* out = stdout, int32_t aIndent = 0) const override;
|
||||
#endif
|
||||
virtual int32_t GetType() const override;
|
||||
using Rule::GetType;
|
||||
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
|
||||
|
||||
|
|
@ -595,8 +622,17 @@ public:
|
|||
// nsIDOMCSSSupportsRule interface
|
||||
NS_DECL_NSIDOMCSSSUPPORTSRULE
|
||||
|
||||
// WebIDL interface
|
||||
uint16_t Type() const override;
|
||||
void GetCssTextImpl(nsAString& aCssText) const override;
|
||||
// Our XPCOM GetConditionText is OK
|
||||
virtual void SetConditionText(const nsAString& aConditionText,
|
||||
ErrorResult& aRv) override;
|
||||
|
||||
virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const override;
|
||||
|
||||
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
|
||||
|
||||
protected:
|
||||
virtual ~CSSSupportsRule();
|
||||
|
||||
|
|
@ -623,22 +659,45 @@ private:
|
|||
~nsCSSCounterStyleRule();
|
||||
|
||||
public:
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
virtual bool IsCCLeaf() const override;
|
||||
|
||||
// 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;
|
||||
using Rule::GetType;
|
||||
virtual already_AddRefed<mozilla::css::Rule> Clone() const override;
|
||||
|
||||
// nsIDOMCSSRule interface
|
||||
NS_DECL_NSIDOMCSSRULE
|
||||
|
||||
// nsIDOMCSSCounterStyleRule
|
||||
NS_DECL_NSIDOMCSSCOUNTERSTYLERULE
|
||||
|
||||
// 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.
|
||||
static bool CheckDescValue(int32_t aSystem,
|
||||
|
|
@ -663,6 +722,8 @@ public:
|
|||
|
||||
virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const override;
|
||||
|
||||
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
|
||||
|
||||
private:
|
||||
typedef NS_STDCALL_FUNCPROTO(nsresult, Getter, nsCSSCounterStyleRule,
|
||||
GetSymbols, (nsAString&));
|
||||
|
|
|
|||
|
|
@ -18,6 +18,11 @@
|
|||
#define NS_ICSS_STYLE_RULE_DOM_WRAPPER_IID \
|
||||
{0xcee1bbb6, 0x0a32, 0x4cf3, {0x8d, 0x42, 0xba, 0x39, 0x38, 0xe9, 0xec, 0xaa}}
|
||||
|
||||
namespace mozilla {
|
||||
namespace css {
|
||||
class StyleRule;
|
||||
} // namespace css
|
||||
} // namespace mozilla
|
||||
|
||||
class nsICSSStyleRuleDOMWrapper : public nsIDOMCSSStyleRule {
|
||||
public:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue