From: Aryeh Gregor Date: Sun, 5 Aug 2018 12:56:23 +0000 (+0300) Subject: Update DefaultPreferencesFactory to use NamespaceInfo X-Git-Tag: 1.34.0-rc.0~1807^2 X-Git-Url: https://git.cyclocoop.org/%7B%24admin_url%7Dmembres/cotisations/rappels.php?a=commitdiff_plain;h=3860a8d9b48ff07373e7520e955a8f50eb0ed9c8;p=lhc%2Fweb%2Fwiklou.git Update DefaultPreferencesFactory to use NamespaceInfo Depends-On: I552264714de7227965f978f20f932f41cf96042e Change-Id: I0568e7f4c7223208001f378a03fef395df8bff69 --- diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php index bf722c38b2..f844624a40 100644 --- a/includes/ServiceWiring.php +++ b/includes/ServiceWiring.php @@ -460,7 +460,8 @@ return [ DefaultPreferencesFactory::$constructorOptions, $services->getMainConfig() ), $services->getContentLanguage(), AuthManager::singleton(), - $services->getLinkRendererFactory()->create() + $services->getLinkRendererFactory()->create(), + $services->getNamespaceInfo() ); $factory->setLogger( LoggerFactory::getInstance( 'preferences' ) ); diff --git a/includes/preferences/DefaultPreferencesFactory.php b/includes/preferences/DefaultPreferencesFactory.php index a5c8064a2d..1f21c1bbbc 100644 --- a/includes/preferences/DefaultPreferencesFactory.php +++ b/includes/preferences/DefaultPreferencesFactory.php @@ -39,8 +39,8 @@ use MediaWiki\Linker\LinkRenderer; use MediaWiki\MediaWikiServices; use MessageLocalizer; use MWException; -use MWNamespace; use MWTimestamp; +use NamespaceInfo; use OutputPage; use Parser; use ParserOptions; @@ -74,6 +74,9 @@ class DefaultPreferencesFactory implements PreferencesFactory { /** @var LinkRenderer */ protected $linkRenderer; + /** @var NamespaceInfo */ + protected $nsInfo; + /** * TODO Make this a const when we drop HHVM support (T192166) * @@ -108,16 +111,20 @@ class DefaultPreferencesFactory implements PreferencesFactory { ]; /** + * Do not call this directly. Get it from MediaWikiServices. + * * @param array|Config $options Config accepted for backwards compatibility * @param Language $contLang * @param AuthManager $authManager * @param LinkRenderer $linkRenderer + * @param NamespaceInfo|null $nsInfo */ public function __construct( $options, Language $contLang, AuthManager $authManager, - LinkRenderer $linkRenderer + LinkRenderer $linkRenderer, + NamespaceInfo $nsInfo = null ) { if ( $options instanceof Config ) { wfDeprecated( __METHOD__ . ' with Config parameter', '1.34' ); @@ -126,10 +133,15 @@ class DefaultPreferencesFactory implements PreferencesFactory { $options->assertRequiredOptions( self::$constructorOptions ); + if ( !$nsInfo ) { + wfDeprecated( __METHOD__ . ' with no NamespaceInfo argument', '1.34' ); + $nsInfo = MediaWikiServices::getInstance()->getNamespaceInfo(); + } $this->options = $options; $this->contLang = $contLang; $this->authManager = $authManager; $this->linkRenderer = $linkRenderer; + $this->nsInfo = $nsInfo; $this->logger = new NullLogger(); } @@ -1262,7 +1274,7 @@ class DefaultPreferencesFactory implements PreferencesFactory { * @param array &$defaultPreferences */ protected function searchPreferences( &$defaultPreferences ) { - foreach ( MWNamespace::getValidNamespaces() as $n ) { + foreach ( $this->nsInfo->getValidNamespaces() as $n ) { $defaultPreferences['searchNs' . $n] = [ 'type' => 'api', ]; diff --git a/tests/phpunit/includes/preferences/DefaultPreferencesFactoryTest.php b/tests/phpunit/includes/preferences/DefaultPreferencesFactoryTest.php index bcd5c376c4..a00eb3fcd0 100644 --- a/tests/phpunit/includes/preferences/DefaultPreferencesFactoryTest.php +++ b/tests/phpunit/includes/preferences/DefaultPreferencesFactoryTest.php @@ -52,11 +52,19 @@ class DefaultPreferencesFactoryTest extends \MediaWikiTestCase { * @return DefaultPreferencesFactory */ protected function getPreferencesFactory() { + $mockNsInfo = $this->createMock( NamespaceInfo::class ); + $mockNsInfo->method( 'getValidNamespaces' )->willReturn( [ + NS_MAIN, NS_TALK, NS_USER, NS_USER_TALK + ] ); + $mockNsInfo->expects( $this->never() ) + ->method( $this->anythingBut( 'getValidNamespaces', '__destruct' ) ); + return new DefaultPreferencesFactory( new ServiceOptions( DefaultPreferencesFactory::$constructorOptions, $this->config ), new Language(), AuthManager::singleton(), - MediaWikiServices::getInstance()->getLinkRenderer() + MediaWikiServices::getInstance()->getLinkRenderer(), + $mockNsInfo ); }