ResourceLoader: Inject HookContainer & UserOptionsLookup to getUserDefaults

Change-Id: I328ee0f959f0898a7e2632dfcfa3e3bbb579106e
This commit is contained in:
Derick Alangi 2022-06-27 17:06:15 +01:00 committed by Krinkle
parent 65dee01426
commit ae22031299
3 changed files with 30 additions and 6 deletions

View file

@ -38,6 +38,7 @@ use MediaWiki\HeaderCallback;
use MediaWiki\HookContainer\HookContainer;
use MediaWiki\MainConfigNames;
use MediaWiki\MediaWikiServices;
use MediaWiki\User\UserOptionsLookup;
use MWException;
use MWExceptionHandler;
use MWExceptionRenderer;
@ -1982,14 +1983,21 @@ MESSAGE;
* Get user default options to expose to JavaScript on all pages via `mw.user.options`.
*
* @internal Exposed for use from Resources.php
*
* @param Context $context
* @param HookContainer $hookContainer
* @param UserOptionsLookup $userOptionsLookup
*
* @return array
*/
public static function getUserDefaults( Context $context ): array {
// TODO inject
$defaultOptions = MediaWikiServices::getInstance()->getUserOptionsLookup()->getDefaultOptions();
public static function getUserDefaults(
Context $context,
HookContainer $hookContainer,
UserOptionsLookup $userOptionsLookup
): array {
$defaultOptions = $userOptionsLookup->getDefaultOptions();
$keysToExclude = [];
$hookRunner = new HookRunner( MediaWikiServices::getInstance()->getHookContainer() );
$hookRunner = new HookRunner( $hookContainer );
$hookRunner->onResourceLoaderExcludeUserOptions( $keysToExclude, $context );
foreach ( $keysToExclude as $excludedKey ) {
unset( $defaultOptions[ $excludedKey ] );

View file

@ -32,6 +32,7 @@ use MediaWiki\ResourceLoader\MwUrlModule;
use MediaWiki\ResourceLoader\OOUIFileModule;
use MediaWiki\ResourceLoader\OOUIIconPackModule;
use MediaWiki\ResourceLoader\OOUIImageModule;
use MediaWiki\ResourceLoader\ResourceLoader;
use MediaWiki\ResourceLoader\SiteModule;
use MediaWiki\ResourceLoader\SiteStylesModule;
use MediaWiki\ResourceLoader\SkinModule;
@ -157,7 +158,18 @@ return [
// (not this though)
[ 'name' => 'config.json', 'callback' => 'ResourceLoader::getSiteConfigSettings' ],
[ 'name' => 'user.json', 'callback' => 'ResourceLoader::getUserDefaults' ],
[
'name' => 'user.json',
'callback' => static function ( Context $context ) {
$services = MediaWikiServices::getInstance();
return ResourceLoader::getUserDefaults(
$context,
$services->getHookContainer(),
$services->getUserOptionsLookup()
);
}
],
[
'name' => 'legacy.wikibits.js',
'callback' => static function ( Context $context, Config $config ) {

View file

@ -1150,7 +1150,11 @@ END
$keysToExclude[] = 'exclude';
}, true );
$defaults = ResourceLoader::getUserDefaults( $ctx );
$defaults = ResourceLoader::getUserDefaults(
$ctx,
$this->getServiceContainer()->getHookContainer(),
$this->getServiceContainer()->getUserOptionsLookup()
);
$this->assertSame( [ 'include' => 1 ], $defaults );
}
}