From a259a2ed0d3059852bfcc5bb12f7a95da01d333f Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Wed, 17 Apr 2019 15:17:15 +0100 Subject: [PATCH] resourceloader: Move remaining module registrations to ServiceWiring Also restore the order of registrations as it was before last week with 47422fabe2813f. (That is, core modules are registered before extension modules, in case of conflicts with a warning, the core one wins). Bug: T32956 Change-Id: I3a50508178159dfc8e5db1e218a5e6d10e2d4b2a --- includes/ServiceWiring.php | 9 ++++++++ includes/resourceloader/ResourceLoader.php | 14 +++---------- .../resourceloader/ResourceLoaderTest.php | 21 +++++++++---------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php index d39a0c79b2..a500c4591e 100644 --- a/includes/ServiceWiring.php +++ b/includes/ServiceWiring.php @@ -443,8 +443,17 @@ return [ $config, LoggerFactory::getInstance( 'resourceloader' ) ); + $rl->addSource( $config->get( 'ResourceLoaderSources' ) ); + + // Core modules, then extension/skin modules $rl->register( include "$IP/resources/Resources.php" ); + $rl->register( $config->get( 'ResourceModules' ) ); + Hooks::run( 'ResourceLoaderRegisterModules', [ &$rl ] ); + + if ( $config->get( 'EnableJavaScriptTest' ) === true ) { + $rl->registerTestModules(); + } return $rl; }, diff --git a/includes/resourceloader/ResourceLoader.php b/includes/resourceloader/ResourceLoader.php index 8d60e0f763..3371069dab 100644 --- a/includes/resourceloader/ResourceLoader.php +++ b/includes/resourceloader/ResourceLoader.php @@ -255,17 +255,6 @@ class ResourceLoader implements LoggerAwareInterface { // Special module that always exists $this->register( 'startup', [ 'class' => ResourceLoaderStartUpModule::class ] ); - // Register extension modules - $this->register( $config->get( 'ResourceModules' ) ); - - // Avoid PHP 7.1 warning from passing $this by reference - $rl = $this; - Hooks::run( 'ResourceLoaderRegisterModules', [ &$rl ] ); - - if ( $config->get( 'EnableJavaScriptTest' ) === true ) { - $this->registerTestModules(); - } - $this->setMessageBlobStore( new MessageBlobStore( $this, $this->logger ) ); } @@ -394,6 +383,9 @@ class ResourceLoader implements LoggerAwareInterface { } } + /** + * @internal For use by ServiceWiring only + */ public function registerTestModules() { global $IP; diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderTest.php index 7239afc8c1..85a47de4b5 100644 --- a/tests/phpunit/includes/resourceloader/ResourceLoaderTest.php +++ b/tests/phpunit/includes/resourceloader/ResourceLoaderTest.php @@ -1,6 +1,7 @@ overrideMwServices(); + $ranHook = 0; $this->setMwGlobals( 'wgHooks', [ 'ResourceLoaderRegisterModules' => [ - function ( &$resourceLoader ) use ( &$resourceLoaderRegisterModulesHook ) { - $resourceLoaderRegisterModulesHook = true; + function ( &$resourceLoader ) use ( &$ranHook ) { + $ranHook++; } ] ] ); - $unused = new ResourceLoader(); - $this->assertTrue( - $resourceLoaderRegisterModulesHook, - 'Hook ResourceLoaderRegisterModules called' - ); + MediaWikiServices::getInstance()->getResourceLoader(); + + $this->assertSame( 1, $ranHook, 'Hook was called' ); } /** -- 2.20.1