Merge pull request #179 from ahocevar/tile-queue
A tile queue that can be aborted. r=@elemoine,@fredj,@tonio
This commit is contained in:
@@ -15,7 +15,8 @@
|
||||
<script>
|
||||
|
||||
function test_all(t) {
|
||||
t.plan(7);
|
||||
t.plan(8);
|
||||
t.ok(OpenLayers.Animation.isNative !== undefined, "isNative is set.");
|
||||
t.open_window("Animation.html", function(win) {
|
||||
win.requestFrame(t);
|
||||
win.start(t);
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
<script type="text/javascript">window.alert = oldAlert;</script>
|
||||
<script src="../OLLoader.js"></script>
|
||||
<script type="text/javascript">
|
||||
// turn off animation frame handling, so we can check img urls in tests
|
||||
delete OpenLayers.Layer.Grid.prototype.queueTileDraw;
|
||||
|
||||
var isMozilla = (navigator.userAgent.indexOf("compatible") == -1);
|
||||
var layer;
|
||||
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
<head>
|
||||
<script src="../OLLoader.js"></script>
|
||||
<script type="text/javascript">
|
||||
// turn off animation frame handling, so we can check img urls in tests
|
||||
var origQueueTileDraw = OpenLayers.Layer.Grid.prototype.queueTileDraw;
|
||||
delete OpenLayers.Layer.Grid.prototype.queueTileDraw;
|
||||
|
||||
var isMozilla = (navigator.userAgent.indexOf("compatible") == -1);
|
||||
var layer;
|
||||
|
||||
@@ -67,6 +71,26 @@
|
||||
|
||||
map.destroy();
|
||||
}
|
||||
|
||||
function test_queueTileDraw(t) {
|
||||
t.plan(3);
|
||||
OpenLayers.Layer.Grid.prototype.queueTileDraw = origQueueTileDraw;
|
||||
|
||||
var map = new OpenLayers.Map('map');
|
||||
layer = new OpenLayers.Layer.WMS(name, url, params);
|
||||
map.addLayer(layer);
|
||||
map.setCenter([0, 0], 3);
|
||||
var queued = layer.tileQueue.length;
|
||||
t.ok(layer.tileQueue.length, "Tiles queued for drawing");
|
||||
map.zoomIn();
|
||||
t.eq(layer.tileQueue.length, queued, "Tile queue has same length after immediate zoom change");
|
||||
t.delay_call(1, function() {
|
||||
t.eq(layer.tileQueue.length, 0, "Tiles from queue processed");
|
||||
});
|
||||
|
||||
map.destroy();
|
||||
delete OpenLayers.Layer.Grid.prototype.queueTileDraw;
|
||||
}
|
||||
|
||||
function test_Layer_Grid_clearTiles (t) {
|
||||
t.plan(4);
|
||||
@@ -189,13 +213,35 @@
|
||||
|
||||
function test_Layer_Grid_moveTo(t) {
|
||||
|
||||
t.plan(14);
|
||||
t.plan(17);
|
||||
|
||||
var origIsNative = OpenLayers.Animation.isNative;
|
||||
OpenLayers.Animation.isNative = false;
|
||||
|
||||
var map = new OpenLayers.Map('map');
|
||||
layer = new OpenLayers.Layer.WMS(name, url, params);
|
||||
layer.destroy = function() {}; //we're going to do funky things with the grid
|
||||
layer.applyBackBuffer = function() {}; // backbuffering isn't under test here
|
||||
map.addLayer(layer);
|
||||
map.setCenter([-10, 0], 5);
|
||||
|
||||
var log = [];
|
||||
layer.deferMoveGriddedTiles = function() {
|
||||
log.push("deferMoveGriddedTiles");
|
||||
OpenLayers.Layer.WMS.prototype.deferMoveGriddedTiles.apply(this, arguments);
|
||||
}
|
||||
layer.moveGriddedTiles = function() {
|
||||
log.push("moveGriddedTiles");
|
||||
OpenLayers.Layer.WMS.prototype.moveGriddedTiles.apply(this, arguments);
|
||||
}
|
||||
map.moveTo([5, 0]);
|
||||
t.eq(log[0], "moveGriddedTiles", "deferred after moveTo");
|
||||
map.moveTo([0, 0]);
|
||||
t.eq(log[1], "moveGriddedTiles", "deferred again after another moveTo");
|
||||
t.eq(log.length, 2, "no tiles loaded yet");
|
||||
t.delay_call(0.1, function() {
|
||||
t.eq(log[2], "deferMoveGriddedTiles", "tiles moved after tileLoadingDelay");
|
||||
});
|
||||
|
||||
//make sure null bounds doesnt cause script error.
|
||||
// no test necessary, just action
|
||||
@@ -204,7 +250,6 @@
|
||||
layer.moveTo(); //checks to make sure null bounds doesnt break us
|
||||
|
||||
|
||||
|
||||
//observing globals
|
||||
layer.initSingleTile = function(bounds) {
|
||||
g_WhichFunc = "InitSingle";
|
||||
@@ -214,10 +259,13 @@
|
||||
g_WhichFunc = "InitGridded";
|
||||
g_Bounds = bounds;
|
||||
};
|
||||
layer._moveGriddedTiles = function() {
|
||||
layer.moveGriddedTiles = function() {
|
||||
g_WhichFunc = "MoveGridded";
|
||||
g_Bounds = layer.map.getExtent();
|
||||
};
|
||||
layer.deferMoveGriddedTiles = function() {
|
||||
g_WhichFunc = "DeferMoveGridded";
|
||||
}
|
||||
var clearTestBounds = function() {
|
||||
g_WhichFunc = null;
|
||||
g_Bounds = null;
|
||||
@@ -307,7 +355,7 @@
|
||||
|
||||
|
||||
//gridded
|
||||
layer.grid = [ [ {} ] ];
|
||||
layer.grid = [ [ {position: new OpenLayers.Pixel(0,0)} ] ];
|
||||
layer.singleTile = false;
|
||||
|
||||
//regular move
|
||||
@@ -315,11 +363,8 @@
|
||||
tilesBounds = new OpenLayers.Bounds(10,10,120,120);
|
||||
g_WhichFunc = null;
|
||||
layer.moveTo(null, zoomChanged);
|
||||
t.eq(g_WhichFunc, null, "moveGriddedTiles is delayed - not called yet");
|
||||
t.delay_call(0.2, function() {
|
||||
t.ok(g_WhichFunc == "MoveGridded", "if tiles not drastically out of bounds, we call moveGriddedTile()");
|
||||
t.ok(g_Bounds.equals(b), "if tiles not drastically out of bounds, we call moveGriddedTile() with correct bounds");
|
||||
});
|
||||
t.eq(g_WhichFunc, "MoveGridded", "if tiles not drastically out of bounds, we call moveGriddedTile()");
|
||||
t.ok(g_Bounds.equals(b), "if tiles not drastically out of bounds, we call moveGriddedTile() with correct bounds");
|
||||
|
||||
// drastic pan
|
||||
clearTestBounds();
|
||||
@@ -328,6 +373,7 @@
|
||||
t.ok(g_WhichFunc == "InitGridded", "if tiles drastically out of bounds, we call initGriddedTile()");
|
||||
t.ok(g_Bounds.equals(b), "if tiles drastically out of bounds, we call initGriddedTile() with correct bounds");
|
||||
|
||||
OpenLayers.Animation.isNative = origIsNative;
|
||||
}
|
||||
|
||||
/** THIS WOULD BE WHERE THE TESTS WOULD GO FOR
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
|
||||
<script src="../OLLoader.js"></script>
|
||||
<script type="text/javascript">
|
||||
// turn off animation frame handling, so we can check img urls in tests
|
||||
delete OpenLayers.Layer.Grid.prototype.queueTileDraw;
|
||||
|
||||
var isMozilla = (navigator.userAgent.indexOf("compatible") == -1);
|
||||
var layer;
|
||||
|
||||
|
||||
@@ -5,6 +5,9 @@
|
||||
<script type="text/javascript">window.alert = oldAlert;</script>
|
||||
<script src="../OLLoader.js"></script>
|
||||
<script type="text/javascript">
|
||||
// turn off animation frame handling, so we can check img urls in tests
|
||||
delete OpenLayers.Layer.Grid.prototype.queueTileDraw;
|
||||
|
||||
var isMozilla = (navigator.userAgent.indexOf("compatible") == -1);
|
||||
var layer;
|
||||
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
<head>
|
||||
<script src="../OLLoader.js"></script>
|
||||
<script type="text/javascript">
|
||||
// turn off animation frame handling, so we can check img urls in tests
|
||||
delete OpenLayers.Layer.Grid.prototype.queueTileDraw;
|
||||
|
||||
var isMozilla = (navigator.userAgent.indexOf("compatible") == -1);
|
||||
var layer;
|
||||
|
||||
|
||||
@@ -59,6 +59,39 @@
|
||||
tearDown();
|
||||
|
||||
}
|
||||
|
||||
function test_Tile_draw(t) {
|
||||
t.plan(6);
|
||||
setUp();
|
||||
|
||||
var position = new OpenLayers.Pixel(10,20);
|
||||
var bounds = new OpenLayers.Bounds(1,2,3,4);
|
||||
var url = "bobob";
|
||||
var size = new OpenLayers.Size(5,6);
|
||||
|
||||
tile = new OpenLayers.Tile(layer, position, bounds, url, size);
|
||||
var log = [];
|
||||
tile.clear = function() {
|
||||
log.push("clear");
|
||||
}
|
||||
tile.draw();
|
||||
t.eq(log.length, 1, "Tile cleared before drawing");
|
||||
|
||||
log = [];
|
||||
tile.events.register("beforedraw", this, function() {
|
||||
log.push("beforedraw");
|
||||
return false;
|
||||
});
|
||||
var drawn = tile.draw();
|
||||
t.eq(log[0], "clear", "tile cleared");
|
||||
t.eq(log[1], "beforedraw", "beforedraw event fired");
|
||||
t.eq(drawn, false, "tile not drawn when beforedraw listener returns false");
|
||||
drawn = tile.draw(true);
|
||||
t.eq(log.length, 2, "no beforedraw event fired and tile not cleared when draw called with 'deferred' argument set to true");
|
||||
t.eq(drawn, true, "tile drawn when draw called with 'deferred' argument set to true");
|
||||
|
||||
tearDown();
|
||||
}
|
||||
|
||||
function test_Tile_destroy(t) {
|
||||
t.plan( 6 );
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
<head>
|
||||
<script src="../OLLoader.js"></script>
|
||||
<script type="text/javascript">
|
||||
// turn off animation frame handling, so we can check img urls in tests
|
||||
delete OpenLayers.Layer.Grid.prototype.queueTileDraw;
|
||||
|
||||
var isMozilla = (navigator.userAgent.indexOf("compatible") == -1);
|
||||
var tile;
|
||||
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
<head>
|
||||
<script src="../../OLLoader.js"></script>
|
||||
<script type="text/javascript">
|
||||
// turn off animation frame handling, so we can check img urls in tests
|
||||
delete OpenLayers.Layer.Grid.prototype.queueTileDraw;
|
||||
|
||||
var isMozilla = (navigator.userAgent.indexOf("compatible") == -1);
|
||||
var isOpera = (navigator.userAgent.indexOf("Opera") != -1);
|
||||
var isIE = (navigator.userAgent.indexOf("MSIE") != -1);
|
||||
|
||||
@@ -5,6 +5,9 @@
|
||||
<script src="../../../../lib/deprecated.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
// turn off animation frame handling, so we can check img urls in tests
|
||||
delete OpenLayers.Layer.Grid.prototype.queueTileDraw;
|
||||
|
||||
var isMozilla = (navigator.userAgent.indexOf("compatible") == -1);
|
||||
var layer;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user