Gergő Tisza has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/160028

Change subject: Make sure event handlers are set up even if onready handler is 
lost
......................................................................

Make sure event handlers are set up even if onready handler is lost

Due to a jQuery bug, errors in local code (gadgets, user scripts)
can cause onready handlers to not be executed. For MMV this causes
catastrophic failure, with a black screen of death on exit.

This change makes sure that the setup code necessary for Media
Viewer to work is executed at latest when MV is loaded, even if some
onready handlers were skipped.

Opening MediaViewer via a hash-URL will still not work if the onready
handler fails, but that's hard to avoid and it is not a catastrophic
failure anymore. This change can be reverted when bug 70772 gets fixed.

Bug: 70756
Change-Id: Ida3b780791bc9dfec29303567d33e3aa4f44dd81
Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/891
---
M resources/mmv/mmv.bootstrap.js
1 file changed, 11 insertions(+), 0 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/MultimediaViewer 
refs/changes/28/160028/1

diff --git a/resources/mmv/mmv.bootstrap.js b/resources/mmv/mmv.bootstrap.js
index 9b9898f..55efd89 100644
--- a/resources/mmv/mmv.bootstrap.js
+++ b/resources/mmv/mmv.bootstrap.js
@@ -83,6 +83,9 @@
                        return deferred.reject();
                }
 
+               // event handlers should have been set up by now, but due to 
bug 70756 there is no guarantee
+               this.setupEventHandlers();
+
                bs.setupOverlay();
 
                mw.loader.using( 'mmv', function() {
@@ -395,6 +398,13 @@
        MMVB.setupEventHandlers = function () {
                var self = this;
 
+               if ( this.eventHandlersHaveBeenSetUp ) {
+                       // don't set up twice, we need to call the setup 
multiple times due to bug 70756
+                       return;
+               }
+               /** @property {boolean} eventHandlersHaveBeenSetUp tracks 
domready event handler state to avoid setting up twice */
+               this.eventHandlersHaveBeenSetUp = true;
+
                $( window ).on( this.browserHistory && 
this.browserHistory.pushState ? 'popstate.mmvb' : 'hashchange', function () {
                        self.hash();
                } );
@@ -415,6 +425,7 @@
        MMVB.cleanupEventHandlers = function () {
                $( window ).off( 'hashchange popstate.mmvb' );
                $( document ).off( 'mmv-hash' );
+               this.eventHandlersHaveBeenSetUp = false;
        };
 
        /**

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ida3b780791bc9dfec29303567d33e3aa4f44dd81
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MultimediaViewer
Gerrit-Branch: master
Gerrit-Owner: Gergő Tisza <gti...@wikimedia.org>

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

Reply via email to