Merge pull request #5270 from fredj/load_error
Load erroneous image in ol.Image#load and ol.ImageTile#load
This commit is contained in:
+5
-2
@@ -122,10 +122,13 @@ ol.Image.prototype.handleImageLoad_ = function() {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load not yet loaded URI.
|
* Load the image or retry if loading previously failed.
|
||||||
|
* Loading is taken care of by the tile queue, and calling this method is
|
||||||
|
* only needed for preloading or for reloading in case of an error.
|
||||||
|
* @api
|
||||||
*/
|
*/
|
||||||
ol.Image.prototype.load = function() {
|
ol.Image.prototype.load = function() {
|
||||||
if (this.state == ol.ImageState.IDLE) {
|
if (this.state == ol.ImageState.IDLE || this.state == ol.ImageState.ERROR) {
|
||||||
this.state = ol.ImageState.LOADING;
|
this.state = ol.ImageState.LOADING;
|
||||||
this.changed();
|
this.changed();
|
||||||
goog.asserts.assert(!this.imageListenerKeys_,
|
goog.asserts.assert(!this.imageListenerKeys_,
|
||||||
|
|||||||
+5
-2
@@ -137,10 +137,13 @@ ol.ImageTile.prototype.handleImageLoad_ = function() {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load not yet loaded URI.
|
* Load the image or retry if loading previously failed.
|
||||||
|
* Loading is taken care of by the tile queue, and calling this method is
|
||||||
|
* only needed for preloading or for reloading in case of an error.
|
||||||
|
* @api
|
||||||
*/
|
*/
|
||||||
ol.ImageTile.prototype.load = function() {
|
ol.ImageTile.prototype.load = function() {
|
||||||
if (this.state == ol.TileState.IDLE) {
|
if (this.state == ol.TileState.IDLE || this.state == ol.TileState.ERROR) {
|
||||||
this.state = ol.TileState.LOADING;
|
this.state = ol.TileState.LOADING;
|
||||||
this.changed();
|
this.changed();
|
||||||
goog.asserts.assert(!this.imageListenerKeys_,
|
goog.asserts.assert(!this.imageListenerKeys_,
|
||||||
|
|||||||
+4
-1
@@ -107,6 +107,9 @@ ol.Tile.prototype.getState = function() {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* FIXME empty description for jsdoc
|
* Load the image or retry if loading previously failed.
|
||||||
|
* Loading is taken care of by the tile queue, and calling this method is
|
||||||
|
* only needed for preloading or for reloading in case of an error.
|
||||||
|
* @api
|
||||||
*/
|
*/
|
||||||
ol.Tile.prototype.load = goog.abstractMethod;
|
ol.Tile.prototype.load = goog.abstractMethod;
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 5.8 KiB |
@@ -0,0 +1,65 @@
|
|||||||
|
goog.provide('ol.test.ImageTile');
|
||||||
|
|
||||||
|
describe('ol.ImageTile', function() {
|
||||||
|
|
||||||
|
describe('#load()', function() {
|
||||||
|
|
||||||
|
it('can load idle tile', function(done) {
|
||||||
|
var tileCoord = [0, 0, 0];
|
||||||
|
var state = ol.TileState.IDLE;
|
||||||
|
var src = 'spec/ol/data/osm-0-0-0.png';
|
||||||
|
var tileLoadFunction = ol.source.Image.defaultImageLoadFunction;
|
||||||
|
var tile = new ol.ImageTile(tileCoord, state, src, null, tileLoadFunction);
|
||||||
|
|
||||||
|
var previousState = tile.getState()
|
||||||
|
|
||||||
|
ol.events.listen(tile, ol.events.EventType.CHANGE, function(event) {
|
||||||
|
var state = tile.getState();
|
||||||
|
if (previousState == ol.TileState.IDLE) {
|
||||||
|
expect(state).to.be(ol.TileState.LOADING);
|
||||||
|
} else if (previousState == ol.TileState.LOADING) {
|
||||||
|
expect(state).to.be(ol.TileState.LOADED);
|
||||||
|
done();
|
||||||
|
} else {
|
||||||
|
expect().fail();
|
||||||
|
}
|
||||||
|
previousState = state;
|
||||||
|
});
|
||||||
|
|
||||||
|
tile.load();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can load error tile', function(done) {
|
||||||
|
var tileCoord = [0, 0, 0];
|
||||||
|
var state = ol.TileState.ERROR;
|
||||||
|
var src = 'spec/ol/data/osm-0-0-0.png';
|
||||||
|
var tileLoadFunction = ol.source.Image.defaultImageLoadFunction;
|
||||||
|
var tile = new ol.ImageTile(tileCoord, state, src, null, tileLoadFunction);
|
||||||
|
|
||||||
|
var previousState = tile.getState()
|
||||||
|
|
||||||
|
ol.events.listen(tile, ol.events.EventType.CHANGE, function(event) {
|
||||||
|
var state = tile.getState();
|
||||||
|
if (previousState == ol.TileState.ERROR) {
|
||||||
|
expect(state).to.be(ol.TileState.LOADING);
|
||||||
|
} else if (previousState == ol.TileState.LOADING) {
|
||||||
|
expect(state).to.be(ol.TileState.LOADED);
|
||||||
|
done();
|
||||||
|
} else {
|
||||||
|
expect().fail();
|
||||||
|
}
|
||||||
|
previousState = state;
|
||||||
|
});
|
||||||
|
|
||||||
|
tile.load();
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
goog.require('ol.events');
|
||||||
|
goog.require('ol.events.EventType');
|
||||||
|
goog.require('ol.source.Image');
|
||||||
|
goog.require('ol.ImageTile');
|
||||||
|
goog.require('ol.TileState');
|
||||||
Reference in New Issue
Block a user