| <html> |
| <head> |
| <script src="../../../resources/js-test-pre.js"></script> |
| </head> |
| <body onload="test()"> |
| <script> |
| window.jsTestIsAsync = true; |
| description("Test that CSS stylesheets don't lose custom properties on GC when only reachable through child rules."); |
| |
| function createCSSStyleSheet() |
| { |
| const style = document.createElement("style"); |
| document.head.appendChild(style); |
| const sheet = style.sheet; |
| document.head.removeChild(style); |
| return sheet; |
| } |
| |
| function test() |
| { |
| sheet = createCSSStyleSheet(); |
| shouldBe("sheet.__proto__", "CSSStyleSheet.prototype"); |
| sheet.foo = "0"; |
| sheet.insertRule("div { color:black }", 0); |
| rule = sheet.rules[0]; |
| sheet = null; |
| |
| gc(); |
| setTimeout(function() { |
| gc(); |
| shouldBe('rule.parentStyleSheet.foo', '"0"'); |
| finishJSTest(); |
| }, 0); |
| } |
| </script> |
| <foo id="mystyle" style="display:none">.div { color: white; }</foo> |
| <script src="../../../resources/js-test-post.js"></script> |
| </body> |
| </html> |