if ( !performance.mark ) {
performance.mark = function () {};
}
-performance.mark( 'mediaWikiStartUp' );
+performance.mark( 'mwLoadStart' );
/**
* Returns false for Grade C supported browsers.
* - https://jquery.com/browser-support/
*/
-/*jshint unused: false */
+/*jshint unused: false, evil: true */
+/*globals mw, RLQ: true, $VARS, $CODE */
function isCompatible( ua ) {
if ( ua === undefined ) {
ua = navigator.userAgent;
);
}
-/**
- * The startUp() function will be auto-generated and added below.
- */
+// Conditional script injection
+( function () {
+ if ( !isCompatible() ) {
+ // Undo class swapping in case of an unsupported browser.
+ // See OutputPage::getHeadScripts().
+ document.documentElement.className = document.documentElement.className
+ .replace( /(^|\s)client-js(\s|$)/, '$1client-nojs$2' );
+ return;
+ }
+
+ /**
+ * The $CODE and $VARS placeholders are substituted in ResourceLoaderStartUpModule.php.
+ */
+ function startUp() {
+ mw.config = new mw.Map( $VARS.wgLegacyJavaScriptGlobals );
+
+ $CODE.registrations();
+
+ mw.config.set( $VARS.configuration );
+
+ // Must be after mw.config.set because these callbacks may use mw.loader which
+ // needs to have values 'skin', 'debug' etc. from mw.config.
+ window.RLQ = window.RLQ || [];
+ while ( RLQ.length ) {
+ RLQ.shift()();
+ }
+ window.RLQ = {
+ push: function ( fn ) {
+ fn();
+ }
+ };
+ }
+
+ var 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();
+ }
+ };
+ document.getElementsByTagName( 'head' )[0].appendChild( script );
+}() );