diff --git a/lib/OpenLayers/Layer/Grid.js b/lib/OpenLayers/Layer/Grid.js index acaf6f5078..ad8a04a995 100644 --- a/lib/OpenLayers/Layer/Grid.js +++ b/lib/OpenLayers/Layer/Grid.js @@ -1140,15 +1140,6 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, { }); }, - /** - * Method: onLoadEnd - * Sets the loading flag to false and triggers the loadend event. - */ - onLoadEnd: function() { - this.loading = false; - this.events.triggerEvent("loadend"); - }, - /** * Method: removeTileMonitoringHooks * This function takes a tile as input and removes the tile hooks diff --git a/lib/OpenLayers/Map.js b/lib/OpenLayers/Map.js index 83dca79426..dbd0349a85 100644 --- a/lib/OpenLayers/Map.js +++ b/lib/OpenLayers/Map.js @@ -2399,7 +2399,7 @@ OpenLayers.Map = OpenLayers.Class({ // update the end scale, and reuse the running zoomTween map.zoomTween.finish = { scale: map.zoomTween.finish.scale * end.scale - } + }; } else { if (!xy) { var size = map.getSize(); @@ -2805,7 +2805,8 @@ OpenLayers.Map = OpenLayers.Class({ if (transform) { // Try translate3d, but only if the viewPortDiv has a transform // defined in a stylesheet - var computedStyle = OpenLayers.Element.getStyle(this.viewPortDiv, OpenLayers.Util.vendorPrefix.css('transform')); + var computedStyle = OpenLayers.Element.getStyle(this.viewPortDiv, + OpenLayers.Util.vendorPrefix.css('transform')); if (!computedStyle || computedStyle !== 'none') { template = ['translate3d(', ',0) ', 'scale3d(', ',1)']; style[transform] = [template[0], '0,0', template[1]].join(''); diff --git a/tests/Layer/Grid.html b/tests/Layer/Grid.html index 6903db6f26..aff5a5422f 100644 --- a/tests/Layer/Grid.html +++ b/tests/Layer/Grid.html @@ -968,7 +968,7 @@ } function test_applyBackBuffer(t) { - t.plan(9); + t.plan(12); var map = new OpenLayers.Map('map2'); var layer = new OpenLayers.Layer.WMS('', '', {}, { @@ -1025,7 +1025,25 @@ t.eq(layer.backBuffer.style.top, '295px', 'back buffer has correct top'); - map.destroy(); + // test #4 + // and a back buffer in the layer and do as if back buffer removal + // has been scheduled, and test that applyBackBuffer removes the + // back buffer and clears the timer + layer.createBackBuffer = function() { + return; + }; + backBuffer = document.createElement('div'); + map.layerContainerDiv.insertBefore(backBuffer, map.baseLayer.div); + layer.backBuffer = backBuffer; + layer.backBufferTimerId = 'fake'; + layer.applyBackBuffer(2); + t.ok(backBuffer !== map.layerContainerDiv.firstChild, + 'back buffer is not first child of layer container div'); + t.eq(layer.backBuffer, null, + 'back buffer not set in layer'); + t.eq(layer.backBufferTimerId, null, + 'back buffer timer cleared'); + map.destroy(); } function test_createBackBuffer(t) { @@ -1269,6 +1287,55 @@ OpenLayers.Tile.Image.prototype.createBackBuffer = origCreateBackBuffer } + + function test_delayed_back_buffer_removal(t) { + // + // Test that the delaying of the back buffer removal behaves + // as expected. + // + + t.plan(5); + + // set up + + var map = new OpenLayers.Map('map', { + resolutions: [32, 16, 8, 4, 2, 1], + zoomMethod: null + }); + var layer = new OpenLayers.Layer.WMS('', '', {}, { + isBaseLayer: true, + transitionEffect: 'resize' + }); + map.addLayer(layer); + map.setCenter(new OpenLayers.LonLat(0, 0), 0); + + map.zoomTo(1); + + t.ok(layer.backBuffer === map.layerContainerDiv.firstChild, + '[a] back buffer is first child of layer container div'); + + // Mark one tile loaded, to see if back buffer removal gets scheduled. + layer.grid[1][1].onImageLoad(); + + t.ok(layer.backBufferTimerId !== null, + '[a] back buffer scheduled for removal'); + + var backBuffer = layer.backBuffer; + + map.zoomTo(2); + + t.ok(layer.backBuffer !== backBuffer, + '[b] a new back buffer was created'); + t.ok(layer.backBuffer === map.layerContainerDiv.firstChild, + '[b] back buffer is first child of layer container div'); + t.ok(layer.backBufferTimerId === null, + '[b] back buffer no longer scheduled for removal'); + + // tear down + + map.destroy(); + } + function test_getGridData(t) { t.plan(12); diff --git a/tests/Map.html b/tests/Map.html index 4b1475a75d..0de10e7a56 100644 --- a/tests/Map.html +++ b/tests/Map.html @@ -2022,7 +2022,7 @@ map.applyTransform = function(x, y, scale) { log.push([x || map.layerContainerOriginPx.x, y || map.layerContainerOriginPx.y, scale]); OpenLayers.Map.prototype.applyTransform.apply(this, arguments); - } + }; moved = {}; map.zoomToExtent(new OpenLayers.Bounds(-1, -1, 1, 1)); @@ -2091,7 +2091,7 @@ map.applyTransform = function(x, y, scale) { log.push([x || map.layerContainerOriginPx.x, y || map.layerContainerOriginPx.y, scale]); OpenLayers.Map.prototype.applyTransform.apply(this, arguments); - } + }; map.moveByPx(-10, -10); t.eq(log[0][0], 10, 'layer container left correct');