Daniel Kinzler has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/351878 )
Change subject: Allow ResourceModules to be registered via a factory callback.
......................................................................
Allow ResourceModules to be registered via a factory callback.
This should work the same way as registering API modules via a factory callback.
Change-Id: Ifbf29006141ce2a2dff42efa352f406502a06bc6
---
M includes/resourceloader/ResourceLoader.php
M tests/phpunit/includes/resourceloader/ResourceLoaderTest.php
2 files changed, 21 insertions(+), 0 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core
refs/changes/78/351878/1
diff --git a/includes/resourceloader/ResourceLoader.php
b/includes/resourceloader/ResourceLoader.php
index 3cd7821..3bae6bb 100644
--- a/includes/resourceloader/ResourceLoader.php
+++ b/includes/resourceloader/ResourceLoader.php
@@ -541,6 +541,10 @@
if ( isset( $info['object'] ) ) {
// Object given in info array
$object = $info['object'];
+ } elseif( $info['factory'] ) {
+ $object = call_user_func( $info['factory'],
$info );
+ $object->setConfig( $this->getConfig() );
+ $object->setLogger( $this->logger );
} else {
if ( !isset( $info['class'] ) ) {
$class = 'ResourceLoaderFileModule';
diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderTest.php
b/tests/phpunit/includes/resourceloader/ResourceLoaderTest.php
index af3212a..0833047 100644
--- a/tests/phpunit/includes/resourceloader/ResourceLoaderTest.php
+++ b/tests/phpunit/includes/resourceloader/ResourceLoaderTest.php
@@ -146,6 +146,23 @@
/**
* @covers ResourceLoader::getModule
*/
+ public function testGetModuleFactory() {
+ $factory = function( array $info ) {
+ $this->assertArrayHasKey( 'kitten', $info );
+ return new ResourceLoaderTestModule( $info );
+ };
+
+ $rl = new EmptyResourceLoader();
+ $rl->register( 'test', [ 'factory' => $factory, 'kitten' =>
'little ball of fur' ] );
+ $this->assertInstanceOf(
+ ResourceLoaderTestModule::class,
+ $rl->getModule( 'test' )
+ );
+ }
+
+ /**
+ * @covers ResourceLoader::getModule
+ */
public function testGetModuleClassDefault() {
$rl = new EmptyResourceLoader();
$rl->register( 'test', [] );
--
To view, visit https://gerrit.wikimedia.org/r/351878
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ifbf29006141ce2a2dff42efa352f406502a06bc6
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Daniel Kinzler <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits