Merge "resourceloader: Remove support for addSource(id, url)"

This commit is contained in:
jenkins-bot 2018-09-11 09:06:31 +00:00 committed by Gerrit Code Review
commit c02af5f13f
5 changed files with 41 additions and 37 deletions

View file

@ -287,6 +287,8 @@ because of Phabricator reports.
instead.
* MediaWiki no longer supports a StartProfiler.php file.
Define $wgProfiler via LocalSettings.php instead.
* The mw.loader.addSource() is now considered a private method, and no longer
supports the `id, url` signature. Use the `Object` parameter instead.
=== Deprecations in 1.32 ===
* HTMLForm::setSubmitProgressive() is deprecated. No need to call it. Submit

View file

@ -1453,24 +1453,19 @@ MESSAGE;
* - ResourceLoader::makeLoaderSourcesScript( [ $id1 => $loadUrl, $id2 => $loadUrl, ... ] );
* Register sources with the given IDs and properties.
*
* @param string $id Source ID
* @param string|array $sources Source ID
* @param string|null $loadUrl load.php url
* @return string JavaScript code
*/
public static function makeLoaderSourcesScript( $id, $loadUrl = null ) {
if ( is_array( $id ) ) {
return Xml::encodeJsCall(
'mw.loader.addSource',
[ $id ],
self::inDebugMode()
);
} else {
return Xml::encodeJsCall(
'mw.loader.addSource',
[ $id, $loadUrl ],
self::inDebugMode()
);
public static function makeLoaderSourcesScript( $sources, $loadUrl = null ) {
if ( !is_array( $sources ) ) {
$sources = [ $sources => $loadUrl ];
}
return Xml::encodeJsCall(
'mw.loader.addSource',
[ $sources ],
self::inDebugMode()
);
}
/**

View file

@ -1635,7 +1635,7 @@
/**
* Start loading of all queued module dependencies.
*
* @protected
* @private
*/
work: function () {
var q, batch, implementations, sourceModules;
@ -1713,27 +1713,20 @@
*
* The #work() method will use this information to split up requests by source.
*
* mw.loader.addSource( 'mediawikiwiki', '//www.mediawiki.org/w/load.php' );
* mw.loader.addSource( { mediawikiwiki: 'https://www.mediawiki.org/w/load.php' } );
*
* @param {string|Object} id Source ID, or object mapping ids to load urls
* @param {string} loadUrl Url to a load.php end point
* @private
* @param {Object} ids An object mapping ids to load.php end point urls
* @throws {Error} If source id is already registered
*/
addSource: function ( id, loadUrl ) {
var source;
// Allow multiple additions
if ( typeof id === 'object' ) {
for ( source in id ) {
mw.loader.addSource( source, id[ source ] );
addSource: function ( ids ) {
var id;
for ( id in ids ) {
if ( hasOwn.call( sources, id ) ) {
throw new Error( 'source already registered: ' + id );
}
return;
sources[ id ] = ids[ id ];
}
if ( hasOwn.call( sources, id ) ) {
throw new Error( 'source already registered: ' + id );
}
sources[ id ] = loadUrl;
},
/**
@ -1810,7 +1803,7 @@
* The reason css strings are not concatenated anymore is T33676. We now check
* whether it's safe to extend the stylesheet.
*
* @protected
* @private
* @param {Object} [messages] List of key/value pairs to be added to mw#messages.
* @param {Object} [templates] List of key/value pairs to be added to mw#templates.
*/

View file

@ -513,7 +513,9 @@ mw.example();
*/
public function testMakeLoaderSourcesScript() {
$this->assertEquals(
'mw.loader.addSource( "local", "/w/load.php" );',
'mw.loader.addSource( {
"local": "/w/load.php"
} );',
ResourceLoader::makeLoaderSourcesScript( 'local', '/w/load.php' )
);
$this->assertEquals(

View file

@ -19,10 +19,10 @@
}
} ) );
mw.loader.addSource(
'testloader',
QUnit.fixurl( mw.config.get( 'wgScriptPath' ) + '/tests/qunit/data/load.mock.php' )
);
mw.loader.addSource( {
testloader:
QUnit.fixurl( mw.config.get( 'wgScriptPath' ) + '/tests/qunit/data/load.mock.php' )
} );
/**
* The sync style load test, for @import. This is, in a way, also an open bug for
@ -546,6 +546,18 @@
assert.strictEqual( mw.loader.getState( 'test.empty' ), 'ready' );
} );
QUnit.test( '.addSource()', function ( assert ) {
mw.loader.addSource( { testsource1: 'https://1.test/src' } );
assert.throws( function () {
mw.loader.addSource( { testsource1: 'https://1.test/src' } );
}, /already registered/, 'duplicate pair from addSource(Object)' );
assert.throws( function () {
mw.loader.addSource( { testsource1: 'https://1.test/src-diff' } );
}, /already registered/, 'duplicate ID from addSource(Object)' );
} );
// @covers mw.loader#batchRequest
// This is a regression test because in the past we called getCombinedVersion()
// for all requested modules, before url splitting took place.