mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-09 00:37:32 +09:00
65 lines
1.9 KiB
JavaScript
65 lines
1.9 KiB
JavaScript
|
|
/* 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";
|
||
|
|
|
||
|
|
// Opening new windows in Fennec causes issues
|
||
|
|
module.metadata = {
|
||
|
|
engines: {
|
||
|
|
'Firefox': '*'
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
const { asyncWindowLeakTest } = require("./leak-utils.js");
|
||
|
|
const { Loader } = require("sdk/test/loader");
|
||
|
|
const { open } = require("sdk/window/utils");
|
||
|
|
|
||
|
|
exports["test window/events for leaks"] = function*(assert) {
|
||
|
|
yield asyncWindowLeakTest(assert, _ => {
|
||
|
|
return new Promise((resolve, reject) => {
|
||
|
|
let loader = Loader(module);
|
||
|
|
let { events } = loader.require("sdk/window/events");
|
||
|
|
let { on, off } = loader.require("sdk/event/core");
|
||
|
|
|
||
|
|
on(events, "data", function handler(e) {
|
||
|
|
try {
|
||
|
|
if (e.type === "load") {
|
||
|
|
e.target.close();
|
||
|
|
}
|
||
|
|
else if (e.type === "close") {
|
||
|
|
off(events, "data", handler);
|
||
|
|
|
||
|
|
// Let asyncWindowLeakTest call loader.unload() after the
|
||
|
|
// leak check.
|
||
|
|
resolve(loader);
|
||
|
|
}
|
||
|
|
} catch (e) {
|
||
|
|
reject(e);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
// Open a window. This will trigger our data events.
|
||
|
|
open();
|
||
|
|
});
|
||
|
|
});
|
||
|
|
};
|
||
|
|
|
||
|
|
exports["test window/events for leaks with existing window"] = function*(assert) {
|
||
|
|
yield asyncWindowLeakTest(assert, _ => {
|
||
|
|
return new Promise((resolve, reject) => {
|
||
|
|
let loader = Loader(module);
|
||
|
|
let w = open();
|
||
|
|
w.addEventListener("load", function windowLoaded(evt) {
|
||
|
|
w.removeEventListener("load", windowLoaded);
|
||
|
|
let { events } = loader.require("sdk/window/events");
|
||
|
|
w.addEventListener("DOMWindowClose", function windowClosed(evt) {
|
||
|
|
w.removeEventListener("DOMWindowClose", windowClosed);
|
||
|
|
resolve(loader);
|
||
|
|
});
|
||
|
|
w.close();
|
||
|
|
});
|
||
|
|
});
|
||
|
|
});
|
||
|
|
};
|
||
|
|
|
||
|
|
require("sdk/test").run(exports);
|