Convert MessageCache to service
Depends-On: Ia70e6c75f6e8a533f20cd44ebb05e013678e9951 Depends-On: I546eda0377f3a50843144b1450d3fbe8e4e02a8a Change-Id: I305539a8598535a73e5cd280b2becdafa740ef97
This commit is contained in:
parent
b62b871499
commit
752e7dd707
8 changed files with 37 additions and 50 deletions
|
|
@ -343,7 +343,8 @@ because of Phabricator reports.
|
|||
Use IDatabase::getDomainID() instead.
|
||||
* (T191231) Support for using Oracle or MSSQL as database backends has been
|
||||
dropped.
|
||||
* …
|
||||
* MessageCache::destroyInstance() has been removed. Instead, call
|
||||
MediaWikiTestCase::resetServices().
|
||||
|
||||
=== Deprecations in 1.34 ===
|
||||
* The MWNamespace class is deprecated. Use NamespaceInfo.
|
||||
|
|
@ -446,6 +447,8 @@ because of Phabricator reports.
|
|||
deprecation above this method is no longer needed/called and should not be
|
||||
implemented by SearchEngine implementation.
|
||||
* IDatabase::bufferResults() has been deprecated. Use query batching instead.
|
||||
* MessageCache::singleton() is deprecated. Use
|
||||
MediaWikiServices::getMessageCache().
|
||||
|
||||
=== Other changes in 1.34 ===
|
||||
* …
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ use MediaWiki\Config\ConfigRepository;
|
|||
use MediaWiki\Linker\LinkRenderer;
|
||||
use MediaWiki\Linker\LinkRendererFactory;
|
||||
use MWException;
|
||||
use MessageCache;
|
||||
use MimeAnalyzer;
|
||||
use NamespaceInfo;
|
||||
use ObjectCache;
|
||||
|
|
@ -689,6 +690,14 @@ class MediaWikiServices extends ServiceContainer {
|
|||
return $this->getService( 'MediaHandlerFactory' );
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 1.34
|
||||
* @return MessageCache
|
||||
*/
|
||||
public function getMessageCache() : MessageCache {
|
||||
return $this->getService( 'MessageCache' );
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 1.28
|
||||
* @return MimeAnalyzer
|
||||
|
|
|
|||
|
|
@ -319,6 +319,20 @@ return [
|
|||
);
|
||||
},
|
||||
|
||||
'MessageCache' => function ( MediaWikiServices $services ) : MessageCache {
|
||||
$mainConfig = $services->getMainConfig();
|
||||
return new MessageCache(
|
||||
$services->getMainWANObjectCache(),
|
||||
ObjectCache::getInstance( $mainConfig->get( 'MessageCacheType' ) ),
|
||||
$mainConfig->get( 'UseLocalMessageCache' )
|
||||
? $services->getLocalServerObjectCache()
|
||||
: new EmptyBagOStuff(),
|
||||
$mainConfig->get( 'UseDatabaseMessages' ),
|
||||
$mainConfig->get( 'MsgCacheExpiry' ),
|
||||
$services->getContentLanguage()
|
||||
);
|
||||
},
|
||||
|
||||
'MimeAnalyzer' => function ( MediaWikiServices $services ) : MimeAnalyzer {
|
||||
$logger = LoggerFactory::getInstance( 'Mime' );
|
||||
$mainConfig = $services->getMainConfig();
|
||||
|
|
|
|||
36
includes/cache/MessageCache.php
vendored
36
includes/cache/MessageCache.php
vendored
|
|
@ -105,44 +105,14 @@ class MessageCache {
|
|||
private $loadedLanguages = [];
|
||||
|
||||
/**
|
||||
* Singleton instance
|
||||
*
|
||||
* @var MessageCache $instance
|
||||
*/
|
||||
private static $instance;
|
||||
|
||||
/**
|
||||
* Get the signleton instance of this class
|
||||
* Get the singleton instance of this class
|
||||
*
|
||||
* @deprecated in 1.34 inject an instance of this class instead of using global state
|
||||
* @since 1.18
|
||||
* @return MessageCache
|
||||
*/
|
||||
public static function singleton() {
|
||||
if ( self::$instance === null ) {
|
||||
global $wgUseDatabaseMessages, $wgMsgCacheExpiry, $wgUseLocalMessageCache;
|
||||
$services = MediaWikiServices::getInstance();
|
||||
self::$instance = new self(
|
||||
$services->getMainWANObjectCache(),
|
||||
wfGetMessageCacheStorage(),
|
||||
$wgUseLocalMessageCache
|
||||
? $services->getLocalServerObjectCache()
|
||||
: new EmptyBagOStuff(),
|
||||
$wgUseDatabaseMessages,
|
||||
$wgMsgCacheExpiry,
|
||||
$services->getContentLanguage()
|
||||
);
|
||||
}
|
||||
|
||||
return self::$instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Destroy the singleton instance
|
||||
*
|
||||
* @since 1.18
|
||||
*/
|
||||
public static function destroyInstance() {
|
||||
self::$instance = null;
|
||||
return MediaWikiServices::getInstance()->getMessageCache();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -327,7 +327,7 @@ class ParserTestRunner {
|
|||
// This is essential and overrides disabling of database messages in TestSetup
|
||||
$setup['wgUseDatabaseMessages'] = true;
|
||||
$reset = function () {
|
||||
MessageCache::destroyInstance();
|
||||
MediaWikiServices::getInstance()->resetServiceForTesting( 'MessageCache' );
|
||||
};
|
||||
$setup[] = $reset;
|
||||
$teardown[] = $reset;
|
||||
|
|
|
|||
|
|
@ -406,7 +406,6 @@ class MessageTest extends MediaWikiLangTestCase {
|
|||
$this->setMwGlobals( 'wgRawHtml', true );
|
||||
// We have to reset the core hook registration.
|
||||
// to register the html hook
|
||||
MessageCache::destroyInstance();
|
||||
$this->overrideMwServices();
|
||||
|
||||
$msg = new RawMessage( '<html><script>alert("xss")</script></html>' );
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@
|
|||
use MediaWiki\Interwiki\InterwikiLookup;
|
||||
use MediaWiki\Linker\LinkTarget;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use Wikimedia\TestingAccessWrapper;
|
||||
|
||||
/**
|
||||
* @group Database
|
||||
|
|
@ -22,12 +21,6 @@ class TitleTest extends MediaWikiTestCase {
|
|||
$this->setContentLang( 'en' );
|
||||
}
|
||||
|
||||
protected function tearDown() {
|
||||
// For testNewMainPage
|
||||
MessageCache::destroyInstance();
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers Title::legalChars
|
||||
*/
|
||||
|
|
@ -1302,10 +1295,11 @@ class TitleTest extends MediaWikiTestCase {
|
|||
* @covers Title::newMainPage
|
||||
*/
|
||||
public function testNewMainPage() {
|
||||
$msgCache = TestingAccessWrapper::newFromClass( MessageCache::class );
|
||||
$msgCache->instance = $this->createMock( MessageCache::class );
|
||||
$msgCache->instance->method( 'get' )->willReturn( 'Foresheet' );
|
||||
$msgCache->instance->method( 'transform' )->willReturn( 'Foresheet' );
|
||||
$mock = $this->createMock( MessageCache::class );
|
||||
$mock->method( 'get' )->willReturn( 'Foresheet' );
|
||||
$mock->method( 'transform' )->willReturn( 'Foresheet' );
|
||||
|
||||
$this->setService( 'MessageCache', $mock );
|
||||
|
||||
$this->assertSame(
|
||||
'Foresheet',
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@ class MessageCacheTest extends MediaWikiLangTestCase {
|
|||
protected function setUp() {
|
||||
parent::setUp();
|
||||
$this->configureLanguages();
|
||||
MessageCache::destroyInstance();
|
||||
MessageCache::singleton()->enable();
|
||||
}
|
||||
|
||||
|
|
@ -25,6 +24,7 @@ class MessageCacheTest extends MediaWikiLangTestCase {
|
|||
// let's choose e.g. German (de)
|
||||
$this->setUserLang( 'de' );
|
||||
$this->setContentLang( 'de' );
|
||||
$this->resetServices();
|
||||
}
|
||||
|
||||
function addDBDataOnce() {
|
||||
|
|
@ -152,7 +152,6 @@ class MessageCacheTest extends MediaWikiLangTestCase {
|
|||
] );
|
||||
$this->overrideMwServices();
|
||||
|
||||
MessageCache::destroyInstance();
|
||||
$messageCache = MessageCache::singleton();
|
||||
$messageCache->enable();
|
||||
|
||||
|
|
@ -260,7 +259,6 @@ class MessageCacheTest extends MediaWikiLangTestCase {
|
|||
$importer->import( $importRevision );
|
||||
|
||||
// Now, load the message from the wiki page
|
||||
MessageCache::destroyInstance();
|
||||
$messageCache = MessageCache::singleton();
|
||||
$messageCache->enable();
|
||||
$messageCache = TestingAccessWrapper::newFromObject( $messageCache );
|
||||
|
|
|
|||
Loading…
Reference in a new issue