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

Reply via email to