Gilles has uploaded a new change for review.
https://gerrit.wikimedia.org/r/282211
Change subject: Make Media Viewer pluggable for the 3D extension
......................................................................
Make Media Viewer pluggable for the 3D extension
Bug: T132064
Change-Id: I2a95ba703e6c7f46296f8e435bceec769dceebf9
---
M MultimediaViewerHooks.php
M extension.json
M resources/mmv/logging/mmv.logging.ViewLogger.js
M resources/mmv/mmv.Config.js
M resources/mmv/mmv.bootstrap.js
M resources/mmv/mmv.js
M resources/mmv/ui/mmv.ui.canvas.less
M tests/qunit/mmv/logging/mmv.logging.ViewLogger.test.js
M tests/qunit/mmv/mmv.bootstrap.test.js
M tests/qunit/mmv/mmv.lightboxinterface.test.js
M tests/qunit/mmv/mmv.test.js
11 files changed, 130 insertions(+), 53 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/MultimediaViewer
refs/changes/11/282211/1
diff --git a/MultimediaViewerHooks.php b/MultimediaViewerHooks.php
index d05da2a..2ef44d6 100644
--- a/MultimediaViewerHooks.php
+++ b/MultimediaViewerHooks.php
@@ -287,7 +287,7 @@
$wgMediaViewerDurationLoggingSamplingFactor,
$wgMediaViewerDurationLoggingLoggedinSamplingFactor,
$wgMediaViewerAttributionLoggingSamplingFactor,
$wgMediaViewerDimensionLoggingSamplingFactor,
$wgMediaViewerIsInBeta,
$wgMediaViewerUseThumbnailGuessing, $wgMediaViewerImageQueryParameter,
- $wgMediaViewerRecordVirtualViewBeaconURI;
+ $wgMediaViewerRecordVirtualViewBeaconURI,
$wgMediaViewerExtensions;
$vars['wgMultimediaViewer'] = array(
'infoLink' => self::$infoLink,
@@ -303,6 +303,7 @@
'imageQueryParameter' =>
$wgMediaViewerImageQueryParameter,
'recordVirtualViewBeaconURI' =>
$wgMediaViewerRecordVirtualViewBeaconURI,
'tooltipDelay' => 1000,
+ 'extensions' => $wgMediaViewerExtensions,
);
$vars['wgMediaViewer'] = true;
$vars['wgMediaViewerIsInBeta'] = $wgMediaViewerIsInBeta;
diff --git a/extension.json b/extension.json
index 96b78c2..bfbfdbd 100644
--- a/extension.json
+++ b/extension.json
@@ -401,6 +401,16 @@
"MultimediaViewerHooks::thumbnailBeforeProduceHTML"
]
},
- "config": {},
+ "config": {
+ "MediaViewerExtensions": {
+ "jpg": "default",
+ "jpeg": "default",
+ "gif": "default",
+ "svg": "default",
+ "png": "default",
+ "tiff": "default",
+ "tif": "default"
+ }
+ },
"manifest_version": 1
}
diff --git a/resources/mmv/logging/mmv.logging.ViewLogger.js
b/resources/mmv/logging/mmv.logging.ViewLogger.js
index 1a158d0..5a58dd3 100644
--- a/resources/mmv/logging/mmv.logging.ViewLogger.js
+++ b/resources/mmv/logging/mmv.logging.ViewLogger.js
@@ -23,13 +23,11 @@
* @class mw.mmv.logging.ViewLogger
* @extends mw.Api
* @constructor
- * @param {mw.Map} mwConfig mw.config
+ * @param {mw.mmv.Config} config mw.mmv.Config object
* @param {Object} window Browser window object
* @param {mw.mmv.logging.ActionLogger} actionLogger ActionLogger object
*/
- function ViewLogger( mwConfig, windowObject, actionLogger ) {
- var config = mwConfig && mwConfig.get ? mwConfig.get(
'wgMultimediaViewer' ) : false;
-
+ function ViewLogger( config, windowObject, actionLogger ) {
/**
* Was the last image view logged or was logging skipped?
* @property {boolean}
@@ -58,7 +56,7 @@
* If set, URI to send the beacon request to in order to record
the virtual view
* @property {string}
*/
- this.recordVirtualViewBeaconURI = config ?
config.recordVirtualViewBeaconURI : false;
+ this.recordVirtualViewBeaconURI =
config.recordVirtualViewBeaconURI();
/**
* Browser window
diff --git a/resources/mmv/mmv.Config.js b/resources/mmv/mmv.Config.js
index de5dbc7..733a967 100644
--- a/resources/mmv/mmv.Config.js
+++ b/resources/mmv/mmv.Config.js
@@ -222,5 +222,45 @@
this.setInLocalStorage( 'mmv-showStatusInfo', '0' );
};
+ /**
+ * Returns extensions handled by Media Viewer.
+ * @returns {Object}
+ */
+ CP.extensions = function ( ) {
+ return this.viewerConfig.extensions;
+ };
+
+ /**
+ * Returns UI language
+ * @returns {string} Language code
+ */
+ CP.language = function ( ) {
+ return this.mwConfig.get( 'wgUserLanguage', false ) ||
this.mwConfig.get( 'wgContentLanguage', 'en' );
+ };
+
+ /**
+ * Returns URI of virtual view beacon or false if not set
+ * @returns {string|boolean} URI
+ */
+ CP.recordVirtualViewBeaconURI = function ( ) {
+ return this.viewerConfig.recordVirtualViewBeaconURI;
+ };
+
+ /**
+ * Returns useThumbnailGuessing flag
+ * @returns {boolean}
+ */
+ CP.useThumbnailGuessing = function ( ) {
+ return this.viewerConfig.useThumbnailGuessing;
+ };
+
+ /**
+ * Returns imageQueryParameter, if set
+ * @returns {string|boolean}
+ */
+ CP.imageQueryParameter = function ( ) {
+ return this.viewerConfig.imageQueryParameter;
+ };
+
mw.mmv.Config = Config;
} ( mediaWiki, jQuery ) );
diff --git a/resources/mmv/mmv.bootstrap.js b/resources/mmv/mmv.bootstrap.js
index d1e3ef0..e7f5cec 100644
--- a/resources/mmv/mmv.bootstrap.js
+++ b/resources/mmv/mmv.bootstrap.js
@@ -30,16 +30,6 @@
localStorage = window.localStorage || false;
} catch ( e ) { }
- this.validExtensions = {
- 'jpg' : true,
- 'jpeg' : true,
- 'gif' : true,
- 'svg' : true,
- 'png' : true,
- 'tiff' : true,
- 'tif' : true
- };
-
// Exposed for tests
this.hoverWaitDuration = 200;
@@ -53,6 +43,8 @@
new mw.Api(),
localStorage
);
+
+ this.validExtensions = this.config.extensions();
/** @property {mw.mmv.HtmlUtils} htmlUtils - */
this.htmlUtils = new mw.mmv.HtmlUtils();
@@ -184,7 +176,7 @@
link = $link.prop( 'href' ),
alt = $thumb.attr( 'alt' );
- if ( !bs.validExtensions[ title.getExtension().toLowerCase() ]
) {
+ if ( !( title.getExtension().toLowerCase() in
bs.validExtensions ) ) {
return;
}
@@ -494,7 +486,7 @@
*/
MMVB.getViewer = function () {
if ( this.viewer === undefined ) {
- this.viewer = new mw.mmv.MultimediaViewer( mw.config );
+ this.viewer = new mw.mmv.MultimediaViewer( this.config
);
this.viewer.setupEventHandlers();
mw.mmv.viewer = this.viewer;
}
diff --git a/resources/mmv/mmv.js b/resources/mmv/mmv.js
index 4836612..065f7bd 100644
--- a/resources/mmv/mmv.js
+++ b/resources/mmv/mmv.js
@@ -24,30 +24,30 @@
* to manage the viewing experience of such content.
* @class mw.mmv.MultimediaViewer
* @constructor
- * @param {mw.Map} mwConfig mw.config
+ * @param {mw.mmv.Config} config mw.mmv.Config object
*/
- function MultimediaViewer( mwConfig ) {
+ function MultimediaViewer( config ) {
var apiCacheMaxAge = 86400; // one day (24 hours * 60 min * 60
sec)
var apiCacheFiveMinutes = 300; // 5 min * 60 sec
/**
- * @property {mw.Map}
+ * @property {mw.mmv.Config}
* @private
*/
- this.mwConfig = mwConfig;
+ this.config = config;
/**
* @property {mw.mmv.provider.Image}
* @private
*/
- this.imageProvider = new mw.mmv.provider.Image( mw.config.get(
'wgMultimediaViewer' ).imageQueryParameter );
+ this.imageProvider = new mw.mmv.provider.Image(
this.config.imageQueryParameter() );
/**
* @property {mw.mmv.provider.ImageInfo}
* @private
*/
this.imageInfoProvider = new mw.mmv.provider.ImageInfo( new
mw.mmv.logging.Api( 'imageinfo' ), {
- language: this.mwConfig.get( 'wgUserLanguage', false )
|| this.mwConfig.get( 'wgContentLanguage', 'en' ),
+ language: this.config.language(),
maxage: apiCacheFiveMinutes
});
@@ -107,7 +107,7 @@
/**
* @property {mw.mmv.logging.ViewLogger} view -
*/
- this.viewLogger = new mw.mmv.logging.ViewLogger( this.mwConfig,
window, mw.mmv.actionLogger );
+ this.viewLogger = new mw.mmv.logging.ViewLogger( this.config,
window, mw.mmv.actionLogger );
}
MMVP = MultimediaViewer.prototype;
@@ -228,10 +228,13 @@
canvasDimensions,
imagePromise,
metadataPromise,
+ pluginsPromise,
start,
viewer = this,
$initialImage = $( initialImage ),
extraStatsDeferred = $.Deferred();
+
+ pluginsPromise = this.loadExtensionPlugins(
image.filePageTitle.ext );
this.currentIndex = image.index;
@@ -251,6 +254,8 @@
// the aspect ratio
$initialImage.hide();
$initialImage.addClass( 'mw-mmv-placeholder-image' );
+ $initialImage.addClass( image.filePageTitle.ext );
+
this.ui.canvas.set( image, $initialImage );
this.preloadImagesMetadata();
@@ -294,8 +299,13 @@
} );
}
- imageElement.className = 'mw-mmv-final-image';
+ imageElement.className = 'mw-mmv-final-image ' +
image.filePageTitle.ext;
imageElement.alt = image.alt;
+
+ $.when( metadataPromise, pluginsPromise ).done(
function ( metadata ) {
+ $( document ).trigger( $.Event( 'mmv-metadata',
{ viewer : viewer, image : image, imageInfo: metadata[ 0 ] } ) );
+ } );
+
viewer.displayRealThumbnail( thumbnail, imageElement,
imageWidths, $.now() - start );
} ).fail( function ( error ) {
viewer.ui.canvas.showError( error );
@@ -741,7 +751,7 @@
if (
sampleUrl && originalWidth && originalHeight &&
- mw.config.get( 'wgMultimediaViewer'
).useThumbnailGuessing
+ this.config.useThumbnailGuessing()
) {
guessing = true;
thumbnailPromise =
this.guessedThumbnailInfoProvider.get(
@@ -946,5 +956,25 @@
mw.loader.load( [ 'mmv.ui.reuse.shareembed', 'moment' ] );
};
+ /**
+ * Loads the RL module defined for a given file extenion, if any
+ * @param {string} extension File extension
+ * @returns {jQuery.Promise}
+ */
+ MMVP.loadExtensionPlugins = function ( extension ) {
+ var deferred = $.Deferred(),
+ config = this.config.extensions();
+
+ if ( !( extension in config ) || config[ extension ] ==
'default' ) {
+ return deferred.resolve();
+ }
+
+ mw.loader.using( config[ extension ], function() {
+ deferred.resolve();
+ } );
+
+ return deferred;
+ };
+
mw.mmv.MultimediaViewer = MultimediaViewer;
}( mediaWiki, jQuery ) );
diff --git a/resources/mmv/ui/mmv.ui.canvas.less
b/resources/mmv/ui/mmv.ui.canvas.less
index df1de15..6ad2f86 100644
--- a/resources/mmv/ui/mmv.ui.canvas.less
+++ b/resources/mmv/ui/mmv.ui.canvas.less
@@ -44,6 +44,14 @@
font-size: 22px;
}
}
+
+ // For the 3d extensions. Needs to be defined here because it's needed
before the 3d
+ // extension's code is loaded. And we don't want the placeholder to
wait on the whole
+ // 3d library before appearing.
+ img.stl, img.amf {
+ background: none;
+ border: none;
+ }
}
.mw-mmv-image.empty img {
diff --git a/tests/qunit/mmv/logging/mmv.logging.ViewLogger.test.js
b/tests/qunit/mmv/logging/mmv.logging.ViewLogger.test.js
index e365a55..4d373e4 100644
--- a/tests/qunit/mmv/logging/mmv.logging.ViewLogger.test.js
+++ b/tests/qunit/mmv/logging/mmv.logging.ViewLogger.test.js
@@ -7,7 +7,7 @@
QUnit.test( 'unview()', 4, function ( assert ) {
var logger = { log: $.noop },
- viewLogger = new mw.mmv.logging.ViewLogger( {}, {},
logger );
+ viewLogger = new mw.mmv.logging.ViewLogger( {
recordVirtualViewBeaconURI : $.noop }, {}, logger );
this.sandbox.stub( logger, 'log' );
@@ -32,7 +32,7 @@
QUnit.test( 'focus and blur', 1, function ( assert ) {
var fakeWindow = $( '<div>' ),
- viewLogger = new mw.mmv.logging.ViewLogger( {},
fakeWindow, { log: $.noop } );
+ viewLogger = new mw.mmv.logging.ViewLogger( {
recordVirtualViewBeaconURI : $.noop }, fakeWindow, { log: $.noop } );
this.clock.tick( 1 ); // This is just so that $.now() > 0 in
the fake timer environment
@@ -56,7 +56,7 @@
} );
QUnit.test( 'stopViewDuration before startViewDuration', 1, function (
assert ) {
- var viewLogger = new mw.mmv.logging.ViewLogger( {}, {}, { log:
$.noop } );
+ var viewLogger = new mw.mmv.logging.ViewLogger( {
recordVirtualViewBeaconURI : $.noop }, {}, { log: $.noop } );
this.clock.tick( 1 ); // This is just so that $.now() > 0 in
the fake timer environment
diff --git a/tests/qunit/mmv/mmv.bootstrap.test.js
b/tests/qunit/mmv/mmv.bootstrap.test.js
index 56c1fc9..a6322f2 100644
--- a/tests/qunit/mmv/mmv.bootstrap.test.js
+++ b/tests/qunit/mmv/mmv.bootstrap.test.js
@@ -288,7 +288,7 @@
var bootstrap,
$div,
$link,
- viewer = new mw.mmv.MultimediaViewer( { get: $.noop } ),
+ viewer = new mw.mmv.MultimediaViewer( {
imageQueryParameter: $.noop, language: $.noop, recordVirtualViewBeaconURI:
$.noop, extensions: function () { return { 'jpg' : 'default' }; } } ),
fname = 'valid',
imgSrc = '/' + fname + '.jpg/300px-' + fname + '.jpg',
imgRegex = new RegExp( imgSrc + '$' );
diff --git a/tests/qunit/mmv/mmv.lightboxinterface.test.js
b/tests/qunit/mmv/mmv.lightboxinterface.test.js
index aee8e37..dcf1137 100644
--- a/tests/qunit/mmv/mmv.lightboxinterface.test.js
+++ b/tests/qunit/mmv/mmv.lightboxinterface.test.js
@@ -142,7 +142,7 @@
var buttonOffset, panelBottom,
oldRevealButtonsAndFadeIfNeeded,
lightbox = new mw.mmv.LightboxInterface(),
- viewer = new mw.mmv.MultimediaViewer( { get: $.noop } ),
+ viewer = new mw.mmv.MultimediaViewer( {
imageQueryParameter: $.noop, language: $.noop, recordVirtualViewBeaconURI:
$.noop, extensions: function () { return { 'jpg' : 'default' }; } } ),
oldFnEnterFullscreen = $.fn.enterFullscreen,
oldFnExitFullscreen = $.fn.exitFullscreen;
@@ -251,7 +251,7 @@
} );
QUnit.test( 'Keyboard prev/next', 2, function ( assert ) {
- var viewer = new mw.mmv.MultimediaViewer( { get: $.noop } ),
+ var viewer = new mw.mmv.MultimediaViewer( {
imageQueryParameter: $.noop, language: $.noop, recordVirtualViewBeaconURI:
$.noop, extensions: function () { return { 'jpg' : 'default' }; } } ),
lightbox = new mw.mmv.LightboxInterface();
viewer.setupEventHandlers();
diff --git a/tests/qunit/mmv/mmv.test.js b/tests/qunit/mmv/mmv.test.js
index e71ba6a..07138f3 100644
--- a/tests/qunit/mmv/mmv.test.js
+++ b/tests/qunit/mmv/mmv.test.js
@@ -2,7 +2,7 @@
QUnit.module( 'mmv', QUnit.newMwEnvironment() );
QUnit.test( 'eachPrealoadableLightboxIndex()', 11, function ( assert ) {
- var viewer = new mw.mmv.MultimediaViewer( { get: $.noop } ),
+ var viewer = new mw.mmv.MultimediaViewer( {
imageQueryParameter: $.noop, language: $.noop, recordVirtualViewBeaconURI:
$.noop, extensions: function () { return { 'jpg' : 'default' }; } } ),
expectedIndices,
i;
@@ -31,7 +31,7 @@
QUnit.test( 'Hash handling', 8, function ( assert ) {
var oldUnattach,
- viewer = new mw.mmv.MultimediaViewer( { get: $.noop } ),
+ viewer = new mw.mmv.MultimediaViewer( {
imageQueryParameter: $.noop, language: $.noop, recordVirtualViewBeaconURI:
$.noop, extensions: function () { return { 'jpg' : 'default' }; } } ),
ui = new mw.mmv.LightboxInterface(),
imageSrc = 'Foo bar.jpg',
image = { filePageTitle: new mw.Title( 'File:' +
imageSrc ) };
@@ -113,7 +113,7 @@
QUnit.test( 'Progress', 4, function ( assert ) {
var imageDeferred = $.Deferred(),
- viewer = new mw.mmv.MultimediaViewer( { get: $.noop } ),
+ viewer = new mw.mmv.MultimediaViewer( {
imageQueryParameter: $.noop, language: $.noop, recordVirtualViewBeaconURI:
$.noop, extensions: function () { return { 'jpg' : 'default' }; } } ),
fakeImage = {
filePageTitle: new mw.Title( 'File:Stuff.jpg' ),
extraStatsDeferred: $.Deferred().reject()
@@ -181,7 +181,7 @@
filePageTitle: new mw.Title( 'File:Second.jpg'
),
extraStatsDeferred: $.Deferred().reject()
},
- viewer = new mw.mmv.MultimediaViewer( { get: $.noop } );
+ viewer = new mw.mmv.MultimediaViewer( {
imageQueryParameter: $.noop, language: $.noop, recordVirtualViewBeaconURI:
$.noop, extensions: function () { return { 'jpg' : 'default' }; } } );
// animation would keep running, conflict with other tests
this.sandbox.stub( $.fn, 'animate' ).returnsThis();
@@ -282,7 +282,7 @@
} );
QUnit.test( 'resetBlurredThumbnailStates', 4, function ( assert ) {
- var viewer = new mw.mmv.MultimediaViewer( { get: $.noop } );
+ var viewer = new mw.mmv.MultimediaViewer( {
imageQueryParameter: $.noop, language: $.noop, recordVirtualViewBeaconURI:
$.noop, extensions: function () { return { 'jpg' : 'default' }; } } );
// animation would keep running, conflict with other tests
this.sandbox.stub( $.fn, 'animate' ).returnsThis();
@@ -300,7 +300,7 @@
} );
QUnit.test( 'Placeholder first, then real thumbnail', 4, function (
assert ) {
- var viewer = new mw.mmv.MultimediaViewer( { get: $.noop } );
+ var viewer = new mw.mmv.MultimediaViewer( {
imageQueryParameter: $.noop, language: $.noop, recordVirtualViewBeaconURI:
$.noop, extensions: function () { return { 'jpg' : 'default' }; } } );
viewer.setImage = $.noop;
viewer.ui = { canvas: {
@@ -322,7 +322,7 @@
} );
QUnit.test( 'Placeholder first, then real thumbnail - missing size', 4,
function ( assert ) {
- var viewer = new mw.mmv.MultimediaViewer( { get: $.noop } );
+ var viewer = new mw.mmv.MultimediaViewer( {
imageQueryParameter: $.noop, language: $.noop, recordVirtualViewBeaconURI:
$.noop, extensions: function () { return { 'jpg' : 'default' }; } } );
viewer.currentIndex = 1;
viewer.setImage = $.noop;
@@ -345,7 +345,7 @@
} );
QUnit.test( 'Real thumbnail first, then placeholder', 4, function (
assert ) {
- var viewer = new mw.mmv.MultimediaViewer( { get: $.noop } );
+ var viewer = new mw.mmv.MultimediaViewer( {
imageQueryParameter: $.noop, language: $.noop, recordVirtualViewBeaconURI:
$.noop, extensions: function () { return { 'jpg' : 'default' }; } } );
viewer.setImage = $.noop;
viewer.ui = {
@@ -367,7 +367,7 @@
} );
QUnit.test( 'displayRealThumbnail', 2, function ( assert ) {
- var viewer = new mw.mmv.MultimediaViewer( { get: $.noop } );
+ var viewer = new mw.mmv.MultimediaViewer( {
imageQueryParameter: $.noop, language: $.noop, recordVirtualViewBeaconURI:
$.noop, extensions: function () { return { 'jpg' : 'default' }; } } );
viewer.setImage = $.noop;
viewer.ui = { canvas: {
@@ -386,7 +386,7 @@
} );
QUnit.test( 'New image loaded while another one is loading', 5,
function ( assert ) {
- var viewer = new mw.mmv.MultimediaViewer( { get: $.noop } ),
+ var viewer = new mw.mmv.MultimediaViewer( {
imageQueryParameter: $.noop, language: $.noop, recordVirtualViewBeaconURI:
$.noop, extensions: function () { return { 'jpg' : 'default' }; } } ),
firstImageDeferred = $.Deferred(),
secondImageDeferred = $.Deferred(),
firstLigthboxInfoDeferred = $.Deferred(),
@@ -458,7 +458,7 @@
QUnit.test( 'Events are not trapped after the viewer is closed', 0,
function ( assert ) {
var i, j, k, eventParameters,
- viewer = new mw.mmv.MultimediaViewer( { get: $.noop } ),
+ viewer = new mw.mmv.MultimediaViewer( {
imageQueryParameter: $.noop, language: $.noop, recordVirtualViewBeaconURI:
$.noop, extensions: function () { return { 'jpg' : 'default' }; } } ),
$document = $( document ),
$qf = $( '#qunit-fixture' ),
eventTypes = [ 'keydown', 'keyup', 'keypress', 'click',
'mousedown', 'mouseup' ],
@@ -533,7 +533,7 @@
} );
QUnit.test( 'Refuse to load too-big thumbnails', 1, function ( assert )
{
- var viewer = new mw.mmv.MultimediaViewer( { get: $.noop } ),
+ var viewer = new mw.mmv.MultimediaViewer( {
imageQueryParameter: $.noop, language: $.noop, recordVirtualViewBeaconURI:
$.noop, extensions: function () { return { 'jpg' : 'default' }; } } ),
intendedWidth = 50,
title = mw.Title.newFromText( 'File:Foobar.svg' );
@@ -550,9 +550,9 @@
thumbnailInfoStub,
imageStub,
promise,
- viewer = new mw.mmv.MultimediaViewer( { get: $.noop } ),
+ useThumbnailGuessing,
+ viewer = new mw.mmv.MultimediaViewer( {
imageQueryParameter: $.noop, language: $.noop, recordVirtualViewBeaconURI:
$.noop, extensions: function () { return { 'jpg' : 'default' }; },
useThumbnailGuessing : function () { return useThumbnailGuessing; } } ),
sandbox = this.sandbox,
- oldUseThumbnailGuessing = mw.config.get(
'wgMultimediaViewer' ).useThumbnailGuessing,
file = new mw.Title( 'File:Copyleft.svg' ),
sampleURL =
'http://upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Copyleft.svg/300px-Copyleft.svg.png',
width = 100,
@@ -566,7 +566,7 @@
imageStub = viewer.imageProvider.get = sandbox.stub();
}
- mw.config.get( 'wgMultimediaViewer' ).useThumbnailGuessing =
true;
+ useThumbnailGuessing = true;
// When we lack sample URL and original dimensions, the classic
provider should be used
setupStubs();
@@ -632,7 +632,7 @@
assert.ok( imageStub.getCall( 1 ).calledWith( 'apiURL' ), 'When
even the retry fails, ImageProvider is called second with the guessed url' );
assert.strictEqual( promise.state(), 'rejected', 'When even the
retry fails, fetchThumbnail rejects' );
- mw.config.get( 'wgMultimediaViewer' ).useThumbnailGuessing =
false;
+ useThumbnailGuessing = false;
// When guessing is disabled, the classic provider is used
setupStubs();
@@ -645,12 +645,10 @@
assert.ok( imageStub.calledOnce, 'When guessing is disabled,
ImageProvider is called once' );
assert.ok( imageStub.calledWith( 'apiURL' ), 'When guessing is
disabled, ImageProvider is called with the API url' );
assert.strictEqual( promise.state(), 'resolved', 'When guessing
is disabled, fetchThumbnail resolves' );
-
- mw.config.get( 'wgMultimediaViewer' ).useThumbnailGuessing =
oldUseThumbnailGuessing;
} );
QUnit.test( 'document.title', 2, function ( assert ) {
- var viewer = new mw.mmv.MultimediaViewer( { get: $.noop } ),
+ var viewer = new mw.mmv.MultimediaViewer( {
imageQueryParameter: $.noop, language: $.noop, recordVirtualViewBeaconURI:
$.noop, extensions: function () { return { 'jpg' : 'default' }; } } ),
bootstrap = new mw.mmv.MultimediaViewerBootstrap(),
title = new mw.Title(
'File:This_should_show_up_in_document_title.png' ),
oldDocumentTitle = document.title;
--
To view, visit https://gerrit.wikimedia.org/r/282211
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I2a95ba703e6c7f46296f8e435bceec769dceebf9
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MultimediaViewer
Gerrit-Branch: master
Gerrit-Owner: Gilles <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits