Bug 1325878: Don't hardode nsMediaList in dom::StyleSheet. r?xidorn
MozReview-Commit-ID: IynF1NFUSLf
--- 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