summaryrefslogtreecommitdiff
path: root/dom/base/StyleSheetList.cpp
diff options
context:
space:
mode:
authorMatt A. Tobin <email@mattatobin.com>2020-04-17 07:42:07 -0400
committerMatt A. Tobin <email@mattatobin.com>2020-04-17 07:42:07 -0400
commit9e5e58c0f6e1c65674cc688816f387532661d6f1 (patch)
treee211b95d505d1ecdf8f7b3513464dd329cbbcc54 /dom/base/StyleSheetList.cpp
parent16dba9a30b849c9381fab5fe53b722c7901e5283 (diff)
downloaduxp-9e5e58c0f6e1c65674cc688816f387532661d6f1.tar.gz
Bug 1425769 - Base class for ShadowRoot and Document to manage style state
Tag #1375
Diffstat (limited to 'dom/base/StyleSheetList.cpp')
-rw-r--r--dom/base/StyleSheetList.cpp23
1 files changed, 22 insertions, 1 deletions
diff --git a/dom/base/StyleSheetList.cpp b/dom/base/StyleSheetList.cpp
index 7274b5ea5d..42db3179dd 100644
--- a/dom/base/StyleSheetList.cpp
+++ b/dom/base/StyleSheetList.cpp
@@ -8,6 +8,7 @@
#include "mozilla/CSSStyleSheet.h"
#include "mozilla/dom/StyleSheetListBinding.h"
+#include "nsStubDocumentObserver.h"
namespace mozilla {
namespace dom {
@@ -17,7 +18,8 @@ NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_0(StyleSheetList)
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(StyleSheetList)
NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
NS_INTERFACE_MAP_ENTRY(nsIDOMStyleSheetList)
- NS_INTERFACE_MAP_ENTRY(nsISupports)
+ NS_INTERFACE_MAP_ENTRY(nsIMutationObserver)
+ NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMStyleSheetList)
NS_INTERFACE_MAP_END
NS_IMPL_CYCLE_COLLECTING_ADDREF(StyleSheetList)
@@ -43,5 +45,24 @@ StyleSheetList::SlowItem(uint32_t aIndex, nsIDOMStyleSheet** aItem)
return NS_OK;
}
+void
+StyleSheetList::NodeWillBeDestroyed(const nsINode* aNode)
+{
+ mStyleScope = nullptr;
+}
+
+StyleSheetList::StyleSheetList(StyleScope& aScope)
+ : mStyleScope(&aScope)
+{
+ mStyleScope->AsNode().AddMutationObserver(this);
+}
+
+StyleSheetList::~StyleSheetList()
+{
+ if (mStyleScope) {
+ mStyleScope->AsNode().RemoveMutationObserver(this);
+ }
+}
+
} // namespace dom
} // namespace mozilla