/**
- * Code in this file MUST work on even the most ancient of browsers!
+ * This file is where we decide whether to initialise the Grade A run-time.
*
- * This file is where we decide whether to initialise the modern run-time.
+ * - Beware: This file MUST parse without errors on even the most ancient of browsers!
+ * - Beware: Do not call mwNow before the isCompatible() check.
*/
-/* global mw, $VARS, $CODE */
-
-var mwPerformance = ( window.performance && performance.mark ) ? performance : {
- mark: function () {}
- },
- // Define now() here to ensure valid comparison with mediaWikiLoadEnd (T153819).
- mwNow = ( function () {
- var perf = window.performance,
- navStart = perf && perf.timing && perf.timing.navigationStart;
- return navStart && typeof perf.now === 'function' ?
- function () { return navStart + perf.now(); } :
- function () { return Date.now(); };
- }() ),
- // eslint-disable-next-line no-unused-vars
- mediaWikiLoadStart = mwNow();
-
-mwPerformance.mark( 'mwLoadStart' );
+/* global mw, mwPerformance, mwNow, isCompatible, $VARS, $CODE */
+
+window.mwPerformance = ( window.performance && performance.mark ) ? performance : {
+ mark: function () {}
+};
+// Define now() here to ensure valid comparison with mediaWikiLoadEnd (T153819).
+window.mwNow = ( function () {
+ var perf = window.performance,
+ navStart = perf && perf.timing && perf.timing.navigationStart;
+ return navStart && typeof perf.now === 'function' ?
+ function () { return navStart + perf.now(); } :
+ function () { return Date.now(); };
+}() );
/**
* See <https://www.mediawiki.org/wiki/Compatibility#Browsers>
* @param {string} [str] User agent, defaults to navigator.userAgent
* @return {boolean} User agent is compatible with MediaWiki JS
*/
-function isCompatible( str ) {
+window.isCompatible = function ( str ) {
var ua = str || navigator.userAgent;
return !!(
// http://caniuse.com/#feat=es5
ua.match( /PlayStation/i )
)
);
-}
+};
// Conditional script injection
( function () {
};
}
+ window.mediaWikiLoadStart = mwNow();
+ mwPerformance.mark( 'mwLoadStart' );
+
script = document.createElement( 'script' );
script.src = $VARS.baseModulesUri;
- script.onload = script.onreadystatechange = function () {
- if ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {
- // Clean up
- script.onload = script.onreadystatechange = null;
- script = null;
- // Callback
- startUp();
- }
+ script.onload = function () {
+ // Clean up
+ script.onload = null;
+ script = null;
+ // Callback
+ startUp();
};
document.getElementsByTagName( 'head' )[ 0 ].appendChild( script );
}() );