Part 1: Get relevant global for disassociated CSS rule objects
Differential Revision: https://phabricator.services.mozilla.com/D108873
bugzilla-url: https://bugzilla.mozilla.org/show_bug.cgi?id=1697829
gecko-commit: ef2d559eec61e45ebc3fe21f2f3df9f3f7129fdc
gecko-reviewers: emilio
diff --git a/css/cssom/insertRule-across-context.html b/css/cssom/insertRule-across-context.html
new file mode 100644
index 0000000..a8327e3
--- /dev/null
+++ b/css/cssom/insertRule-across-context.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test: CSSOM StyleSheet insertRule across context</title>
+<link rel="author" title="Kagami Sascha Rosylight" href="mailto:saschanaz@outlook.com">
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<link rel="help" href="https://drafts.csswg.org/cssom/">
+<script src="/resources/testharness.js" type="text/javascript"></script>
+<script src="/resources/testharnessreport.js" type="text/javascript"></script>
+
+<iframe id="iframe"></iframe>
+<script>
+ function createSheet() {
+ const tempStyleElement = iframe.contentDocument.createElement('style');
+ iframe.contentDocument.head.append(tempStyleElement);
+
+ const tempStyle = tempStyleElement.sheet;
+ tempStyleElement.remove();
+ return tempStyle;
+ }
+
+ test(() => {
+ const sheet = createSheet();
+ sheet.insertRule(".kaoru {}");
+ assert_equals(sheet.rules[0].constructor, iframe.contentWindow.CSSStyleRule);
+ }, "The constructor of inserted rule object must be from iframe");
+
+ test(() => {
+ const sheet = new iframe.contentWindow.CSSStyleSheet();
+ sheet.insertRule(".kaoru {}");
+ assert_equals(sheet.rules[0].constructor, iframe.contentWindow.CSSStyleRule);
+ }, "The constructor of inserted rule object must be from iframe for new CSSStyleSheet()");
+</script>