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

Change subject: Test to check that events are not trapped after the viewer is 
closed
......................................................................


Test to check that events are not trapped after the viewer is closed

Also fixes overeager preventDefault in the interface

Change-Id: I5e3b05c8546e24772016b72343e241caa2e6ef0e
Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/274
---
M resources/mmv/mmv.lightboxinterface.js
M tests/qunit/mmv/mmv.test.js
2 files changed, 70 insertions(+), 2 deletions(-)

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



diff --git a/resources/mmv/mmv.lightboxinterface.js 
b/resources/mmv/mmv.lightboxinterface.js
index 08875ca..d7c5d8b 100644
--- a/resources/mmv/mmv.lightboxinterface.js
+++ b/resources/mmv/mmv.lightboxinterface.js
@@ -390,8 +390,6 @@
                        return;
                }
 
-               e.preventDefault();
-
                switch ( e.which ) {
                        case 37:
                                // Left arrow
@@ -400,6 +398,7 @@
                                } else {
                                        this.viewer.prevImage();
                                }
+                               e.preventDefault();
                                break;
                        case 39:
                                // Right arrow
@@ -408,6 +407,7 @@
                                } else {
                                        this.viewer.nextImage();
                                }
+                               e.preventDefault();
                                break;
                }
        };
diff --git a/tests/qunit/mmv/mmv.test.js b/tests/qunit/mmv/mmv.test.js
index 1b2f0db..c986e90 100644
--- a/tests/qunit/mmv/mmv.test.js
+++ b/tests/qunit/mmv/mmv.test.js
@@ -369,4 +369,72 @@
 
                cleanNewViewer();
        } );
+
+       QUnit.test( 'Events are not trapped after the viewer is closed', 0, 
function( assert ) {
+               var i, j, k, eventParameters,
+                       viewer = new mw.mmv.MultimediaViewer(),
+                       $document = $( document ),
+                       $qf = $( '#qunit-fixture' ),
+                       eventTypes = [ 'keydown', 'keyup', 'keypress', 'click', 
'mousedown', 'mouseup' ],
+                       modifiers = [ undefined, 'altKey', 'ctrlKey', 
'shiftKey', 'metaKey' ];
+
+               viewer.imageProvider.get = function() { return 
$.Deferred().reject(); };
+               viewer.imageInfoProvider.get = function() { return 
$.Deferred().reject(); };
+               viewer.thumbnailInfoProvider.get = function() { return 
$.Deferred().reject(); };
+               viewer.imageUsageProvider.get = function() { return 
$.Deferred().reject(); };
+               viewer.fileRepoInfoProvider.get = function() { return 
$.Deferred().reject(); };
+
+               viewer.preloadFullscreenThumbnail = $.noop;
+               viewer.initWithThumbs( [] );
+
+               viewer.loadImage( { filePageTitle : new mw.Title( 
'File:Stuff.jpg' ),
+                       thumbnail : new mw.mmv.model.Thumbnail( 'foo', 10, 10 ) 
},
+                       new Image() );
+
+               viewer.lightbox.iface.$closeButton.click();
+
+               function eventHandler ( e ) {
+                       if ( e.isDefaultPrevented() ) {
+                               assert.ok( false, 'Event was incorrectly 
trapped : ' + e.which );
+                       }
+
+                       e.preventDefault();
+
+                       // Wait for the last event
+                       if ( e.which === 32 && e.type === 'mouseup' ) {
+                               $document.off( '.mmvtest' );
+                               QUnit.start();
+                       }
+               }
+
+               // Events are async, we need to wait for the last event to be 
caught before ending the test
+               QUnit.stop();
+
+               for ( j = 0; j < eventTypes.length; j++ ) {
+                       $document.on( eventTypes[ j ] + '.mmvtest', 
eventHandler );
+
+               eventloop:
+                       for ( i = 0; i < 256; i++ ) {
+                               // Save some time by not testing unlikely 
values for mouse events
+                               if ( i > 32 ) {
+                                       switch ( eventTypes[ j ] ) {
+                                               case 'click':
+                                               case 'mousedown':
+                                               case 'mouseup':
+                                                       break eventloop;
+                                       }
+                               }
+
+                               for ( k = 0; k < modifiers.length; k++ ) {
+                                       eventParameters = { which : i };
+                                       if ( modifiers[ k ] !== undefined ) {
+                                               eventParameters[ modifiers[ k ] 
] = true;
+                                       }
+                                       $qf.trigger( $.Event( eventTypes[ j ], 
eventParameters ) );
+                               }
+
+
+                       }
+               }
+       } );
 }( mediaWiki, jQuery ) );

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I5e3b05c8546e24772016b72343e241caa2e6ef0e
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/extensions/MultimediaViewer
Gerrit-Branch: master
Gerrit-Owner: Gilles <gdu...@wikimedia.org>
Gerrit-Reviewer: Aarcos <aarcos.w...@gmail.com>
Gerrit-Reviewer: Gilles <gdu...@wikimedia.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