Aarcos has uploaded a new change for review.
https://gerrit.wikimedia.org/r/98746
Change subject: Add test to verify that in case of a resize event no image
replacement takes place when api data is empty/undefined.
......................................................................
Add test to verify that in case of a resize event no image
replacement takes place when api data is empty/undefined.
Change-Id: I2a880ce4b2e6c158763b1473f6a9f751922187b0
---
M resources/ext.multimediaViewer/ext.multimediaViewer.js
M tests/qunit/ext.multimediaViewer.test.js
2 files changed, 40 insertions(+), 6 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/MultimediaViewer
refs/changes/46/98746/1
diff --git a/resources/ext.multimediaViewer/ext.multimediaViewer.js
b/resources/ext.multimediaViewer/ext.multimediaViewer.js
index 6a03c04..382c4d3 100755
--- a/resources/ext.multimediaViewer/ext.multimediaViewer.js
+++ b/resources/ext.multimediaViewer/ext.multimediaViewer.js
@@ -227,14 +227,19 @@
this.loadImage( thisImage, initial );
};
+ /**
+ * Handles resize events in viewer.
+ *
+ * @protected
+ *
+ * @param {mw.LightboxInterface} ui lightbox that got resized
+ */
MMVP.resize = function ( ui ) {
- // TODO: Reuse the api member, fix everywhere.
- var api = new mw.Api(),
- viewer = this,
+ var viewer = this,
density = $.devicePixelRatio(),
filename = ui.currentImageFilename;
- api.get( {
+ this.api.get( {
action: 'query',
format: 'json',
titles: filename,
@@ -243,6 +248,21 @@
iiurlwidth: Math.floor( density *
ui.$imageWrapper.width() ),
iiurlheight: Math.floor( density *
ui.$imageWrapper.height() )
} ).done( function ( data ) {
+ viewer.loadResizedImage( ui, data );
+ } );
+ };
+
+ /**
+ * Replaces the resized image in the viewer providing we actually got
some data.
+ *
+ * @protected
+ *
+ * @param {mw.LightboxInterface} ui lightbox that got resized
+ * @param {Object} data information regarding the new resized image
+ */
+ MMVP.loadResizedImage = function ( ui, data ) {
+ // Replace image only if data was returned.
+ if ( data && data.query && data.query.pages ) {
var imageInfo, innerInfo,
image = new Image();
@@ -255,11 +275,11 @@
image.onload = function () {
ui.replaceImageWith( image );
- viewer.updateControls();
+ this.updateControls();
};
image.src = innerInfo.thumburl || innerInfo.url;
- } );
+ }
};
MMVP.updateControls = function () {
@@ -494,6 +514,7 @@
username = innerInfo.user;
if ( username ) {
+ // TODO: Reuse the api member, fix everywhere.
// Fetch the gender from the uploader's home wiki
// TODO this is ugly as hell, let's fix this in core.
new mw.Api( {
diff --git a/tests/qunit/ext.multimediaViewer.test.js
b/tests/qunit/ext.multimediaViewer.test.js
index 799531a..2bd6789 100644
--- a/tests/qunit/ext.multimediaViewer.test.js
+++ b/tests/qunit/ext.multimediaViewer.test.js
@@ -107,4 +107,17 @@
link.trigger( rightClick );
} );
+ QUnit.test( 'Do not load the resized image if no data returning from
the api', 1, function ( assert ) {
+ var ui,
+ data,
+ viewer = new mw.MultimediaViewer();
+
+ // Calling loadResizedImage() with empty/undefined data should
not fail.
+ viewer.loadResizedImage( ui, data );
+ viewer.loadResizedImage( ui, {} );
+ viewer.loadResizedImage( ui, { query: {} } );
+
+ assert.ok( true, 'Resized image is not replaced since we have
not data.' );
+ } );
+
}( mediaWiki, jQuery ) );
--
To view, visit https://gerrit.wikimedia.org/r/98746
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I2a880ce4b2e6c158763b1473f6a9f751922187b0
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MultimediaViewer
Gerrit-Branch: master
Gerrit-Owner: Aarcos <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits