Update LinkRenderer to use NamespaceInfo
authorAryeh Gregor <ayg@aryeh.name>
Sun, 5 Aug 2018 12:44:11 +0000 (15:44 +0300)
committerdaniel <dkinzler@wikimedia.org>
Tue, 7 May 2019 12:52:17 +0000 (14:52 +0200)
Change-Id: I4af843238ffd58925f57c0f7b98253a90cb285ec

includes/ServiceWiring.php
includes/linker/LinkRenderer.php
includes/linker/LinkRendererFactory.php
tests/phpunit/includes/linker/LinkRendererFactoryTest.php
tests/phpunit/includes/linker/LinkRendererTest.php

index f74ba79..a30534e 100644 (file)
@@ -249,7 +249,8 @@ return [
        'LinkRendererFactory' => function ( MediaWikiServices $services ) : LinkRendererFactory {
                return new LinkRendererFactory(
                        $services->getTitleFormatter(),
-                       $services->getLinkCache()
+                       $services->getLinkCache(),
+                       $services->getNamespaceInfo()
                );
        },
 
index c77b156..707c382 100644 (file)
@@ -27,7 +27,7 @@ use HtmlArmor;
 use LinkCache;
 use Linker;
 use MediaWiki\MediaWikiServices;
-use MWNamespace;
+use NamespaceInfo;
 use Sanitizer;
 use Title;
 use TitleFormatter;
@@ -69,6 +69,11 @@ class LinkRenderer {
         */
        private $linkCache;
 
+       /**
+        * @var NamespaceInfo
+        */
+       private $nsInfo;
+
        /**
         * Whether to run the legacy Linker hooks
         *
@@ -79,10 +84,14 @@ class LinkRenderer {
        /**
         * @param TitleFormatter $titleFormatter
         * @param LinkCache $linkCache
+        * @param NamespaceInfo $nsInfo
         */
-       public function __construct( TitleFormatter $titleFormatter, LinkCache $linkCache ) {
+       public function __construct(
+               TitleFormatter $titleFormatter, LinkCache $linkCache, NamespaceInfo $nsInfo
+       ) {
                $this->titleFormatter = $titleFormatter;
                $this->linkCache = $linkCache;
+               $this->nsInfo = $nsInfo;
        }
 
        /**
@@ -468,8 +477,9 @@ class LinkRenderer {
                if ( $this->linkCache->getGoodLinkFieldObj( $target, 'redirect' ) ) {
                        # Page is a redirect
                        return 'mw-redirect';
-               } elseif ( $this->stubThreshold > 0 && MWNamespace::isContent( $target->getNamespace() )
-                       && $this->linkCache->getGoodLinkFieldObj( $target, 'length' ) < $this->stubThreshold
+               } elseif (
+                       $this->stubThreshold > 0 && $this->nsInfo->isContent( $target->getNamespace() ) &&
+                       $this->linkCache->getGoodLinkFieldObj( $target, 'length' ) < $this->stubThreshold
                ) {
                        # Page is a stub
                        return 'stub';
index 240ea09..eeb28b5 100644 (file)
@@ -21,6 +21,7 @@
 namespace MediaWiki\Linker;
 
 use LinkCache;
+use NamespaceInfo;
 use TitleFormatter;
 use User;
 
@@ -40,20 +41,29 @@ class LinkRendererFactory {
         */
        private $linkCache;
 
+       /**
+        * @var NamespaceInfo
+        */
+       private $nsInfo;
+
        /**
         * @param TitleFormatter $titleFormatter
         * @param LinkCache $linkCache
+        * @param NamespaceInfo $nsInfo
         */
-       public function __construct( TitleFormatter $titleFormatter, LinkCache $linkCache ) {
+       public function __construct(
+               TitleFormatter $titleFormatter, LinkCache $linkCache, NamespaceInfo $nsInfo
+       ) {
                $this->titleFormatter = $titleFormatter;
                $this->linkCache = $linkCache;
+               $this->nsInfo = $nsInfo;
        }
 
        /**
         * @return LinkRenderer
         */
        public function create() {
-               return new LinkRenderer( $this->titleFormatter, $this->linkCache );
+               return new LinkRenderer( $this->titleFormatter, $this->linkCache, $this->nsInfo );
        }
 
        /**
index 27e5a65..83ce3d2 100644 (file)
@@ -19,10 +19,18 @@ class LinkRendererFactoryTest extends MediaWikiLangTestCase {
         */
        private $linkCache;
 
+       /**
+        * @var NamespaceInfo
+        */
+       private $nsInfo;
+
        public function setUp() {
                parent::setUp();
-               $this->titleFormatter = MediaWikiServices::getInstance()->getTitleFormatter();
-               $this->linkCache = MediaWikiServices::getInstance()->getLinkCache();
+
+               $services = MediaWikiServices::getInstance();
+               $this->titleFormatter = $services->getTitleFormatter();
+               $this->linkCache = $services->getLinkCache();
+               $this->nsInfo = $services->getNamespaceInfo();
        }
 
        public static function provideCreateFromLegacyOptions() {
@@ -54,7 +62,8 @@ class LinkRendererFactoryTest extends MediaWikiLangTestCase {
         * @dataProvider provideCreateFromLegacyOptions
         */
        public function testCreateFromLegacyOptions( $options, $func, $val ) {
-               $factory = new LinkRendererFactory( $this->titleFormatter, $this->linkCache );
+               $factory =
+                       new LinkRendererFactory( $this->titleFormatter, $this->linkCache, $this->nsInfo );
                $linkRenderer = $factory->createFromLegacyOptions(
                        $options
                );
@@ -63,7 +72,8 @@ class LinkRendererFactoryTest extends MediaWikiLangTestCase {
        }
 
        public function testCreate() {
-               $factory = new LinkRendererFactory( $this->titleFormatter, $this->linkCache );
+               $factory =
+                       new LinkRendererFactory( $this->titleFormatter, $this->linkCache, $this->nsInfo );
                $this->assertInstanceOf( LinkRenderer::class, $factory->create() );
        }
 
@@ -74,7 +84,8 @@ class LinkRendererFactoryTest extends MediaWikiLangTestCase {
                $user->expects( $this->once() )
                        ->method( 'getStubThreshold' )
                        ->willReturn( 15 );
-               $factory = new LinkRendererFactory( $this->titleFormatter, $this->linkCache );
+               $factory =
+                       new LinkRendererFactory( $this->titleFormatter, $this->linkCache, $this->nsInfo );
                $linkRenderer = $factory->createForUser( $user );
                $this->assertInstanceOf( LinkRenderer::class, $linkRenderer );
                $this->assertEquals( 15, $linkRenderer->getStubThreshold() );
index e90577c..d4e1961 100644 (file)
@@ -165,7 +165,7 @@ class LinkRendererTest extends MediaWikiLangTestCase {
                        0 // redir
                );
 
-               $linkRenderer = new LinkRenderer( $titleFormatter, $linkCache );
+               $linkRenderer = new LinkRenderer( $titleFormatter, $linkCache, $nsInfo );
                $linkRenderer->setStubThreshold( 0 );
                $this->assertEquals(
                        '',