Merge "resourceloader: Remove redundant closure of some startup and base files"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 24 Sep 2019 00:56:22 +0000 (00:56 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 24 Sep 2019 00:56:22 +0000 (00:56 +0000)
resources/src/mediawiki.base/mediawiki.errorLogger.js
resources/src/startup/mediawiki.js
resources/src/startup/mediawiki.requestIdleCallback.js

index b6aa5fd..2bf685e 100644 (file)
@@ -4,57 +4,58 @@
  * @class mw.errorLogger
  * @singleton
  */
-( function () {
-       'use strict';
+mw.errorLogger = {
+       /**
+        * Fired via mw.track when an error is not handled by local code and is caught by the
+        * window.onerror handler.
+        *
+        * @event global_error
+        * @param {string} errorMessage Error errorMessage.
+        * @param {string} url URL where error was raised.
+        * @param {number} lineNumber Line number where error was raised.
+        * @param {number} [columnNumber] Line number where error was raised. Not all browsers
+        *   support this.
+        * @param {Error|Mixed} [errorObject] The error object. Typically an instance of Error, but anything
+        *   (even a primitive value) passed to a throw clause will end up here.
+        */
 
-       mw.errorLogger = {
-               /**
-                * Fired via mw.track when an error is not handled by local code and is caught by the
-                * window.onerror handler.
-                *
-                * @event global_error
-                * @param {string} errorMessage Error errorMessage.
-                * @param {string} url URL where error was raised.
-                * @param {number} lineNumber Line number where error was raised.
-                * @param {number} [columnNumber] Line number where error was raised. Not all browsers
-                *   support this.
-                * @param {Error|Mixed} [errorObject] The error object. Typically an instance of Error, but anything
-                *   (even a primitive value) passed to a throw clause will end up here.
-                */
+       /**
+        * Install a window.onerror handler that will report via mw.track, while preserving
+        * any previous handler.
+        *
+        * @param {Object} window
+        */
+       installGlobalHandler: function ( window ) {
+               // We will preserve the return value of the previous handler. window.onerror works the
+               // opposite way than normal event handlers (returning true will prevent the default
+               // action, returning false will let the browser handle the error normally, by e.g.
+               // logging to the console), so our fallback old handler needs to return false.
+               var oldHandler = window.onerror || function () {
+                       return false;
+               };
 
                /**
-                * Install a window.onerror handler that will report via mw.track, while preserving
-                * any previous handler.
+                * Dumb window.onerror handler which forwards the errors via mw.track.
                 *
-                * @param {Object} window
+                * @param {string} errorMessage
+                * @param {string} url
+                * @param {number} lineNumber
+                * @param {number} [columnNumber]
+                * @param {Error|Mixed} [errorObject]
+                * @return {boolean} True to prevent the default action
+                * @fires global_error
                 */
-               installGlobalHandler: function ( window ) {
-                       // We will preserve the return value of the previous handler. window.onerror works the
-                       // opposite way than normal event handlers (returning true will prevent the default
-                       // action, returning false will let the browser handle the error normally, by e.g.
-                       // logging to the console), so our fallback old handler needs to return false.
-                       var oldHandler = window.onerror || function () {
-                               return false;
-                       };
-
-                       /**
-                        * Dumb window.onerror handler which forwards the errors via mw.track.
-                        *
-                        * @param {string} errorMessage
-                        * @param {string} url
-                        * @param {number} lineNumber
-                        * @param {number} [columnNumber]
-                        * @param {Error|Mixed} [errorObject]
-                        * @return {boolean} True to prevent the default action
-                        * @fires global_error
-                        */
-                       window.onerror = function ( errorMessage, url, lineNumber, columnNumber, errorObject ) {
-                               mw.track( 'global.error', { errorMessage: errorMessage, url: url,
-                                       lineNumber: lineNumber, columnNumber: columnNumber, errorObject: errorObject } );
-                               return oldHandler.apply( this, arguments );
-                       };
-               }
-       };
+               window.onerror = function ( errorMessage, url, lineNumber, columnNumber, errorObject ) {
+                       mw.track( 'global.error', {
+                               errorMessage: errorMessage,
+                               url: url,
+                               lineNumber: lineNumber,
+                               columnNumber: columnNumber,
+                               errorObject: errorObject
+                       } );
+                       return oldHandler.apply( this, arguments );
+               };
+       }
+};
 
-       mw.errorLogger.installGlobalHandler( window );
-}() );
+mw.errorLogger.installGlobalHandler( window );
index 21d95df..6a6aa3d 100644 (file)
@@ -13,7 +13,7 @@
        'use strict';
 
        var mw, StringSet, log,
-               hasOwn = Object.prototype.hasOwnProperty;
+               hasOwn = Object.hasOwnProperty;
 
        /**
         * FNV132 hash function
index afb4737..2787f58 100644 (file)
@@ -1,54 +1,51 @@
 /* global mw */
-( function () {
-       var maxBusy = 50;
+mw.requestIdleCallbackInternal = function ( callback ) {
+       setTimeout( function () {
+               var start = mw.now();
+               callback( {
+                       didTimeout: false,
+                       timeRemaining: function () {
+                               // Hard a target maximum busy time of 50 milliseconds
+                               return Math.max( 0, 50 - ( mw.now() - start ) );
+                       }
+               } );
+       }, 1 );
+};
 
-       mw.requestIdleCallbackInternal = function ( callback ) {
-               setTimeout( function () {
-                       var start = mw.now();
-                       callback( {
-                               didTimeout: false,
-                               timeRemaining: function () {
-                                       return Math.max( 0, maxBusy - ( mw.now() - start ) );
-                               }
-                       } );
-               }, 1 );
-       };
-
-       /**
-        * Schedule a deferred task to run in the background.
-        *
-        * This allows code to perform tasks in the main thread without impacting
-        * time-critical operations such as animations and response to input events.
-        *
-        * Basic logic is as follows:
-        *
-        * - User input event should be acknowledged within 100ms per [RAIL].
-        * - Idle work should be grouped in blocks of upto 50ms so that enough time
-        *   remains for the event handler to execute and any rendering to take place.
-        * - Whenever a native event happens (e.g. user input), the deadline for any
-        *   running idle callback drops to 0.
-        * - As long as the deadline is non-zero, other callbacks pending may be
-        *   executed in the same idle period.
-        *
-        * See also:
-        *
-        * - <https://developer.mozilla.org/en-US/docs/Web/API/Window/requestIdleCallback>
-        * - <https://w3c.github.io/requestidlecallback/>
-        * - <https://developers.google.com/web/updates/2015/08/using-requestidlecallback>
-        * [RAIL]: https://developers.google.com/web/fundamentals/performance/rail
-        *
-        * @member mw
-        * @param {Function} callback
-        * @param {Object} [options]
-        * @param {number} [options.timeout] If set, the callback will be scheduled for
-        *  immediate execution after this amount of time (in milliseconds) if it didn't run
-        *  by that time.
-        */
-       mw.requestIdleCallback = window.requestIdleCallback ?
-               // Bind because it throws TypeError if context is not window
-               window.requestIdleCallback.bind( window ) :
-               mw.requestIdleCallbackInternal;
-       // Note: Polyfill was previously disabled due to
-       // https://bugs.chromium.org/p/chromium/issues/detail?id=647870
-       // See also <http://codepen.io/Krinkle/full/XNGEvv>
-}() );
+/**
+ * Schedule a deferred task to run in the background.
+ *
+ * This allows code to perform tasks in the main thread without impacting
+ * time-critical operations such as animations and response to input events.
+ *
+ * Basic logic is as follows:
+ *
+ * - User input event should be acknowledged within 100ms per [RAIL].
+ * - Idle work should be grouped in blocks of upto 50ms so that enough time
+ *   remains for the event handler to execute and any rendering to take place.
+ * - Whenever a native event happens (e.g. user input), the deadline for any
+ *   running idle callback drops to 0.
+ * - As long as the deadline is non-zero, other callbacks pending may be
+ *   executed in the same idle period.
+ *
+ * See also:
+ *
+ * - <https://developer.mozilla.org/en-US/docs/Web/API/Window/requestIdleCallback>
+ * - <https://w3c.github.io/requestidlecallback/>
+ * - <https://developers.google.com/web/updates/2015/08/using-requestidlecallback>
+ * [RAIL]: https://developers.google.com/web/fundamentals/performance/rail
+ *
+ * @member mw
+ * @param {Function} callback
+ * @param {Object} [options]
+ * @param {number} [options.timeout] If set, the callback will be scheduled for
+ *  immediate execution after this amount of time (in milliseconds) if it didn't run
+ *  by that time.
+ */
+mw.requestIdleCallback = window.requestIdleCallback ?
+       // Bind because it throws TypeError if context is not window
+       window.requestIdleCallback.bind( window ) :
+       mw.requestIdleCallbackInternal;
+// Note: Polyfill was previously disabled due to
+// https://bugs.chromium.org/p/chromium/issues/detail?id=647870
+// See also <http://codepen.io/Krinkle/full/XNGEvv>