mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/MultimediaViewer
synced 2024-09-25 03:09:40 +00:00
Fix bug that would cause the image to stay small
When opening the lightbox, the image might stay small because of a race condition. This is fixed using a deferred object. Change-Id: I4e93c7d26da47e5177abeb1dac841bf6c25a9022 Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/138
This commit is contained in:
parent
b2d986e2b4
commit
5e98e3bcd6
|
@ -27,18 +27,21 @@
|
|||
*/
|
||||
LIP.initialSrc = null;
|
||||
|
||||
LIP.getImageElement = function ( loadcb ) {
|
||||
var ele;
|
||||
LIP.getImageElement = function () {
|
||||
var ele,
|
||||
$deferred = $.Deferred(),
|
||||
image = this;
|
||||
|
||||
lightboxHooks.callAll( 'beforeFetchImage', this );
|
||||
|
||||
ele = new Image();
|
||||
ele.addEventListener( 'load', loadcb );
|
||||
ele.addEventListener( 'error', $deferred.reject );
|
||||
ele.addEventListener( 'load', function() { $deferred.resolve( image, ele ); } );
|
||||
ele.src = this.src || this.initialSrc;
|
||||
|
||||
lightboxHooks.callAll( 'modifyImageElement', ele );
|
||||
|
||||
return ele;
|
||||
return $deferred;
|
||||
};
|
||||
|
||||
// Assumes that the parent element's size is the maximum size.
|
||||
|
|
|
@ -209,12 +209,13 @@
|
|||
* @param {LightboxImage} image
|
||||
*/
|
||||
LIP.load = function ( image ) {
|
||||
var iface = this,
|
||||
ele = image.getImageElement( function () {
|
||||
iface.loadCallback( image, ele );
|
||||
} );
|
||||
var iface = this;
|
||||
|
||||
this.currentImage = image;
|
||||
|
||||
image.getImageElement().done( function( image, ele ) {
|
||||
iface.loadCallback.call( iface, image, ele );
|
||||
} );
|
||||
};
|
||||
|
||||
LIP.autoResizeImage = function () {
|
||||
|
|
|
@ -10,7 +10,20 @@
|
|||
QUnit.start();
|
||||
}
|
||||
|
||||
lightboxImage.getImageElement( loadCallback );
|
||||
lightboxImage.getImageElement()
|
||||
.done( loadCallback );
|
||||
} );
|
||||
|
||||
QUnit.asyncTest( 'Image failing', 1, function ( assert ) {
|
||||
var lightboxImage = new window.LightboxImage( 'http://thisdoesntexist/fail.jpg' );
|
||||
|
||||
function errorCallback() {
|
||||
assert.ok( true, 'Image failed !' );
|
||||
QUnit.start();
|
||||
}
|
||||
|
||||
lightboxImage.getImageElement()
|
||||
.fail( errorCallback );
|
||||
} );
|
||||
|
||||
}( mediaWiki, jQuery ) );
|
||||
|
|
Loading…
Reference in a new issue