michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: "use strict"; michael@0: michael@0: const events = require("sdk/dom/events"); michael@0: const { activeBrowserWindow: { document } } = require("sdk/deprecated/window-utils"); michael@0: const window = document.window; michael@0: /* michael@0: exports["test on / emit"] = function (assert, done) { michael@0: let element = document.createElement("div"); michael@0: events.on(element, "click", function listener(event) { michael@0: assert.equal(event.target, element, "event has correct target"); michael@0: events.removeListener(element, "click", listener); michael@0: done(); michael@0: }); michael@0: michael@0: events.emit(element, "click", { michael@0: category: "MouseEvents", michael@0: settings: [ michael@0: true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null michael@0: ] michael@0: }); michael@0: }; michael@0: michael@0: exports["test remove"] = function (assert, done) { michael@0: let element = document.createElement("span"); michael@0: let l1 = 0; michael@0: let l2 = 0; michael@0: let options = { michael@0: category: "MouseEvents", michael@0: settings: [ michael@0: true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null michael@0: ] michael@0: }; michael@0: michael@0: events.on(element, "click", function listener1(event) { michael@0: l1 ++; michael@0: assert.equal(event.target, element, "event has correct target"); michael@0: events.removeListener(element, "click", listener1); michael@0: }); michael@0: michael@0: events.on(element, "click", function listener2(event) { michael@0: l2 ++; michael@0: if (l1 < l2) { michael@0: assert.equal(l1, 1, "firs listener was called and then romeved"); michael@0: events.removeListener(element, "click", listener2); michael@0: done(); michael@0: } michael@0: events.emit(element, "click", options); michael@0: }); michael@0: michael@0: events.emit(element, "click", options); michael@0: }; michael@0: michael@0: exports["test once"] = function (assert, done) { michael@0: let element = document.createElement("h1"); michael@0: let l1 = 0; michael@0: let l2 = 0; michael@0: let options = { michael@0: category: "MouseEvents", michael@0: settings: [ michael@0: true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null michael@0: ] michael@0: }; michael@0: michael@0: michael@0: events.once(element, "click", function listener(event) { michael@0: assert.equal(event.target, element, "event target is a correct element"); michael@0: l1 ++; michael@0: }); michael@0: michael@0: events.on(element, "click", function listener(event) { michael@0: l2 ++; michael@0: if (l2 > 3) { michael@0: events.removeListener(element, "click", listener); michael@0: assert.equal(event.target, element, "event has correct target"); michael@0: assert.equal(l1, 1, "once was called only once"); michael@0: done(); michael@0: } michael@0: events.emit(element, "click", options); michael@0: }); michael@0: michael@0: events.emit(element, "click", options); michael@0: } michael@0: */ michael@0: require("test").run(exports);