Bug 863792 - Test. r=josh
authorJohn Schoenick <jschoenick@mozilla.com>
Fri, 19 Apr 2013 12:01:08 -0700
changeset 129506 d226a39b41819fdae245dec187b8676e5b379928
parent 129505 9423207656dd9f2f76379a9dd1f7e70d9ad0b2e4
child 129507 3b8a036e8beb8739fc45e31b65e2a17ff5d42a0f
push idunknown
push userunknown
push dateunknown
reviewersjosh
bugs863792
milestone23.0a1
Bug 863792 - Test. r=josh
dom/plugins/test/mochitest/Makefile.in
dom/plugins/test/mochitest/file_bug863792.html
dom/plugins/test/mochitest/test_bug863792.html
--- a/dom/plugins/test/mochitest/Makefile.in
+++ b/dom/plugins/test/mochitest/Makefile.in
@@ -63,16 +63,18 @@ MOCHITEST_FILES = \
   test_bug539565-2.html \
   test_bug771202.html \
   file_bug771202.html \
   test_bug777098.html \
   test_bug751809.html \
   test_bug813906.html \
   test_bug784131.html \
   test_bug854082.html \
+  test_bug863792.html \
+  file_bug863792.html \
   test_enumerate.html \
   test_npruntime_construct.html \
   307-xo-redirect.sjs \
   test_redirect_handling.html \
   test_zero_opacity.html \
   test_NPPVpluginWantsAllNetworkStreams.html \
   test_npruntime_npnsetexception.html \
   test_NPNVdocumentOrigin.html \
new file mode 100644
--- /dev/null
+++ b/dom/plugins/test/mochitest/file_bug863792.html
@@ -0,0 +1,45 @@
+<!doctype html>
+<html>
+<head>
+  <title>File for Bug 863792</title>
+
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <base href="chrome://browser/content/">
+</head>
+<body>
+<script type="application/javascript">
+
+// A plugin that removes itself from the document and inactivates said document
+// inside NPP_New. We should not leak the instance. See also test_bug854082
+
+var outerwindow = window;
+var i = document.createElement("iframe");
+i.width = 500;
+i.height = 500;
+var ob = document.body;
+document.body.appendChild(i);
+i.addEventListener("load", function loaded() {
+  var id = i.contentDocument;
+  var e = id.createElement("embed");
+  var callbackrun = false;
+  e.width = 200;
+  e.height = 200;
+  e.type = "application/x-test";
+  e.__defineSetter__("pluginFoundElement", function() {
+    window.console.log("pluginFoundElement");
+    e.style.display = "none";
+    e.clientTop;
+    i.removeEventListener("load", loaded);
+    ob.removeChild(i);
+    id.body.clientTop;
+    id.body.removeChild(e);
+    callbackrun = true;
+  });
+  id.body.appendChild(e);
+  e.clientTop;
+  e = id = i = ob = null;
+  SpecialPowers.forceCC(); SpecialPowers.forceGC();
+}, false);
+</script>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/plugins/test/mochitest/test_bug863792.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<html>
+<head>
+  <title>Test for Bug 863792</title>
+  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+</head>
+<body>
+<script type="application/javascript">
+
+// A plugin that removes itself from the document and inactivates said document
+// inside NPP_New. We should not leak the instance. See also test_bug854082
+
+SimpleTest.waitForExplicitFinish();
+
+var i = document.createElement("iframe");
+i.src = "file_bug863792.html";
+i.width = 500;
+i.height = 500;
+document.body.appendChild(i);
+
+i.addEventListener("load", function() {
+  SpecialPowers.forceGC();
+  SpecialPowers.forceCC();
+  SimpleTest.executeSoon(function() {
+    SpecialPowers.forceGC();
+    SpecialPowers.forceCC();
+    SimpleTest.executeSoon(function() {
+      ok(true, "Didn't crash");
+      SimpleTest.finish();
+    });
+  });
+}, false);
+</script>
+</body>
+</html>