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