From 457039956cde4ef12c3201fc2c0b2e2f2d04485b Mon Sep 17 00:00:00 2001 From: Cameron McCormack Date: Thu, 11 Jan 2018 16:17:55 +0800 Subject: [PATCH] Bug 1427512 - Part 9: Remove nsIDOMCSSImportRule. r=xidorn,jryans MozReview-Commit-ID: 9XG6412Z5iY --- devtools/server/actors/object.js | 2 +- devtools/server/actors/styles.js | 3 +-- dom/interfaces/css/moz.build | 1 - dom/interfaces/css/nsIDOMCSSImportRule.idl | 17 -------------- layout/style/CSSImportRule.cpp | 24 -------------------- layout/style/CSSImportRule.h | 9 +------- layout/style/CSSStyleSheet.cpp | 26 +++++----------------- layout/style/ImportRule.h | 10 ++------- layout/style/ServoImportRule.cpp | 5 ++--- layout/style/ServoImportRule.h | 8 +------ layout/style/nsCSSRules.cpp | 5 ++--- 11 files changed, 16 insertions(+), 94 deletions(-) delete mode 100644 dom/interfaces/css/nsIDOMCSSImportRule.idl diff --git a/devtools/server/actors/object.js b/devtools/server/actors/object.js index bfe4d9c37af3..8d572c8f194f 100644 --- a/devtools/server/actors/object.js +++ b/devtools/server/actors/object.js @@ -1738,7 +1738,7 @@ DebuggerServer.ObjectActorPreviewers.Object = [ }, function ObjectWithURL({obj, hooks}, grip, rawObj) { - if (isWorker || !rawObj || !(rawObj instanceof Ci.nsIDOMCSSImportRule || + if (isWorker || !rawObj || !(obj.class == "CSSImportRule" || rawObj instanceof Ci.nsIDOMCSSStyleSheet || obj.class == "Location" || rawObj instanceof Ci.nsIDOMWindow)) { diff --git a/devtools/server/actors/styles.js b/devtools/server/actors/styles.js index 71d5b9727083..c9bafc111c98 100644 --- a/devtools/server/actors/styles.js +++ b/devtools/server/actors/styles.js @@ -1314,8 +1314,7 @@ var StyleRuleActor = protocol.ActorClassWithSpec(styleRuleSpec, { document = this.rawNode.ownerDocument; } else { let parentStyleSheet = this._parentSheet; - while (parentStyleSheet.ownerRule && - parentStyleSheet.ownerRule instanceof Ci.nsIDOMCSSImportRule) { + while (parentStyleSheet.ownerRule) { parentStyleSheet = parentStyleSheet.ownerRule.parentStyleSheet; } diff --git a/dom/interfaces/css/moz.build b/dom/interfaces/css/moz.build index 1545f52a3da0..954dc725c4e0 100644 --- a/dom/interfaces/css/moz.build +++ b/dom/interfaces/css/moz.build @@ -9,7 +9,6 @@ with Files("**"): XPIDL_SOURCES += [ 'nsIDOMCounter.idl', - 'nsIDOMCSSImportRule.idl', 'nsIDOMCSSKeyframeRule.idl', 'nsIDOMCSSKeyframesRule.idl', 'nsIDOMCSSPageRule.idl', diff --git a/dom/interfaces/css/nsIDOMCSSImportRule.idl b/dom/interfaces/css/nsIDOMCSSImportRule.idl deleted file mode 100644 index fc96977d9188..000000000000 --- a/dom/interfaces/css/nsIDOMCSSImportRule.idl +++ /dev/null @@ -1,17 +0,0 @@ -/* -*- 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/. */ - -#include "nsISupports.idl" - -interface nsIDOMMediaList; -interface nsIDOMCSSStyleSheet; - -[scriptable, uuid(d3b2b914-01ef-4663-beda-a6475a26f491)] -interface nsIDOMCSSImportRule : nsISupports -{ - readonly attribute DOMString href; - readonly attribute nsIDOMMediaList media; - readonly attribute nsIDOMCSSStyleSheet styleSheet; -}; diff --git a/layout/style/CSSImportRule.cpp b/layout/style/CSSImportRule.cpp index 89d62d2a3a6e..864ec6a4ae3e 100644 --- a/layout/style/CSSImportRule.cpp +++ b/layout/style/CSSImportRule.cpp @@ -12,14 +12,6 @@ namespace mozilla { namespace dom { -NS_IMPL_ADDREF_INHERITED(CSSImportRule, css::Rule) -NS_IMPL_RELEASE_INHERITED(CSSImportRule, css::Rule) - -// QueryInterface implementation for CSSImportRule -NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(CSSImportRule) - NS_INTERFACE_MAP_ENTRY(nsIDOMCSSImportRule) -NS_INTERFACE_MAP_END_INHERITING(css::Rule) - bool CSSImportRule::IsCCLeaf() const { @@ -27,22 +19,6 @@ CSSImportRule::IsCCLeaf() const return false; } -NS_IMETHODIMP -CSSImportRule::GetMedia(nsIDOMMediaList** aMedia) -{ - NS_ENSURE_ARG_POINTER(aMedia); - NS_IF_ADDREF(*aMedia = GetMedia()); - return NS_OK; -} - -NS_IMETHODIMP -CSSImportRule::GetStyleSheet(nsIDOMCSSStyleSheet** aStyleSheet) -{ - NS_ENSURE_ARG_POINTER(aStyleSheet); - NS_IF_ADDREF(*aStyleSheet = GetStyleSheet()); - return NS_OK; -} - /* virtual */ JSObject* CSSImportRule::WrapObject(JSContext* aCx, JS::Handle aGivenProto) diff --git a/layout/style/CSSImportRule.h b/layout/style/CSSImportRule.h index b1978f3e44e2..ae1c01b02a42 100644 --- a/layout/style/CSSImportRule.h +++ b/layout/style/CSSImportRule.h @@ -8,20 +8,17 @@ #define mozilla_dom_CSSImportRule_h #include "mozilla/css/Rule.h" -#include "nsIDOMCSSImportRule.h" namespace mozilla { namespace dom { class CSSImportRule : public css::Rule - , public nsIDOMCSSImportRule { protected: using Rule::Rule; virtual ~CSSImportRule() {} public: - NS_DECL_ISUPPORTS_INHERITED bool IsCCLeaf() const final; int32_t GetType() const final { return css::Rule::IMPORT_RULE; } @@ -30,13 +27,9 @@ public: size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const override = 0; - // nsIDOMCSSImportRule interface - NS_IMETHOD GetMedia(nsIDOMMediaList** aMedia) final; - NS_IMETHOD GetStyleSheet(nsIDOMCSSStyleSheet** aStyleSheet) final; - // WebIDL interface uint16_t Type() const final { return nsIDOMCSSRule::IMPORT_RULE; } - // The XPCOM GetHref is fine, since it never fails. + virtual void GetHref(nsAString& aHref) const = 0; virtual dom::MediaList* GetMedia() const = 0; virtual StyleSheet* GetStyleSheet() const = 0; diff --git a/layout/style/CSSStyleSheet.cpp b/layout/style/CSSStyleSheet.cpp index 2b8979e2aab5..8ada693a74dd 100644 --- a/layout/style/CSSStyleSheet.cpp +++ b/layout/style/CSSStyleSheet.cpp @@ -149,18 +149,9 @@ CSSStyleSheet::RebuildChildList(css::Rule* aRule, return false; } - // XXXbz We really need to decomtaminate all this stuff. Is there a reason - // that I can't just QI to ImportRule and get a CSSStyleSheet - // directly from it? - nsCOMPtr importRule(do_QueryInterface(aRule)); - NS_ASSERTION(importRule, "GetType lied"); + css::ImportRule* importRule = static_cast(aRule); + StyleSheet* sheet = importRule->GetStyleSheet(); - nsCOMPtr childSheet; - importRule->GetStyleSheet(getter_AddRefs(childSheet)); - - // Have to do this QI to be safe, since XPConnect can fake - // nsIDOMCSSStyleSheets - RefPtr sheet = do_QueryObject(childSheet); if (!sheet) { return true; } @@ -898,15 +889,10 @@ CSSStyleSheet::ReparseSheet(const nsAString& aInput) Inner()->mOrderedRules.RemoveObjectAt(ruleCount - 1); rule->SetStyleSheet(nullptr); if (rule->GetType() == css::Rule::IMPORT_RULE) { - nsCOMPtr importRule(do_QueryInterface(rule)); - NS_ASSERTION(importRule, "GetType lied"); - - nsCOMPtr childSheet; - importRule->GetStyleSheet(getter_AddRefs(childSheet)); - - RefPtr cssSheet = do_QueryObject(childSheet); - if (cssSheet && cssSheet->GetOriginalURI()) { - reusableSheets.AddReusableSheet(cssSheet); + auto importRule = static_cast(rule.get()); + RefPtr sheet = importRule->GetStyleSheet(); + if (sheet && sheet->GetOriginalURI()) { + reusableSheets.AddReusableSheet(sheet); } } RuleRemoved(*rule); diff --git a/layout/style/ImportRule.h b/layout/style/ImportRule.h index 2d8620304de3..ec6c66538f46 100644 --- a/layout/style/ImportRule.h +++ b/layout/style/ImportRule.h @@ -39,12 +39,8 @@ private: ImportRule(const ImportRule& aCopy); ~ImportRule(); public: - NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(ImportRule, Rule) NS_DECL_ISUPPORTS_INHERITED - - // unhide since nsIDOMCSSImportRule has its own GetStyleSheet and GetMedia - using dom::CSSImportRule::GetStyleSheet; - using dom::CSSImportRule::GetMedia; + NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(ImportRule, Rule) // Rule methods #ifdef DEBUG @@ -56,11 +52,9 @@ public: virtual size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const override; - // nsIDOMCSSImportRule interface - NS_IMETHOD GetHref(nsAString& aHref) final; - // WebIDL interface void GetCssTextImpl(nsAString& aCssText) const override; + void GetHref(nsAString& aHref) const final; dom::MediaList* GetMedia() const final; StyleSheet* GetStyleSheet() const final; diff --git a/layout/style/ServoImportRule.cpp b/layout/style/ServoImportRule.cpp index 64d4754c1165..14e8a6257acb 100644 --- a/layout/style/ServoImportRule.cpp +++ b/layout/style/ServoImportRule.cpp @@ -96,11 +96,10 @@ ServoImportRule::GetStyleSheet() const return mChildSheet; } -NS_IMETHODIMP -ServoImportRule::GetHref(nsAString& aHref) +void +ServoImportRule::GetHref(nsAString& aHref) const { Servo_ImportRule_GetHref(mRawRule, &aHref); - return NS_OK; } /* virtual */ void diff --git a/layout/style/ServoImportRule.h b/layout/style/ServoImportRule.h index 49636e298603..d4be052d0a9b 100644 --- a/layout/style/ServoImportRule.h +++ b/layout/style/ServoImportRule.h @@ -26,21 +26,15 @@ public: NS_DECL_ISUPPORTS_INHERITED NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(ServoImportRule, dom::CSSImportRule) - // unhide since nsIDOMCSSImportRule has its own GetStyleSheet and GetMedia - using dom::CSSImportRule::GetStyleSheet; - using dom::CSSImportRule::GetMedia; - #ifdef DEBUG void List(FILE* out = stdout, int32_t aIndent = 0) const final; #endif already_AddRefed Clone() const final; size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const final; - // nsIDOMCSSImportRule interface - NS_IMETHOD GetHref(nsAString& aHref) final; - // WebIDL interface void GetCssTextImpl(nsAString& aCssText) const override; + void GetHref(nsAString& aHref) const final; dom::MediaList* GetMedia() const final; StyleSheet* GetStyleSheet() const final; diff --git a/layout/style/nsCSSRules.cpp b/layout/style/nsCSSRules.cpp index 9e7759b01cda..83e37ed56134 100644 --- a/layout/style/nsCSSRules.cpp +++ b/layout/style/nsCSSRules.cpp @@ -184,11 +184,10 @@ ImportRule::GetStyleSheet() const return mChildSheet; } -NS_IMETHODIMP -ImportRule::GetHref(nsAString & aHref) +void +ImportRule::GetHref(nsAString& aHref) const { aHref = mURLSpec; - return NS_OK; } /* virtual */ size_t