зеркало из https://github.com/mozilla/gecko-dev.git
Bug 851892 part 13. Convert media, supports, and moz-document rules to WebIDL. r=peterv,heycam
This commit is contained in:
Родитель
440a3a3356
Коммит
546d9dad1b
|
@ -76,10 +76,7 @@
|
|||
// includes needed for the prototype chain interfaces
|
||||
#include "nsIDOMCSSKeyframeRule.h"
|
||||
#include "nsIDOMCSSKeyframesRule.h"
|
||||
#include "nsIDOMCSSMediaRule.h"
|
||||
#include "nsIDOMCSSFontFaceRule.h"
|
||||
#include "nsIDOMCSSMozDocumentRule.h"
|
||||
#include "nsIDOMCSSSupportsRule.h"
|
||||
#include "nsIDOMCSSCounterStyleRule.h"
|
||||
#include "nsIDOMCSSPageRule.h"
|
||||
#include "nsIDOMXULCommandDispatcher.h"
|
||||
|
@ -187,11 +184,6 @@ static nsDOMClassInfoData sClassInfoData[] = {
|
|||
|
||||
// Misc Core related classes
|
||||
|
||||
// CSS classes
|
||||
NS_DEFINE_CLASSINFO_DATA(CSSMediaRule, nsCSSRuleSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS |
|
||||
nsIXPCScriptable::WANT_PRECREATE)
|
||||
|
||||
// XUL classes
|
||||
#ifdef MOZ_XUL
|
||||
NS_DEFINE_CHROME_XBL_CLASSINFO_DATA(XULCommandDispatcher, nsDOMGenericSH,
|
||||
|
@ -214,14 +206,6 @@ static nsDOMClassInfoData sClassInfoData[] = {
|
|||
DEFAULT_SCRIPTABLE_FLAGS)
|
||||
#endif
|
||||
|
||||
NS_DEFINE_CLASSINFO_DATA(CSSMozDocumentRule, nsCSSRuleSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS |
|
||||
nsIXPCScriptable::WANT_PRECREATE)
|
||||
|
||||
NS_DEFINE_CLASSINFO_DATA(CSSSupportsRule, nsCSSRuleSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS |
|
||||
nsIXPCScriptable::WANT_PRECREATE)
|
||||
|
||||
NS_DEFINE_CLASSINFO_DATA(CSSFontFaceRule, nsCSSRuleSH,
|
||||
DOM_DEFAULT_SCRIPTABLE_FLAGS |
|
||||
nsIXPCScriptable::WANT_PRECREATE)
|
||||
|
@ -513,11 +497,6 @@ nsDOMClassInfo::Init()
|
|||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMDOMConstructor)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(CSSMediaRule, nsIDOMCSSMediaRule)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSRule)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSMediaRule)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
#ifdef MOZ_XUL
|
||||
DOM_CLASSINFO_MAP_BEGIN(XULCommandDispatcher, nsIDOMXULCommandDispatcher)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMXULCommandDispatcher)
|
||||
|
@ -551,16 +530,6 @@ nsDOMClassInfo::Init()
|
|||
DOM_CLASSINFO_MAP_END
|
||||
#endif
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(CSSMozDocumentRule, nsIDOMCSSMozDocumentRule)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSRule)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSMozDocumentRule)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(CSSSupportsRule, nsIDOMCSSSupportsRule)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSRule)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSSupportsRule)
|
||||
DOM_CLASSINFO_MAP_END
|
||||
|
||||
DOM_CLASSINFO_MAP_BEGIN(CSSFontFaceRule, nsIDOMCSSFontFaceRule)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSRule)
|
||||
DOM_CLASSINFO_MAP_ENTRY(nsIDOMCSSFontFaceRule)
|
||||
|
|
|
@ -19,9 +19,6 @@ enum nsDOMClassInfoID
|
|||
eDOMClassInfo_DOMPrototype_id,
|
||||
eDOMClassInfo_DOMConstructor_id,
|
||||
|
||||
// CSS classes
|
||||
eDOMClassInfo_CSSMediaRule_id,
|
||||
|
||||
// XUL classes
|
||||
#ifdef MOZ_XUL
|
||||
eDOMClassInfo_XULCommandDispatcher_id,
|
||||
|
@ -37,9 +34,6 @@ enum nsDOMClassInfoID
|
|||
eDOMClassInfo_XULTreeBuilder_id,
|
||||
#endif
|
||||
|
||||
eDOMClassInfo_CSSMozDocumentRule_id,
|
||||
eDOMClassInfo_CSSSupportsRule_id,
|
||||
|
||||
// @font-face in CSS
|
||||
eDOMClassInfo_CSSFontFaceRule_id,
|
||||
|
||||
|
|
|
@ -19,11 +19,6 @@ namespace dom {
|
|||
class TabChildGlobal;
|
||||
class ProcessGlobal;
|
||||
} // namespace dom
|
||||
namespace css {
|
||||
class MediaRule;
|
||||
class DocumentRule;
|
||||
} // namespace css
|
||||
class CSSSupportsRule;
|
||||
} // namespace mozilla
|
||||
class SandboxPrivate;
|
||||
class nsInProcessTabChildGlobal;
|
||||
|
@ -291,9 +286,6 @@ private:
|
|||
friend class SandboxPrivate;
|
||||
friend class nsInProcessTabChildGlobal;
|
||||
friend class nsWindowRoot;
|
||||
friend class mozilla::css::MediaRule;
|
||||
friend class mozilla::css::DocumentRule;
|
||||
friend class mozilla::CSSSupportsRule;
|
||||
friend class nsCSSFontFaceRule;
|
||||
friend class nsCSSFontFeatureValuesRule;
|
||||
friend class nsCSSKeyframeRule;
|
||||
|
|
|
@ -196,6 +196,17 @@ DOMInterfaces = {
|
|||
'nativeType': 'nsDOMCSSDeclaration'
|
||||
},
|
||||
|
||||
'CSSConditionRule': {
|
||||
'concrete': False,
|
||||
'nativeType': 'mozilla::css::ConditionRule',
|
||||
'headerFile': 'mozilla/css/GroupRule.h',
|
||||
},
|
||||
|
||||
'CSSGroupingRule': {
|
||||
'concrete': False,
|
||||
'nativeType': 'mozilla::css::GroupRule',
|
||||
},
|
||||
|
||||
'CSSImportRule': {
|
||||
'nativeType': 'mozilla::css::ImportRule',
|
||||
},
|
||||
|
@ -204,6 +215,16 @@ DOMInterfaces = {
|
|||
'wrapperCache': False
|
||||
},
|
||||
|
||||
'CSSMediaRule': {
|
||||
'nativeType': 'mozilla::css::MediaRule',
|
||||
'headerFile': 'nsCSSRules.h',
|
||||
},
|
||||
|
||||
'CSSMozDocumentRule': {
|
||||
'nativeType': 'mozilla::css::DocumentRule',
|
||||
'headerFile': 'nsCSSRules.h',
|
||||
},
|
||||
|
||||
'CSSNamespaceRule': {
|
||||
'nativeType': 'mozilla::css::NameSpaceRule',
|
||||
},
|
||||
|
@ -231,6 +252,11 @@ DOMInterfaces = {
|
|||
'binaryNames': { 'ownerRule': 'DOMOwnerRule' },
|
||||
},
|
||||
|
||||
'CSSSupportsRule': {
|
||||
'nativeType': 'mozilla::CSSSupportsRule',
|
||||
'headerFile': 'nsCSSRules.h',
|
||||
},
|
||||
|
||||
'CSSValue': {
|
||||
'concrete': False
|
||||
},
|
||||
|
|
|
@ -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;
|
||||
};
|
|
@ -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);
|
||||
};
|
|
@ -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;
|
||||
};
|
|
@ -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.
|
||||
};
|
|
@ -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,6 +24,7 @@ BoxObject implements LegacyQueryInterface;
|
|||
CaretPosition implements LegacyQueryInterface;
|
||||
Comment implements LegacyQueryInterface;
|
||||
Crypto implements LegacyQueryInterface;
|
||||
CSSMozDocumentRule implements LegacyQueryInterface;
|
||||
CSSPrimitiveValue implements LegacyQueryInterface;
|
||||
CSSStyleDeclaration implements LegacyQueryInterface;
|
||||
CSSStyleRule implements LegacyQueryInterface;
|
||||
|
|
|
@ -89,8 +89,12 @@ WEBIDL_FILES = [
|
|||
'CSPReport.webidl',
|
||||
'CSS.webidl',
|
||||
'CSSAnimation.webidl',
|
||||
'CSSConditionRule.webidl',
|
||||
'CSSGroupingRule.webidl',
|
||||
'CSSImportRule.webidl',
|
||||
'CSSLexer.webidl',
|
||||
'CSSMediaRule.webidl',
|
||||
'CSSMozDocumentRule.webidl',
|
||||
'CSSNamespaceRule.webidl',
|
||||
'CSSPrimitiveValue.webidl',
|
||||
'CSSPseudoElement.webidl',
|
||||
|
@ -99,6 +103,7 @@ WEBIDL_FILES = [
|
|||
'CSSStyleDeclaration.webidl',
|
||||
'CSSStyleRule.webidl',
|
||||
'CSSStyleSheet.webidl',
|
||||
'CSSSupportsRule.webidl',
|
||||
'CSSTransition.webidl',
|
||||
'CSSValue.webidl',
|
||||
'CSSValueList.webidl',
|
||||
|
|
|
@ -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 StyleSheet;
|
||||
|
||||
namespace dom {
|
||||
class CSSRuleList;
|
||||
} // namespace dom
|
||||
|
||||
namespace css {
|
||||
|
||||
class GroupRuleRuleList;
|
||||
|
@ -78,6 +83,12 @@ 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) const;
|
||||
|
@ -93,6 +104,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
|
||||
|
||||
|
|
|
@ -35,6 +35,9 @@
|
|||
#include "mozilla/dom/CSSStyleDeclarationBinding.h"
|
||||
#include "mozilla/dom/CSSNamespaceRuleBinding.h"
|
||||
#include "mozilla/dom/CSSImportRuleBinding.h"
|
||||
#include "mozilla/dom/CSSMediaRuleBinding.h"
|
||||
#include "mozilla/dom/CSSSupportsRuleBinding.h"
|
||||
#include "mozilla/dom/CSSMozDocumentRuleBinding.h"
|
||||
#include "StyleRule.h"
|
||||
#include "nsFont.h"
|
||||
#include "nsIURI.h"
|
||||
|
@ -550,43 +553,85 @@ GroupRule::AppendRulesToCssText(nsAString& aCssText) const
|
|||
// nsIDOMCSSMediaRule or nsIDOMCSSMozDocumentRule methods
|
||||
nsresult
|
||||
GroupRule::GetCssRules(nsIDOMCSSRuleList* *aRuleList)
|
||||
{
|
||||
NS_ADDREF(*aRuleList = CssRules());
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
CSSRuleList*
|
||||
GroupRule::CssRules()
|
||||
{
|
||||
if (!mRuleCollection) {
|
||||
mRuleCollection = new css::GroupRuleRuleList(this);
|
||||
}
|
||||
|
||||
NS_ADDREF(*aRuleList = mRuleCollection);
|
||||
return NS_OK;
|
||||
return mRuleCollection;
|
||||
}
|
||||
|
||||
nsresult
|
||||
GroupRule::InsertRule(const nsAString & aRule, uint32_t aIndex, uint32_t* _retval)
|
||||
{
|
||||
ErrorResult rv;
|
||||
*_retval = InsertRule(aRule, aIndex, rv);
|
||||
return rv.StealNSResult();
|
||||
}
|
||||
|
||||
uint32_t
|
||||
GroupRule::InsertRule(const nsAString& aRule, uint32_t aIndex, ErrorResult& aRv)
|
||||
{
|
||||
StyleSheet* sheet = GetStyleSheet();
|
||||
NS_ENSURE_TRUE(sheet, NS_ERROR_FAILURE);
|
||||
|
||||
if (aIndex > uint32_t(mRules.Count()))
|
||||
return NS_ERROR_DOM_INDEX_SIZE_ERR;
|
||||
if (NS_WARN_IF(!sheet)) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (aIndex > uint32_t(mRules.Count())) {
|
||||
aRv.Throw(NS_ERROR_DOM_INDEX_SIZE_ERR);
|
||||
return 0;
|
||||
}
|
||||
|
||||
NS_ASSERTION(uint32_t(mRules.Count()) <= INT32_MAX,
|
||||
"Too many style rules!");
|
||||
|
||||
return sheet->AsGecko()->InsertRuleIntoGroup(aRule, this, aIndex, _retval);
|
||||
uint32_t retval;
|
||||
nsresult rv =
|
||||
sheet->AsGecko()->InsertRuleIntoGroup(aRule, this, aIndex, &retval);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return 0;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
nsresult
|
||||
GroupRule::DeleteRule(uint32_t aIndex)
|
||||
{
|
||||
StyleSheet* sheet = GetStyleSheet();
|
||||
NS_ENSURE_TRUE(sheet, NS_ERROR_FAILURE);
|
||||
ErrorResult rv;
|
||||
DeleteRule(aIndex, rv);
|
||||
return rv.StealNSResult();
|
||||
}
|
||||
|
||||
if (aIndex >= uint32_t(mRules.Count()))
|
||||
return NS_ERROR_DOM_INDEX_SIZE_ERR;
|
||||
void
|
||||
GroupRule::DeleteRule(uint32_t aIndex, ErrorResult& aRv)
|
||||
{
|
||||
StyleSheet* sheet = GetStyleSheet();
|
||||
if (NS_WARN_IF(!sheet)) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return;
|
||||
}
|
||||
|
||||
if (aIndex >= uint32_t(mRules.Count())) {
|
||||
aRv.Throw(NS_ERROR_DOM_INDEX_SIZE_ERR);
|
||||
return;
|
||||
}
|
||||
|
||||
NS_ASSERTION(uint32_t(mRules.Count()) <= INT32_MAX,
|
||||
"Too many style rules!");
|
||||
|
||||
return sheet->AsGecko()->DeleteRuleFromGroup(this, aIndex);
|
||||
nsresult rv = sheet->AsGecko()->DeleteRuleFromGroup(this, aIndex);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
}
|
||||
}
|
||||
|
||||
/* virtual */ size_t
|
||||
|
@ -603,20 +648,31 @@ GroupRule::SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const
|
|||
return n;
|
||||
}
|
||||
|
||||
ConditionRule::ConditionRule(uint32_t aLineNumber, uint32_t aColumnNumber)
|
||||
: GroupRule(aLineNumber, aColumnNumber)
|
||||
{
|
||||
}
|
||||
|
||||
ConditionRule::ConditionRule(const ConditionRule& aCopy)
|
||||
: GroupRule(aCopy)
|
||||
{
|
||||
}
|
||||
|
||||
ConditionRule::~ConditionRule()
|
||||
{
|
||||
}
|
||||
|
||||
// -------------------------------------------
|
||||
// nsICSSMediaRule
|
||||
//
|
||||
MediaRule::MediaRule(uint32_t aLineNumber, uint32_t aColumnNumber)
|
||||
: GroupRule(aLineNumber, aColumnNumber)
|
||||
: ConditionRule(aLineNumber, aColumnNumber)
|
||||
{
|
||||
SetIsNotDOMBinding();
|
||||
}
|
||||
|
||||
MediaRule::MediaRule(const MediaRule& aCopy)
|
||||
: GroupRule(aCopy)
|
||||
: ConditionRule(aCopy)
|
||||
{
|
||||
SetIsNotDOMBinding();
|
||||
if (aCopy.mMedia) {
|
||||
mMedia = aCopy.mMedia->Clone();
|
||||
// XXXldb This doesn't really make sense.
|
||||
|
@ -631,18 +687,17 @@ MediaRule::~MediaRule()
|
|||
}
|
||||
}
|
||||
|
||||
NS_IMPL_ADDREF_INHERITED(MediaRule, GroupRule)
|
||||
NS_IMPL_RELEASE_INHERITED(MediaRule, GroupRule)
|
||||
NS_IMPL_ADDREF_INHERITED(MediaRule, ConditionRule)
|
||||
NS_IMPL_RELEASE_INHERITED(MediaRule, ConditionRule)
|
||||
|
||||
// QueryInterface implementation for MediaRule
|
||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(MediaRule)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIDOMCSSGroupingRule)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIDOMCSSConditionRule)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIDOMCSSMediaRule)
|
||||
NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(CSSMediaRule)
|
||||
NS_INTERFACE_MAP_END_INHERITING(GroupRule)
|
||||
NS_INTERFACE_MAP_END_INHERITING(ConditionRule)
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_INHERITED(MediaRule, GroupRule,
|
||||
NS_IMPL_CYCLE_COLLECTION_INHERITED(MediaRule, ConditionRule,
|
||||
mMedia)
|
||||
|
||||
/* virtual */ void
|
||||
|
@ -714,6 +769,14 @@ MediaRule::Type() const
|
|||
return nsIDOMCSSRule::MEDIA_RULE;
|
||||
}
|
||||
|
||||
nsMediaList*
|
||||
MediaRule::Media() const
|
||||
{
|
||||
// In practice, if we end up being parsed at all, we have non-null mMedia. So
|
||||
// it's OK to claim we don't return null here.
|
||||
return mMedia;
|
||||
}
|
||||
|
||||
void
|
||||
MediaRule::GetCssTextImpl(nsAString& aCssText) const
|
||||
{
|
||||
|
@ -752,6 +815,15 @@ MediaRule::GetConditionText(nsAString& aConditionText)
|
|||
|
||||
NS_IMETHODIMP
|
||||
MediaRule::SetConditionText(const nsAString& aConditionText)
|
||||
{
|
||||
ErrorResult rv;
|
||||
SetConditionText(aConditionText, rv);
|
||||
return rv.StealNSResult();
|
||||
}
|
||||
|
||||
void
|
||||
MediaRule::SetConditionText(const nsAString& aConditionText,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
if (!mMedia) {
|
||||
RefPtr<nsMediaList> media = new nsMediaList();
|
||||
|
@ -759,11 +831,16 @@ MediaRule::SetConditionText(const nsAString& aConditionText)
|
|||
nsresult rv = media->SetMediaText(aConditionText);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
mMedia = media;
|
||||
} else {
|
||||
aRv.Throw(rv);
|
||||
}
|
||||
return rv;
|
||||
return;
|
||||
}
|
||||
|
||||
return mMedia->SetMediaText(aConditionText);
|
||||
nsresult rv = mMedia->SetMediaText(aConditionText);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
}
|
||||
}
|
||||
|
||||
// nsIDOMCSSMediaRule methods
|
||||
|
@ -803,8 +880,7 @@ MediaRule::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const
|
|||
MediaRule::WrapObject(JSContext* aCx,
|
||||
JS::Handle<JSObject*> aGivenProto)
|
||||
{
|
||||
NS_NOTREACHED("We called SetIsNotDOMBinding() in our constructor");
|
||||
return nullptr;
|
||||
return CSSMediaRuleBinding::Wrap(aCx, this, aGivenProto);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -818,32 +894,29 @@ MediaRule::AppendConditionText(nsAString& aOutput) const
|
|||
}
|
||||
|
||||
DocumentRule::DocumentRule(uint32_t aLineNumber, uint32_t aColumnNumber)
|
||||
: GroupRule(aLineNumber, aColumnNumber)
|
||||
: ConditionRule(aLineNumber, aColumnNumber)
|
||||
{
|
||||
SetIsNotDOMBinding();
|
||||
}
|
||||
|
||||
DocumentRule::DocumentRule(const DocumentRule& aCopy)
|
||||
: GroupRule(aCopy)
|
||||
: ConditionRule(aCopy)
|
||||
, mURLs(new URL(*aCopy.mURLs))
|
||||
{
|
||||
SetIsNotDOMBinding();
|
||||
}
|
||||
|
||||
DocumentRule::~DocumentRule()
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMPL_ADDREF_INHERITED(DocumentRule, GroupRule)
|
||||
NS_IMPL_RELEASE_INHERITED(DocumentRule, GroupRule)
|
||||
NS_IMPL_ADDREF_INHERITED(DocumentRule, ConditionRule)
|
||||
NS_IMPL_RELEASE_INHERITED(DocumentRule, ConditionRule)
|
||||
|
||||
// QueryInterface implementation for DocumentRule
|
||||
NS_INTERFACE_MAP_BEGIN(DocumentRule)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIDOMCSSGroupingRule)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIDOMCSSConditionRule)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIDOMCSSMozDocumentRule)
|
||||
NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(CSSMozDocumentRule)
|
||||
NS_INTERFACE_MAP_END_INHERITING(GroupRule)
|
||||
NS_INTERFACE_MAP_END_INHERITING(ConditionRule)
|
||||
|
||||
#ifdef DEBUG
|
||||
/* virtual */ void
|
||||
|
@ -947,6 +1020,13 @@ DocumentRule::SetConditionText(const nsAString& aConditionText)
|
|||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
void
|
||||
DocumentRule::SetConditionText(const nsAString& aConditionText,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
aRv.Throw(NS_ERROR_NOT_IMPLEMENTED);
|
||||
}
|
||||
|
||||
// GroupRule interface
|
||||
/* virtual */ bool
|
||||
DocumentRule::UseForPresentation(nsPresContext* aPresContext,
|
||||
|
@ -1026,8 +1106,7 @@ DocumentRule::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const
|
|||
DocumentRule::WrapObject(JSContext* aCx,
|
||||
JS::Handle<JSObject*> aGivenProto)
|
||||
{
|
||||
NS_NOTREACHED("We called SetIsNotDOMBinding() in our constructor");
|
||||
return nullptr;
|
||||
return CSSMozDocumentRuleBinding::Wrap(aCx, this, aGivenProto);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -2528,11 +2607,10 @@ namespace mozilla {
|
|||
CSSSupportsRule::CSSSupportsRule(bool aConditionMet,
|
||||
const nsString& aCondition,
|
||||
uint32_t aLineNumber, uint32_t aColumnNumber)
|
||||
: css::GroupRule(aLineNumber, aColumnNumber)
|
||||
: css::ConditionRule(aLineNumber, aColumnNumber)
|
||||
, mUseGroup(aConditionMet)
|
||||
, mCondition(aCondition)
|
||||
{
|
||||
SetIsNotDOMBinding();
|
||||
}
|
||||
|
||||
CSSSupportsRule::~CSSSupportsRule()
|
||||
|
@ -2540,11 +2618,10 @@ CSSSupportsRule::~CSSSupportsRule()
|
|||
}
|
||||
|
||||
CSSSupportsRule::CSSSupportsRule(const CSSSupportsRule& aCopy)
|
||||
: css::GroupRule(aCopy),
|
||||
: css::ConditionRule(aCopy),
|
||||
mUseGroup(aCopy.mUseGroup),
|
||||
mCondition(aCopy.mCondition)
|
||||
{
|
||||
SetIsNotDOMBinding();
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
|
@ -2585,16 +2662,15 @@ CSSSupportsRule::UseForPresentation(nsPresContext* aPresContext,
|
|||
return mUseGroup;
|
||||
}
|
||||
|
||||
NS_IMPL_ADDREF_INHERITED(CSSSupportsRule, css::GroupRule)
|
||||
NS_IMPL_RELEASE_INHERITED(CSSSupportsRule, css::GroupRule)
|
||||
NS_IMPL_ADDREF_INHERITED(CSSSupportsRule, css::ConditionRule)
|
||||
NS_IMPL_RELEASE_INHERITED(CSSSupportsRule, css::ConditionRule)
|
||||
|
||||
// QueryInterface implementation for CSSSupportsRule
|
||||
NS_INTERFACE_MAP_BEGIN(CSSSupportsRule)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIDOMCSSGroupingRule)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIDOMCSSConditionRule)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIDOMCSSSupportsRule)
|
||||
NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(CSSSupportsRule)
|
||||
NS_INTERFACE_MAP_END_INHERITING(GroupRule)
|
||||
NS_INTERFACE_MAP_END_INHERITING(ConditionRule)
|
||||
|
||||
uint16_t
|
||||
CSSSupportsRule::Type() const
|
||||
|
@ -2643,6 +2719,13 @@ CSSSupportsRule::SetConditionText(const nsAString& aConditionText)
|
|||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
void
|
||||
CSSSupportsRule::SetConditionText(const nsAString& aConditionText,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
aRv.Throw(NS_ERROR_NOT_IMPLEMENTED);
|
||||
}
|
||||
|
||||
/* virtual */ size_t
|
||||
CSSSupportsRule::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const
|
||||
{
|
||||
|
@ -2656,8 +2739,7 @@ CSSSupportsRule::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const
|
|||
CSSSupportsRule::WrapObject(JSContext* aCx,
|
||||
JS::Handle<JSObject*> aGivenProto)
|
||||
{
|
||||
NS_NOTREACHED("We called SetIsNotDOMBinding() in our constructor");
|
||||
return nullptr;
|
||||
return CSSSupportsRuleBinding::Wrap(aCx, this, aGivenProto);
|
||||
}
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -43,7 +43,7 @@ class ErrorResult;
|
|||
|
||||
namespace css {
|
||||
|
||||
class MediaRule final : public GroupRule,
|
||||
class MediaRule final : public ConditionRule,
|
||||
public nsIDOMCSSMediaRule
|
||||
{
|
||||
public:
|
||||
|
@ -53,7 +53,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
|
||||
|
@ -89,6 +89,10 @@ public:
|
|||
// 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;
|
||||
|
@ -102,7 +106,7 @@ protected:
|
|||
RefPtr<nsMediaList> mMedia;
|
||||
};
|
||||
|
||||
class DocumentRule final : public GroupRule,
|
||||
class DocumentRule final : public ConditionRule,
|
||||
public nsIDOMCSSMozDocumentRule
|
||||
{
|
||||
public:
|
||||
|
@ -164,6 +168,9 @@ public:
|
|||
// 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;
|
||||
|
@ -577,7 +584,7 @@ private:
|
|||
|
||||
namespace mozilla {
|
||||
|
||||
class CSSSupportsRule final : public css::GroupRule,
|
||||
class CSSSupportsRule final : public css::ConditionRule,
|
||||
public nsIDOMCSSSupportsRule
|
||||
{
|
||||
public:
|
||||
|
@ -609,6 +616,9 @@ public:
|
|||
// 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;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче