jenkins-bot has submitted this change and it was merged.

Change subject: Turn mmv-next/mmv-prev into OO events
......................................................................


Turn mmv-next/mmv-prev into OO events

More of those events sent to the document can be converted, but it's a start...

Bug: T77253
Change-Id: I6100ce303346ab9fa94332e91f5d730dc83f4e65
---
M resources/mmv/mmv.js
M resources/mmv/mmv.lightboxinterface.js
M resources/mmv/ui/mmv.ui.canvasButtons.js
M resources/mmv/ui/mmv.ui.js
M tests/qunit/mmv/mmv.lightboxinterface.test.js
M tests/qunit/mmv/mmv.test.js
M tests/qunit/mmv/ui/mmv.ui.canvasButtons.test.js
7 files changed, 43 insertions(+), 39 deletions(-)

Approvals:
  Jdlrobson: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/resources/mmv/mmv.js b/resources/mmv/mmv.js
index 55b4525..08624cd 100644
--- a/resources/mmv/mmv.js
+++ b/resources/mmv/mmv.js
@@ -944,12 +944,13 @@
        MMVP.setupEventHandlers = function () {
                var viewer = this;
 
+               this.ui.connect( this, {
+                       'next': 'nextImage',
+                       'prev': 'prevImage'
+               } );
+
                $( document ).on( 'mmv-close.mmvp', function () {
                        viewer.close();
-               } ).on( 'mmv-next.mmvp', function () {
-                       viewer.nextImage();
-               } ).on( 'mmv-prev.mmvp', function () {
-                       viewer.prevImage();
                } ).on( 'mmv-resize-end.mmvp', function () {
                        viewer.resize( viewer.ui );
                } ).on( 'mmv-request-thumbnail.mmvp', function ( e, size ) {
@@ -969,7 +970,9 @@
        * Unregisters all event handlers. Currently only used in tests.
        */
        MMVP.cleanupEventHandlers = function () {
-               $( document ).off( 'mmv-close.mmvp mmv-next.mmvp mmv-prev.mmvp 
mmv-resize-end.mmvp' );
+               $( document ).off( 'mmv-close.mmvp mmv-resize-end.mmvp' );
+
+               this.ui.disconnect( this );
        };
 
        /**
diff --git a/resources/mmv/mmv.lightboxinterface.js 
b/resources/mmv/mmv.lightboxinterface.js
index 0fa0527..18b0474 100644
--- a/resources/mmv/mmv.lightboxinterface.js
+++ b/resources/mmv/mmv.lightboxinterface.js
@@ -193,6 +193,11 @@
                this.handleEvent( 'mmv-faded-out', function ( e ) { 
ui.fadedOut( e ); } );
                this.handleEvent( 'mmv-fade-stopped', function ( e ) { 
ui.fadeStopped( e ); } );
 
+               this.buttons.connect( this, {
+                       'next': [ 'emit', 'next' ],
+                       'prev': [ 'emit', 'prev' ]
+               } );
+
                $parent = $( parentId || document.body );
 
                // Clean up fullscreen data because hard-existing fullscreen 
might have left
@@ -407,10 +412,11 @@
                                }
 
                                if ( forward ) {
-                                       $( document ).trigger( $.Event( 
'mmv-next' ) );
+                                       this.emit( 'next' );
                                } else {
-                                       $( document ).trigger( $.Event( 
'mmv-prev' ) );
+                                       this.emit( 'prev' );
                                }
+
                                e.preventDefault();
                                break;
                }
diff --git a/resources/mmv/ui/mmv.ui.canvasButtons.js 
b/resources/mmv/ui/mmv.ui.canvasButtons.js
index e691c31..6e2e248 100644
--- a/resources/mmv/ui/mmv.ui.canvasButtons.js
+++ b/resources/mmv/ui/mmv.ui.canvasButtons.js
@@ -94,11 +94,11 @@
                } );
 
                this.$next.click( function () {
-                       $container.trigger( $.Event( 'mmv-next' ) );
+                       buttons.emit( 'next' );
                } );
 
                this.$prev.click( function () {
-                       $container.trigger( $.Event( 'mmv-prev' ) );
+                       buttons.emit( 'prev' );
                } );
        }
        oo.inheritClass( CanvasButtons, mw.mmv.ui.Element );
diff --git a/resources/mmv/ui/mmv.ui.js b/resources/mmv/ui/mmv.ui.js
index 8543706..9071dfa 100644
--- a/resources/mmv/ui/mmv.ui.js
+++ b/resources/mmv/ui/mmv.ui.js
@@ -15,7 +15,7 @@
  * along with MultimediaViewer.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-( function ( mw, $ ) {
+( function ( mw, $, oo ) {
        var EP,
                cachedRTL;
 
@@ -27,6 +27,8 @@
         * @param {jQuery} $container
         */
        function Element( $container ) {
+               oo.EventEmitter.call( this );
+
                /** @property {jQuery} $container The element that contains the 
UI element. */
                this.$container = $container;
 
@@ -46,6 +48,9 @@
                 */
                this.timers = {};
        }
+
+       oo.mixinClass( Element, oo.EventEmitter );
+
        EP = Element.prototype;
 
        /**
@@ -244,4 +249,4 @@
        mw.mmv.ui = {};
        mw.mmv.ui.reuse = {};
        mw.mmv.ui.Element = Element;
-}( mediaWiki, jQuery ) );
+}( mediaWiki, jQuery, OO ) );
diff --git a/tests/qunit/mmv/mmv.lightboxinterface.test.js 
b/tests/qunit/mmv/mmv.lightboxinterface.test.js
index 21137f7..aee8e37 100644
--- a/tests/qunit/mmv/mmv.lightboxinterface.test.js
+++ b/tests/qunit/mmv/mmv.lightboxinterface.test.js
@@ -257,25 +257,25 @@
                viewer.setupEventHandlers();
 
                // Since we define both, the test works regardless of RTL 
settings
-               viewer.nextImage = function () {
+               lightbox.on( 'next', function () {
                        assert.ok( true, 'Next image was open' );
-               };
+               } );
 
-               viewer.prevImage = function () {
+               lightbox.on( 'prev', function () {
                        assert.ok( true, 'Prev image was open' );
-               };
+               } );
 
                // 37 is left arrow, 39 is right arrow
                lightbox.keydown( $.Event( 'keydown', { which: 37 } ) );
                lightbox.keydown( $.Event( 'keydown', { which: 39 } ) );
 
-               viewer.nextImage = function () {
+               lightbox.off( 'next' ).on( 'next', function () {
                        assert.ok( false, 'Next image should not have been 
open' );
-               };
+               } );
 
-               viewer.prevImage = function () {
+               lightbox.off( 'prev' ).on( 'prev', function () {
                        assert.ok( false, 'Prev image should not have been 
open' );
-               };
+               } );
 
                lightbox.keydown( $.Event( 'keydown', { which: 37, altKey: true 
} ) );
                lightbox.keydown( $.Event( 'keydown', { which: 39, altKey: true 
} ) );
diff --git a/tests/qunit/mmv/mmv.test.js b/tests/qunit/mmv/mmv.test.js
index 32baa29..e71ba6a 100644
--- a/tests/qunit/mmv/mmv.test.js
+++ b/tests/qunit/mmv/mmv.test.js
@@ -76,7 +76,7 @@
                // Verify that mmv doesn't reset a foreign hash
                assert.strictEqual( window.location.hash, '#Bar', 'Foreign hash 
remains intact' );
 
-               viewer.ui = { images: [ image ] };
+               viewer.ui = { images: [ image ], disconnect: $.noop };
 
                $( '#qunit-fixture' ).append( '<a class="image"><img src="' + 
imageSrc + '"></a>' );
 
diff --git a/tests/qunit/mmv/ui/mmv.ui.canvasButtons.test.js 
b/tests/qunit/mmv/ui/mmv.ui.canvasButtons.test.js
index 65f7cd0..abf743a 100644
--- a/tests/qunit/mmv/ui/mmv.ui.canvasButtons.test.js
+++ b/tests/qunit/mmv/ui/mmv.ui.canvasButtons.test.js
@@ -18,27 +18,17 @@
 ( function ( mw, $ ) {
        QUnit.module( 'mmv.ui.CanvasButtons', QUnit.newMwEnvironment() );
 
-       QUnit.test( 'Prev/Next', 2, function ( assert ) {
-               var i = 0,
-                       $qf = $( '#qunit-fixture' ),
-                       buttons = new mw.mmv.ui.CanvasButtons( $qf, $( '<div>' 
), $( '<div>' ) ),
-                       viewer = new mw.mmv.MultimediaViewer( { get: $.noop } );
+       QUnit.test( 'Prev/Next', 2, function( assert ) {
+               var $qf = $( '#qunit-fixture' ),
+                       buttons = new mw.mmv.ui.CanvasButtons( $qf, $( '<div>' 
), $( '<div>' ) );
 
-               viewer.ui = {};
+               buttons.on( 'next', function() {
+                       assert.ok( true, 'Switched to next image' );
+               } );
 
-               viewer.loadIndex = function () {
-                       assert.ok( true, 'Switched to next/prev image' );
-                       i++;
-
-                       if ( i === 2 ) {
-                               QUnit.start();
-                               viewer.cleanupEventHandlers();
-                       }
-               };
-
-               viewer.setupEventHandlers();
-
-               QUnit.stop();
+               buttons.on( 'prev', function() {
+                       assert.ok( true, 'Switched to prev image' );
+               } );
 
                buttons.$next.click();
                buttons.$prev.click();

-- 
To view, visit https://gerrit.wikimedia.org/r/173916
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I6100ce303346ab9fa94332e91f5d730dc83f4e65
Gerrit-PatchSet: 9
Gerrit-Project: mediawiki/extensions/MultimediaViewer
Gerrit-Branch: master
Gerrit-Owner: Gilles <gdu...@wikimedia.org>
Gerrit-Reviewer: Gergő Tisza <gti...@wikimedia.org>
Gerrit-Reviewer: Gilles <gdu...@wikimedia.org>
Gerrit-Reviewer: Jdlrobson <jrob...@wikimedia.org>
Gerrit-Reviewer: MarkTraceur <mtrac...@member.fsf.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to