Bug 1325878: Don't hardode nsMediaList in dom::StyleSheet. r?xidorn draft
authorEmilio Cobos Álvarez <emilio@crisal.io>
Tue, 11 Apr 2017 09:31:21 +0800
changeset 561042 e0a002731fb565a797dd5028df0f5fd2671d7684
parent 561041 58835e9c2d6de1041c6dfaf86e75379e3557c4f5
child 561043 18070b9357120caad8b822b26d7d83a42cb8815c
push id53604
push userbmo:emilio+bugs@crisal.io
push dateWed, 12 Apr 2017 05:05:04 +0000
reviewersxidorn
bugs1325878
milestone55.0a1
Bug 1325878: Don't hardode nsMediaList in dom::StyleSheet. r?xidorn MozReview-Commit-ID: IynF1NFUSLf
layout/style/MediaList.h
layout/style/StyleSheet.cpp
--- a/layout/style/MediaList.h
+++ b/layout/style/MediaList.h
@@ -36,22 +36,29 @@ namespace dom {
 class MediaList : public nsIDOMMediaList
                 , public nsWrapperCache
 {
 public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(MediaList)
 
   /**
-   * Creates a MediaList backed by the StyleBackendType of the document.
+   * Creates a MediaList backed by the given StyleBackendType.
    */
   static already_AddRefed<MediaList> Create(StyleBackendType,
                                             const nsAString& aMedia);
 
   /**
+   * Creates a MediaList backed by the given StyleBackendType.
+   */
+  static already_AddRefed<MediaList> Create(StyleBackendType aBackendType) {
+    return Create(aBackendType, nsString());
+  }
+
+  /**
    * Creates a MediaList backed by the StyleBackendType of the document.
    */
   static already_AddRefed<MediaList> Create(const nsIDocument& aDocument,
                                             const nsAString& aMedia);
 
   virtual already_AddRefed<MediaList> Clone() = 0;
 
   JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) final;
--- a/layout/style/StyleSheet.cpp
+++ b/layout/style/StyleSheet.cpp
@@ -9,17 +9,16 @@
 #include "mozilla/dom/CSSRuleList.h"
 #include "mozilla/dom/MediaList.h"
 #include "mozilla/dom/ShadowRoot.h"
 #include "mozilla/ServoStyleSheet.h"
 #include "mozilla/StyleSheetInlines.h"
 #include "mozilla/CSSStyleSheet.h"
 
 #include "mozAutoDocUpdate.h"
-#include "nsMediaList.h"
 #include "NullPrincipal.h"
 
 namespace mozilla {
 
 StyleSheet::StyleSheet(StyleBackendType aType, css::SheetParsingMode aParsingMode)
   : mParent(nullptr)
   , mDocument(nullptr)
   , mOwningNode(nullptr)
@@ -687,17 +686,17 @@ StyleSheet::DropMedia()
     mMedia = nullptr;
   }
 }
 
 dom::MediaList*
 StyleSheet::Media()
 {
   if (!mMedia) {
-    mMedia = new nsMediaList();
+    mMedia = dom::MediaList::Create(mType);
     mMedia->SetStyleSheet(this);
   }
 
   return mMedia;
 }
 
 // nsWrapperCache