From: Legoktm Date: Thu, 10 Nov 2016 05:48:33 +0000 (+0000) Subject: Revert "Don't construct SpecialPages twice" X-Git-Tag: 1.31.0-rc.0~4905^2 X-Git-Url: http://git.cyclocoop.org/?a=commitdiff_plain;h=d82eec166fc19e821cca501bf350d348ef9f5da4;p=lhc%2Fweb%2Fwiklou.git Revert "Don't construct SpecialPages twice" This causes issues with transcluded special pages. This reverts commit ba40a63c0ee23daec4886a3e7da62b061639f19c. Bug: T132545 Change-Id: I14d5300d6b90766532924f9d1e52c4230e2d9772 --- diff --git a/includes/specialpage/SpecialPageFactory.php b/includes/specialpage/SpecialPageFactory.php index 725c4fc581..8ce480e123 100644 --- a/includes/specialpage/SpecialPageFactory.php +++ b/includes/specialpage/SpecialPageFactory.php @@ -182,7 +182,6 @@ class SpecialPageFactory { private static $list; private static $aliases; - private static $pageObjectCache = []; /** * Reset the internal list of special pages. Useful when changing $wgSpecialPages after @@ -191,7 +190,6 @@ class SpecialPageFactory { public static function resetList() { self::$list = null; self::$aliases = null; - self::$pageObjectCache = []; } /** @@ -375,10 +373,6 @@ class SpecialPageFactory { public static function getPage( $name ) { list( $realName, /*...*/ ) = self::resolveAlias( $name ); - if ( isset( self::$pageObjectCache[$realName] ) ) { - return self::$pageObjectCache[$realName]; - } - $specialPageList = self::getPageList(); if ( isset( $specialPageList[$realName] ) ) { @@ -406,7 +400,6 @@ class SpecialPageFactory { $page = null; } - self::$pageObjectCache[$realName] = $page; if ( $page instanceof SpecialPage ) { return $page; } else { diff --git a/tests/phpunit/includes/specialpage/SpecialPageFactoryTest.php b/tests/phpunit/includes/specialpage/SpecialPageFactoryTest.php index 3d407fbc32..534cf9baf7 100644 --- a/tests/phpunit/includes/specialpage/SpecialPageFactoryTest.php +++ b/tests/phpunit/includes/specialpage/SpecialPageFactoryTest.php @@ -55,17 +55,19 @@ class SpecialPageFactoryTest extends MediaWikiTestCase { $specialPageTestHelper = new SpecialPageTestHelper(); return [ - 'class name' => [ 'SpecialAllPages' ], + 'class name' => [ 'SpecialAllPages', false ], 'closure' => [ function () { return new SpecialAllPages(); - } ], - 'function' => [ [ $this, 'newSpecialAllPages' ] ], - 'callback string' => [ 'SpecialPageTestHelper::newSpecialAllPages' ], + }, false ], + 'function' => [ [ $this, 'newSpecialAllPages' ], false ], + 'callback string' => [ 'SpecialPageTestHelper::newSpecialAllPages', false ], 'callback with object' => [ - [ $specialPageTestHelper, 'newSpecialAllPages' ] + [ $specialPageTestHelper, 'newSpecialAllPages' ], + false ], 'callback array' => [ - [ 'SpecialPageTestHelper', 'newSpecialAllPages' ] + [ 'SpecialPageTestHelper', 'newSpecialAllPages' ], + false ] ]; } @@ -74,7 +76,7 @@ class SpecialPageFactoryTest extends MediaWikiTestCase { * @covers SpecialPageFactory::getPage * @dataProvider specialPageProvider */ - public function testGetPage( $spec ) { + public function testGetPage( $spec, $shouldReuseInstance ) { $this->mergeMwGlobalArrayValue( 'wgSpecialPages', [ 'testdummy' => $spec ] ); SpecialPageFactory::resetList(); @@ -82,7 +84,7 @@ class SpecialPageFactoryTest extends MediaWikiTestCase { $this->assertInstanceOf( 'SpecialPage', $page ); $page2 = SpecialPageFactory::getPage( 'testdummy' ); - $this->assertEquals( true, $page2 === $page, "Should re-use instance:" ); + $this->assertEquals( $shouldReuseInstance, $page2 === $page, "Should re-use instance:" ); } /**