resourceloader: Make $rl parameter mandatory for MessageBlobStore

Change-Id: I851b2417b7e495a1d0c7ee1aa8be2b2e970840bb
This commit is contained in:
Timo Tijhof 2019-02-16 23:46:30 +00:00 committed by James D. Forrester
parent b4cdfaa095
commit 3edaa0b37c
6 changed files with 15 additions and 33 deletions

View file

@ -255,6 +255,7 @@ because of Phabricator reports.
parameter.
* The ChangeList::insertArticleLink() method, that was deprecated in 1.27, has
been removed.
* MessageBlobStore::__construct() now requires its $rl parameter.
=== Deprecations in 1.33 ===
* The configuration option $wgUseESI has been deprecated, and is expected

View file

@ -37,7 +37,7 @@ use Wikimedia\Rdbms\Database;
*/
class MessageBlobStore implements LoggerAwareInterface {
/* @var ResourceLoader|null */
/* @var ResourceLoader */
private $resourceloader;
/**
@ -51,13 +51,13 @@ class MessageBlobStore implements LoggerAwareInterface {
protected $wanCache;
/**
* @param ResourceLoader|null $rl
* @param ResourceLoader $rl
* @param LoggerInterface|null $logger
*/
public function __construct( ResourceLoader $rl = null, LoggerInterface $logger = null ) {
public function __construct( ResourceLoader $rl, LoggerInterface $logger = null ) {
$this->resourceloader = $rl;
$this->logger = $logger ?: new NullLogger();
$this->wanCache = ObjectCache::getMainWANInstance();
$this->wanCache = MediaWikiServices::getInstance()->getMainWANObjectCache();
}
/**
@ -191,12 +191,6 @@ class MessageBlobStore implements LoggerAwareInterface {
* @return ResourceLoader
*/
protected function getResourceLoader() {
// Back-compat: This class supports instantiation without a ResourceLoader object.
// Lazy-initialise this property because most callers don't need it.
if ( $this->resourceloader === null ) {
$this->logger->warning( __CLASS__ . ' created without a ResourceLoader instance' );
$this->resourceloader = MediaWikiServices::getInstance()->getResourceLoader();
}
return $this->resourceloader;
}

View file

@ -1034,7 +1034,9 @@ class LocalisationCache {
# HACK: If using a null (i.e. disabled) storage backend, we
# can't write to the MessageBlobStore either
if ( $purgeBlobs && !$this->store instanceof LCStoreNull ) {
$blobStore = new MessageBlobStore();
$blobStore = new MessageBlobStore(
MediaWikiServices::getInstance()->getResourceLoader()
);
$blobStore->clear();
}
}

View file

@ -1074,7 +1074,9 @@ abstract class DatabaseUpdater {
}
// ResourceLoader: Message cache
$blobStore = new MessageBlobStore();
$blobStore = new MessageBlobStore(
MediaWikiServices::getInstance()->getResourceLoader()
);
$blobStore->clear();
// ResourceLoader: File-dependency cache

View file

@ -2531,7 +2531,7 @@ class OutputPageTest extends MediaWikiTestCase {
$nonce->setAccessible( true );
$nonce->setValue( $out, 'secret' );
$rl = $out->getResourceLoader();
$rl->setMessageBlobStore( new NullMessageBlobStore() );
$rl->setMessageBlobStore( $this->createMock( MessageBlobStore::class ) );
$rl->register( [
'test.foo' => new ResourceLoaderTestModule( [
'script' => 'mw.test.foo( { a: true } );',
@ -2647,7 +2647,7 @@ class OutputPageTest extends MediaWikiTestCase {
->method( 'buildCssLinksArray' )
->willReturn( [] );
$rl = $op->getResourceLoader();
$rl->setMessageBlobStore( new NullMessageBlobStore() );
$rl->setMessageBlobStore( $this->createMock( MessageBlobStore::class ) );
// Register custom modules
$rl->register( [
@ -3051,21 +3051,3 @@ class OutputPageTest extends MediaWikiTestCase {
return new OutputPage( $context );
}
}
/**
* MessageBlobStore that doesn't do anything
*/
class NullMessageBlobStore extends MessageBlobStore {
public function get( ResourceLoader $resourceLoader, $modules, $lang ) {
return [];
}
public function updateModule( $name, ResourceLoaderModule $module, $lang ) {
}
public function updateMessage( $key ) {
}
public function clear() {
}
}

View file

@ -9,6 +9,7 @@ use Wikimedia\TestingAccessWrapper;
class MessageBlobStoreTest extends PHPUnit\Framework\TestCase {
use MediaWikiCoversValidator;
use PHPUnit4And6Compat;
protected function setUp() {
parent::setUp();
@ -37,7 +38,7 @@ class MessageBlobStoreTest extends PHPUnit\Framework\TestCase {
protected function makeBlobStore( $methods = null, $rl = null ) {
$blobStore = $this->getMockBuilder( MessageBlobStore::class )
->setConstructorArgs( [ $rl ] )
->setConstructorArgs( [ $rl ?? $this->createMock( ResourceLoader::class ) ] )
->setMethods( $methods )
->getMock();