Bug 1286673 Test sdk/event/dom.js for leaks when used on a closed window. r=gabor a=kwierso
authorBen Kelly <ben@wanderview.com>
Fri, 15 Jul 2016 14:30:08 -0700
changeset 388553 865803c7d5f8b0b27d869adafee19498d82c9b34
parent 388552 ebc0f45e1ea5455666e7a60ee9668d7b74277a45
child 388554 7035e4f43546ba0babb41ea0465c7578f297d721
push id23207
push userrthijssen@mozilla.com
push dateSat, 16 Jul 2016 09:33:55 +0000
reviewersgabor, kwierso
bugs1286673
milestone50.0a1
Bug 1286673 Test sdk/event/dom.js for leaks when used on a closed window. r=gabor a=kwierso
addon-sdk/source/test/leak/jetpack-package.ini
addon-sdk/source/test/leak/test-leak-event-dom-closed-window.js
--- a/addon-sdk/source/test/leak/jetpack-package.ini
+++ b/addon-sdk/source/test/leak/jetpack-package.ini
@@ -1,5 +1,6 @@
 [DEFAULT]
 support-files =
   leak-utils.js
 
 [test-leak-window-events.js]
+[test-leak-event-dom-closed-window.js]
new file mode 100644
--- /dev/null
+++ b/addon-sdk/source/test/leak/test-leak-event-dom-closed-window.js
@@ -0,0 +1,29 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+'use strict';
+
+const { asyncWindowLeakTest } = require("./leak-utils");
+const { Loader } = require('sdk/test/loader');
+const openWindow = require("sdk/window/utils").open;
+
+exports["test sdk/event/dom does not leak when attached to closed window"] = function*(assert) {
+  yield asyncWindowLeakTest(assert, _ => {
+    return new Promise(resolve => {
+      let loader = Loader(module);
+      let { open } = loader.require('sdk/event/dom');
+      let w = openWindow();
+      w.addEventListener("DOMWindowClose", function windowClosed(evt) {
+        w.removeEventListener("DOMWindowClose", windowClosed);
+        // The sdk/event/dom module tries to clean itself up when DOMWindowClose
+        // is fired.  Verify that it doesn't leak if its attached to an
+        // already closed window either. (See bug 1268898.)
+        open(w.document, "TestEvent1");
+        resolve(loader);
+      });
+      w.close();
+    });
+  });
+}
+
+require("sdk/test").run(exports);