public function isKnownEmpty( ResourceLoaderContext $context ) {
$revisions = $this->getTitleInfo( $context );
+ // If a module has dependencies it cannot be empty. An empty array will be cast to false
+ if ( $this->getDependencies() ) {
+ return false;
+ }
// For user modules, don't needlessly load if there are no non-empty pages
if ( $this->getGroup() === 'user' ) {
foreach ( $revisions as $revision ) {
* @covers ResourceLoaderWikiModule::isKnownEmpty
* @dataProvider provideIsKnownEmpty
*/
- public function testIsKnownEmpty( $titleInfo, $group, $expected ) {
+ public function testIsKnownEmpty( $titleInfo, $group, $dependencies, $expected ) {
$module = $this->getMockBuilder( ResourceLoaderWikiModule::class )
- ->setMethods( [ 'getTitleInfo', 'getGroup' ] )
+ ->setMethods( [ 'getTitleInfo', 'getGroup', 'getDependencies' ] )
->getMock();
$module->expects( $this->any() )
->method( 'getTitleInfo' )
$module->expects( $this->any() )
->method( 'getGroup' )
->will( $this->returnValue( $group ) );
+ $module->expects( $this->any() )
+ ->method( 'getDependencies' )
+ ->will( $this->returnValue( $dependencies ) );
$context = $this->getMockBuilder( ResourceLoaderContext::class )
->disableOriginalConstructor()
->getMock();
public static function provideIsKnownEmpty() {
return [
// No valid pages
- [ [], 'test1', true ],
+ [ [], 'test1', [], true ],
// 'site' module with a non-empty page
[
[ 'MediaWiki:Common.js' => [ 'page_len' => 1234 ] ],
'site',
+ [],
+ false,
+ ],
+ // 'site' module without existing pages but dependencies
+ [
+ [],
+ 'site',
+ [ 'mobile.css' ],
+ false,
+ ],
+ // 'site' module which is empty but has dependencies
+ [
+ [ 'MediaWiki:Common.js' => [ 'page_len' => 0 ] ],
+ 'site',
+ [ 'mobile.css' ],
false,
],
// 'site' module with an empty page
[
[ 'MediaWiki:Foo.js' => [ 'page_len' => 0 ] ],
'site',
+ [],
false,
],
// 'user' module with a non-empty page
[
[ 'User:Example/common.js' => [ 'page_len' => 25 ] ],
'user',
+ [],
false,
],
// 'user' module with an empty page
[
[ 'User:Example/foo.js' => [ 'page_len' => 0 ] ],
'user',
+ [],
true,
],
];