test_crosscompartment_weakmap.html 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <title>Test Cross-Compartment DOM WeakMaps</title>
  5. <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
  6. <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
  7. </head>
  8. <body>
  9. <p id="display"></p>
  10. <script type="application/javascript">
  11. var my_map = new WeakMap();
  12. function setup() {
  13. var item = window.frames[0].document.querySelector("body");
  14. my_map.set(item, "success_string");
  15. var rule_fail = false;
  16. try {
  17. my_map.set(window.frames[0].document.styleSheets[0].cssRules[0], 1);
  18. } catch (e) {
  19. rule_fail = true;
  20. }
  21. ok(rule_fail, "Using rule as a weak map key across compartments should produce an exception because it can't be wrapper preserved.");
  22. }
  23. function runTest() {
  24. setup();
  25. SpecialPowers.forceGC();
  26. SpecialPowers.forceCC();
  27. SpecialPowers.forceGC();
  28. SpecialPowers.forceCC();
  29. var item = window.frames[0].document.querySelector("body");
  30. is(my_map.get(item), "success_string", "Preserve reflectors used cross-compartment as weak map keys.");
  31. }
  32. </script>
  33. <iframe src="file_crosscompartment_weakmap.html" onload="runTest()"></iframe>
  34. </pre>
  35. </body>
  36. </html>