Bug 1350175 - Part 2: FFI changes to get line and column. r=xidorn draft
authorFernando Jimenez Moreno <ferjmoreno@gmail.com>
Tue, 25 Apr 2017 16:24:39 +0200
changeset 577803 1decaf9bc3aa75d64254aea8fdb08679c2557ca2
parent 577802 005986f47fd243d7faddffa31689eff50a7161e5
child 577804 aeb0644da5649a3ae9c5142d0ddc07ad9fe6ffad
push id58791
push userferjmoreno@gmail.com
push dateMon, 15 May 2017 12:03:05 +0000
reviewersxidorn
bugs1350175
milestone55.0a1
Bug 1350175 - Part 2: FFI changes to get line and column. r=xidorn MozReview-Commit-ID: 87pVnoLmjPl
layout/style/ServoBindingList.h
layout/style/ServoCSSRuleList.cpp
layout/style/ServoDocumentRule.cpp
layout/style/ServoDocumentRule.h
layout/style/ServoMediaRule.cpp
layout/style/ServoMediaRule.h
layout/style/ServoNamespaceRule.h
layout/style/ServoPageRule.cpp
layout/style/ServoPageRule.h
layout/style/ServoStyleRule.cpp
layout/style/ServoStyleRule.h
layout/style/ServoSupportsRule.cpp
layout/style/ServoSupportsRule.h
--- 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;