From 25d9fa1efe2d09b4267eda231638d349f85f9ec2 Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Thu, 26 Sep 2019 14:58:18 +0200 Subject: [PATCH 1/2] Require type and listener for addEventListener/removeEventListener --- src/ol/events/Target.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/ol/events/Target.js b/src/ol/events/Target.js index fa5269b116..773dd53537 100644 --- a/src/ol/events/Target.js +++ b/src/ol/events/Target.js @@ -57,6 +57,9 @@ class Target extends Disposable { * @param {import("../events.js").ListenerFunction} listener Listener. */ addEventListener(type, listener) { + if (!type || !listener) { + return; + } let listeners = this.listeners_[type]; if (!listeners) { listeners = this.listeners_[type] = []; @@ -146,6 +149,9 @@ class Target extends Disposable { * @param {import("../events.js").ListenerFunction} listener Listener. */ removeEventListener(type, listener) { + if (!type || !listener) { + return; + } const listeners = this.listeners_[type]; if (listeners) { const index = listeners.indexOf(listener); From d2e33a0df0b38f1eb78382ea628140d0891da33f Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Thu, 26 Sep 2019 15:20:29 +0200 Subject: [PATCH 2/2] Add a test that shows the fixed issue --- test/spec/ol/events/eventtarget.test.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/spec/ol/events/eventtarget.test.js b/test/spec/ol/events/eventtarget.test.js index 4cc6c73aff..9aa3a9641b 100644 --- a/test/spec/ol/events/eventtarget.test.js +++ b/test/spec/ol/events/eventtarget.test.js @@ -64,6 +64,11 @@ describe('ol.events.EventTarget', function() { eventTarget.removeEventListener('foo', spy1, false); expect(eventTarget.listeners_['foo']).to.have.length(1); }); + it.only('does nothing when called with undefined listener', function() { + eventTarget.addEventListener('foo', spy1); + eventTarget.removeEventListener('foo', undefined); + expect(eventTarget.listeners_['foo']).to.eql([spy1]); + }); }); describe('#dispatchEvent()', function() {