Bug 1350175 - Part 2: FFI changes to get line and column. r=xidorn
MozReview-Commit-ID: 87pVnoLmjPl
--- a/layout/style/ServoBindingList.h
+++ b/layout/style/ServoBindingList.h
@@ -97,17 +97,18 @@ SERVO_BINDING_FUNC(Servo_CssRules_Insert
uint16_t* rule_type)
SERVO_BINDING_FUNC(Servo_CssRules_DeleteRule, nsresult,
ServoCssRulesBorrowed rules, uint32_t index)
// CSS Rules
#define BASIC_RULE_FUNCS(type_) \
SERVO_BINDING_FUNC(Servo_CssRules_Get##type_##RuleAt, \
RawServo##type_##RuleStrong, \
- ServoCssRulesBorrowed rules, uint32_t index) \
+ ServoCssRulesBorrowed rules, uint32_t index, \
+ uint32_t* line, uint32_t* column) \
SERVO_BINDING_FUNC(Servo_##type_##Rule_Debug, void, \
RawServo##type_##RuleBorrowed rule, nsACString* result) \
SERVO_BINDING_FUNC(Servo_##type_##Rule_GetCssText, void, \
RawServo##type_##RuleBorrowed rule, nsAString* result)
#define GROUP_RULE_FUNCS(type_) \
BASIC_RULE_FUNCS(type_) \
SERVO_BINDING_FUNC(Servo_##type_##Rule_GetRules, ServoCssRulesStrong, \
RawServo##type_##RuleBorrowed rule)
--- a/layout/style/ServoCSSRuleList.cpp
+++ b/layout/style/ServoCSSRuleList.cpp
@@ -79,18 +79,22 @@ css::Rule*
ServoCSSRuleList::GetRule(uint32_t aIndex)
{
uintptr_t rule = mRules[aIndex];
if (rule <= kMaxRuleType) {
RefPtr<css::Rule> ruleObj = nullptr;
switch (rule) {
#define CASE_RULE(const_, name_) \
case nsIDOMCSSRule::const_##_RULE: { \
- ruleObj = new Servo##name_##Rule( \
- Servo_CssRules_Get##name_##RuleAt(mRawRules, aIndex).Consume()); \
+ uint32_t line = 0, column = 0; \
+ RefPtr<RawServo##name_##Rule> rule = \
+ Servo_CssRules_Get##name_##RuleAt( \
+ mRawRules, aIndex, &line, &column \
+ ).Consume(); \
+ ruleObj = new Servo##name_##Rule(rule.forget(), line, column); \
break; \
}
CASE_RULE(STYLE, Style)
CASE_RULE(MEDIA, Media)
CASE_RULE(NAMESPACE, Namespace)
CASE_RULE(PAGE, Page)
CASE_RULE(SUPPORTS, Supports)
CASE_RULE(DOCUMENT, Document)
--- a/layout/style/ServoDocumentRule.cpp
+++ b/layout/style/ServoDocumentRule.cpp
@@ -8,17 +8,18 @@
#include "mozilla/ServoBindings.h"
#include "mozilla/ServoDocumentRule.h"
using namespace mozilla::dom;
namespace mozilla {
-ServoDocumentRule::ServoDocumentRule(RefPtr<RawServoDocumentRule> aRawRule)
+ServoDocumentRule::ServoDocumentRule(RefPtr<RawServoDocumentRule> aRawRule,
+ uint32_t aLine, uint32_t aColumn)
: CSSMozDocumentRule(Servo_DocumentRule_GetRules(aRawRule).Consume())
, mRawRule(Move(aRawRule))
{
}
ServoDocumentRule::~ServoDocumentRule()
{
}
--- a/layout/style/ServoDocumentRule.h
+++ b/layout/style/ServoDocumentRule.h
@@ -12,17 +12,18 @@
#include "mozilla/dom/CSSMozDocumentRule.h"
#include "mozilla/ServoBindingTypes.h"
namespace mozilla {
class ServoDocumentRule final : public dom::CSSMozDocumentRule
{
public:
- explicit ServoDocumentRule(RefPtr<RawServoDocumentRule> aRawRule);
+ ServoDocumentRule(RefPtr<RawServoDocumentRule> aRawRule,
+ uint32_t aLine, uint32_t aColumn);
NS_DECL_ISUPPORTS_INHERITED
already_AddRefed<css::Rule> Clone() const override;
bool UseForPresentation(nsPresContext* aPresContext,
nsMediaQueryResultCacheKey& aKey) final;
#ifdef DEBUG
void List(FILE* out = stdout, int32_t aIndent = 0) const final;
--- a/layout/style/ServoMediaRule.cpp
+++ b/layout/style/ServoMediaRule.cpp
@@ -10,17 +10,18 @@
#include "mozilla/ServoBindings.h"
#include "mozilla/ServoMediaList.h"
using namespace mozilla::dom;
namespace mozilla {
-ServoMediaRule::ServoMediaRule(RefPtr<RawServoMediaRule> aRawRule)
+ServoMediaRule::ServoMediaRule(RefPtr<RawServoMediaRule> aRawRule,
+ uint32_t aLine, uint32_t aColumn)
: CSSMediaRule(Servo_MediaRule_GetRules(aRawRule).Consume())
, mRawRule(Move(aRawRule))
{
}
ServoMediaRule::~ServoMediaRule()
{
}
--- a/layout/style/ServoMediaRule.h
+++ b/layout/style/ServoMediaRule.h
@@ -14,17 +14,18 @@
namespace mozilla {
class ServoMediaList;
class ServoMediaRule final : public dom::CSSMediaRule
{
public:
- explicit ServoMediaRule(RefPtr<RawServoMediaRule> aRawRule);
+ ServoMediaRule(RefPtr<RawServoMediaRule> aRawRule,
+ uint32_t aLine, uint32_t aColumn);
NS_DECL_ISUPPORTS_INHERITED
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(ServoMediaRule, dom::CSSMediaRule)
already_AddRefed<css::Rule> Clone() const override;
bool UseForPresentation(nsPresContext* aPresContext,
nsMediaQueryResultCacheKey& aKey) final;
void SetStyleSheet(StyleSheet* aSheet) override;
--- a/layout/style/ServoNamespaceRule.h
+++ b/layout/style/ServoNamespaceRule.h
@@ -10,18 +10,19 @@
#include "mozilla/ServoBindingTypes.h"
#include "mozilla/dom/CSSNamespaceRule.h"
namespace mozilla {
class ServoNamespaceRule : public dom::CSSNamespaceRule
{
public:
- explicit ServoNamespaceRule(already_AddRefed<RawServoNamespaceRule> aRule)
- : CSSNamespaceRule(0, 0)
+ ServoNamespaceRule(already_AddRefed<RawServoNamespaceRule> aRule,
+ uint32_t aLine, uint32_t aColumn)
+ : CSSNamespaceRule(aLine, aColumn)
, mRawRule(Move(aRule))
{
}
NS_DECL_ISUPPORTS_INHERITED
#ifdef DEBUG
void List(FILE* out = stdout, int32_t aIndent = 0) const final;
--- a/layout/style/ServoPageRule.cpp
+++ b/layout/style/ServoPageRule.cpp
@@ -99,18 +99,19 @@ ServoPageRuleDeclaration::GetCSSParsingE
nsDOMCSSDeclaration::ServoCSSParsingEnvironment
ServoPageRuleDeclaration::GetServoCSSParsingEnvironment() const
{
return GetServoCSSParsingEnvironmentForRule(Rule());
}
// -- ServoPageRule --------------------------------------------------
-ServoPageRule::ServoPageRule(RefPtr<RawServoPageRule> aRawRule)
- : CSSPageRule(0, 0)
+ServoPageRule::ServoPageRule(RefPtr<RawServoPageRule> aRawRule,
+ uint32_t aLine, uint32_t aColumn)
+ : CSSPageRule(aLine, aColumn)
, mRawRule(Move(aRawRule))
, mDecls(Servo_PageRule_GetStyle(mRawRule).Consume())
{
}
ServoPageRule::~ServoPageRule()
{
}
--- a/layout/style/ServoPageRule.h
+++ b/layout/style/ServoPageRule.h
@@ -46,17 +46,18 @@ private:
inline const ServoPageRule* Rule() const;
RefPtr<ServoDeclarationBlock> mDecls;
};
class ServoPageRule final : public dom::CSSPageRule
{
public:
- explicit ServoPageRule(RefPtr<RawServoPageRule> aRawRule);
+ ServoPageRule(RefPtr<RawServoPageRule> aRawRule,
+ uint32_t aLine, uint32_t aColumn);
NS_DECL_ISUPPORTS_INHERITED
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(
ServoPageRule, dom::CSSPageRule
)
bool IsCCLeaf() const final;
RawServoPageRule* Raw() const { return mRawRule; }
--- a/layout/style/ServoStyleRule.cpp
+++ b/layout/style/ServoStyleRule.cpp
@@ -104,18 +104,19 @@ ServoStyleRuleDeclaration::GetCSSParsing
nsDOMCSSDeclaration::ServoCSSParsingEnvironment
ServoStyleRuleDeclaration::GetServoCSSParsingEnvironment() const
{
return GetServoCSSParsingEnvironmentForRule(Rule());
}
// -- ServoStyleRule --------------------------------------------------
-ServoStyleRule::ServoStyleRule(already_AddRefed<RawServoStyleRule> aRawRule)
- : BindingStyleRule(0, 0)
+ServoStyleRule::ServoStyleRule(already_AddRefed<RawServoStyleRule> aRawRule,
+ uint32_t aLine, uint32_t aColumn)
+ : BindingStyleRule(aLine, aColumn)
, mRawRule(aRawRule)
, mDecls(Servo_StyleRule_GetStyle(mRawRule).Consume())
{
}
// QueryInterface implementation for ServoStyleRule
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(ServoStyleRule)
NS_INTERFACE_MAP_ENTRY(nsIDOMCSSStyleRule)
--- a/layout/style/ServoStyleRule.h
+++ b/layout/style/ServoStyleRule.h
@@ -48,17 +48,18 @@ private:
RefPtr<ServoDeclarationBlock> mDecls;
};
class ServoStyleRule final : public BindingStyleRule
, public nsIDOMCSSStyleRule
{
public:
- explicit ServoStyleRule(already_AddRefed<RawServoStyleRule> aRawRule);
+ ServoStyleRule(already_AddRefed<RawServoStyleRule> aRawRule,
+ uint32_t aLine, uint32_t aColumn);
NS_DECL_ISUPPORTS_INHERITED
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(ServoStyleRule,
css::Rule)
virtual bool IsCCLeaf() const final MOZ_MUST_OVERRIDE;
NS_DECL_NSIDOMCSSSTYLERULE
// WebIDL interface
--- a/layout/style/ServoSupportsRule.cpp
+++ b/layout/style/ServoSupportsRule.cpp
@@ -9,17 +9,18 @@
#include "mozilla/ServoSupportsRule.h"
#include "mozilla/ServoBindings.h"
using namespace mozilla::dom;
namespace mozilla {
-ServoSupportsRule::ServoSupportsRule(RefPtr<RawServoSupportsRule> aRawRule)
+ServoSupportsRule::ServoSupportsRule(RefPtr<RawServoSupportsRule> aRawRule,
+ uint32_t aLine, uint32_t aColumn)
: CSSSupportsRule(Servo_SupportsRule_GetRules(aRawRule).Consume())
, mRawRule(Move(aRawRule))
{
}
ServoSupportsRule::~ServoSupportsRule()
{
}
--- a/layout/style/ServoSupportsRule.h
+++ b/layout/style/ServoSupportsRule.h
@@ -12,17 +12,18 @@
#include "mozilla/dom/CSSSupportsRule.h"
#include "mozilla/ServoBindingTypes.h"
namespace mozilla {
class ServoSupportsRule final : public dom::CSSSupportsRule
{
public:
- explicit ServoSupportsRule(RefPtr<RawServoSupportsRule> aRawRule);
+ ServoSupportsRule(RefPtr<RawServoSupportsRule> aRawRule,
+ uint32_t aLine, uint32_t aColumn);
NS_DECL_ISUPPORTS_INHERITED
already_AddRefed<css::Rule> Clone() const override;
bool UseForPresentation(nsPresContext* aPresContext,
nsMediaQueryResultCacheKey& aKey) final;
#ifdef DEBUG
void List(FILE* out = stdout, int32_t aIndent = 0) const final;