diff --git a/src/ol/map.js b/src/ol/map.js index f2f54cd023..5ad2974019 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -10,7 +10,6 @@ goog.require('goog.async.AnimationDelay'); goog.require('goog.async.nextTick'); goog.require('goog.debug.Console'); goog.require('goog.dom'); -goog.require('goog.dom.ViewportSizeMonitor'); goog.require('goog.dom.classlist'); goog.require('goog.functions'); goog.require('goog.log'); @@ -348,17 +347,10 @@ ol.Map = function(options) { this.registerDisposable(this.renderer_); /** - * @type {goog.dom.ViewportSizeMonitor} + * @type {function(Event)|undefined} * @private */ - this.viewportSizeMonitor_ = new goog.dom.ViewportSizeMonitor(); - this.registerDisposable(this.viewportSizeMonitor_); - - /** - * @type {ol.events.Key} - * @private - */ - this.viewportResizeListenerKey_ = null; + this.handleResize_; /** * @private @@ -580,7 +572,7 @@ ol.Map.prototype.disposeInternal = function() { this.handleBrowserEvent, false, this); if (this.handleResize_ !== undefined) { goog.global.removeEventListener(ol.events.EventType.RESIZE, - this.handleResize_, false, this); + this.handleResize_, false); } goog.dom.removeNode(this.viewport_); goog.base(this, 'disposeInternal'); @@ -1064,9 +1056,10 @@ ol.Map.prototype.handleTargetChanged_ = function() { if (!targetElement) { goog.dom.removeNode(this.viewport_); - if (this.viewportResizeListenerKey_) { - ol.events.unlistenByKey(this.viewportResizeListenerKey_); - this.viewportResizeListenerKey_ = null; + if (this.handleResize_ !== undefined) { + goog.global.removeEventListener(ol.events.EventType.RESIZE, + this.handleResize_); + this.handleResize_ = undefined; } } else { targetElement.appendChild(this.viewport_); @@ -1077,10 +1070,10 @@ ol.Map.prototype.handleTargetChanged_ = function() { [ol.events.EventType.KEYDOWN, ol.events.EventType.KEYPRESS], this.handleBrowserEvent, false, this); - if (!this.viewportResizeListenerKey_) { - this.viewportResizeListenerKey_ = ol.events.listen( - this.viewportSizeMonitor_, ol.events.EventType.RESIZE, - this.updateSize, false, this); + if (!this.handleResize_) { + this.handleResize_ = this.updateSize.bind(this); + goog.global.addEventListener(ol.events.EventType.RESIZE, + this.handleResize_); } } diff --git a/src/ol/source/vectortilesource.js b/src/ol/source/vectortilesource.js index f75e1b9968..6918ebcbaf 100644 --- a/src/ol/source/vectortilesource.js +++ b/src/ol/source/vectortilesource.js @@ -1,7 +1,5 @@ goog.provide('ol.source.VectorTile'); -goog.require('ol.events'); -goog.require('ol.events.EventType'); goog.require('ol.TileState'); goog.require('ol.VectorTile'); goog.require('ol.events'); diff --git a/test/index.html b/test/index.html index 1e2d014ef3..ece127f01b 100644 --- a/test/index.html +++ b/test/index.html @@ -32,22 +32,6 @@ goog.json.USE_NATIVE_JSON = true; - /** - * The goog.dom.ViewportSizeMonitor (used in map.js) creates a global leak - * by setting goog.UID_PROPERTY_ on the monitored window. In order to test - * that we don't have other global leaks, we preemptively set the property - * so Mocha can compare the global before and after our tests. - * - * In addition, calling ol.events.listen on the global object (as done - * in deviceorientation.js) creates a second leak by setting - * ol.events.listenER_MAP_PROP_ on the global object. - * - * We preemptively set both of these properties so Mocha can compare the - * global before and after tests. The call to ol.events.listen also - * calls goog.getUid. - */ - ol.events.listen(this, 'test', function() {}); - var runner = mocha.run(); if (window.console && console.log) { // write stacks to the console for failed tests diff --git a/test/spec/ol/map.test.js b/test/spec/ol/map.test.js index 00a7b95c02..7d0a5d87b2 100644 --- a/test/spec/ol/map.test.js +++ b/test/spec/ol/map.test.js @@ -211,17 +211,13 @@ describe('ol.Map', function() { map = new ol.Map({ target: document.createElement('div') }); - var viewportResizeListeners = map.viewportSizeMonitor_.getListeners( - ol.events.EventType.RESIZE, false); - expect(viewportResizeListeners).to.have.length(1); + expect(map.handleResize_).to.be.ok(); }); describe('call setTarget with null', function() { it('unregisters the viewport resize listener', function() { map.setTarget(null); - var viewportResizeListeners = map.viewportSizeMonitor_.getListeners( - ol.events.EventType.RESIZE, false); - expect(viewportResizeListeners).to.have.length(0); + expect(map.handleResize_).to.be(undefined); }); }); @@ -229,9 +225,7 @@ describe('ol.Map', function() { it('registers a viewport resize listener', function() { map.setTarget(null); map.setTarget(document.createElement('div')); - var viewportResizeListeners = map.viewportSizeMonitor_.getListeners( - ol.events.EventType.RESIZE, false); - expect(viewportResizeListeners).to.have.length(1); + expect(map.handleResize_).to.be.ok(); }); }); @@ -401,7 +395,6 @@ describe('ol.Map', function() { goog.require('goog.dispose'); goog.require('goog.dom'); -goog.require('ol.events.EventType'); goog.require('ol.Map'); goog.require('ol.MapEvent'); goog.require('ol.Overlay'); diff --git a/test_rendering/index.html b/test_rendering/index.html index e7387ccfba..0a97859b7f 100644 --- a/test_rendering/index.html +++ b/test_rendering/index.html @@ -28,22 +28,6 @@