Merge "resourceloader: Correct @param doc for mw.loader.state()"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Fri, 24 Aug 2018 20:05:27 +0000 (20:05 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Fri, 24 Aug 2018 20:05:27 +0000 (20:05 +0000)
1  2 
resources/src/startup/mediawiki.js

                         * @param {string[]} batch
                         */
                        function batchRequest( batch ) {
 -                              var reqBase, splits, maxQueryLength, b, bSource, bGroup, bSourceGroup,
 +                              var reqBase, splits, maxQueryLength, b, bSource, bGroup,
                                        source, group, i, modules, sourceLoadScript,
                                        currReqBase, currReqBaseLength, moduleMap, currReqModules, l,
                                        lastDotIndex, prefix, suffix, bytesAdded;
                                maxQueryLength = mw.config.get( 'wgResourceLoaderMaxQueryLength', 2000 );
  
                                // Split module list by source and by group.
 -                              splits = {};
 +                              splits = Object.create( null );
                                for ( b = 0; b < batch.length; b++ ) {
                                        bSource = registry[ batch[ b ] ].source;
                                        bGroup = registry[ batch[ b ] ].group;
 -                                      if ( !hasOwn.call( splits, bSource ) ) {
 -                                              splits[ bSource ] = {};
 +                                      if ( !splits[ bSource ] ) {
 +                                              splits[ bSource ] = Object.create( null );
                                        }
 -                                      if ( !hasOwn.call( splits[ bSource ], bGroup ) ) {
 +                                      if ( !splits[ bSource ][ bGroup ] ) {
                                                splits[ bSource ][ bGroup ] = [];
                                        }
 -                                      bSourceGroup = splits[ bSource ][ bGroup ];
 -                                      bSourceGroup.push( batch[ b ] );
 +                                      splits[ bSource ][ bGroup ].push( batch[ b ] );
                                }
  
                                for ( source in splits ) {
 -
                                        sourceLoadScript = sources[ source ];
  
                                        for ( group in splits[ source ] ) {
                                                // We may need to split up the request to honor the query string length limit,
                                                // so build it piece by piece.
                                                l = currReqBaseLength;
 -                                              moduleMap = {}; // { prefix: [ suffixes ] }
 +                                              moduleMap = Object.create( null ); // { prefix: [ suffixes ] }
                                                currReqModules = [];
  
                                                for ( i = 0; i < modules.length; i++ ) {
                                                        // If lastDotIndex is -1, substr() returns an empty string
                                                        prefix = modules[ i ].substr( 0, lastDotIndex );
                                                        suffix = modules[ i ].slice( lastDotIndex + 1 );
 -                                                      bytesAdded = hasOwn.call( moduleMap, prefix ) ?
 +                                                      bytesAdded = moduleMap[ prefix ] ?
                                                                suffix.length + 3 : // '%2C'.length == 3
                                                                modules[ i ].length + 3; // '%7C'.length == 3
  
                                                                doRequest();
                                                                // .. and start again.
                                                                l = currReqBaseLength;
 -                                                              moduleMap = {};
 +                                                              moduleMap = Object.create( null );
                                                                currReqModules = [];
  
                                                                mw.track( 'resourceloader.splitRequest', { maxQueryLength: maxQueryLength } );
                                                        }
 -                                                      if ( !hasOwn.call( moduleMap, prefix ) ) {
 +                                                      if ( !moduleMap[ prefix ] ) {
                                                                moduleMap[ prefix ] = [];
                                                        }
                                                        l += bytesAdded;
                                /**
                                 * Change the state of one or more modules.
                                 *
-                                * @param {Object|string} modules Object of module name/state pairs
+                                * @param {Object} modules Object of module name/state pairs
                                 */
                                state: function ( modules ) {
                                        var module, state;