Hygiene: SkinUserPageHelper should support Title = null

In some edge cases the RequestContext::getTitle() can return null
instead of Title object. Similar situations already happened in the
past (see T179833). The RequestContext::getTitle() documentation
says it can return null, therefore code should be resilient and
support such situations, even if there are not common.

Bug: T221792
Change-Id: I842f8c49f20e511fda3b081e59a06586810bc748
This commit is contained in:
Piotr Miazga 2019-05-25 01:42:00 +02:00
parent 7af32bc309
commit 047618c24d
2 changed files with 18 additions and 4 deletions

View File

@ -25,7 +25,7 @@ use User;
class SkinUserPageHelper {
/**
* @var Title
* @var Title|null
*/
private $title;
/**
@ -39,9 +39,9 @@ class SkinUserPageHelper {
private $pageUser;
/**
* @param Title $title
* @param Title|null $title
*/
public function __construct( Title $title ) {
public function __construct( Title $title = null ) {
$this->title = $title;
}
@ -51,7 +51,8 @@ class SkinUserPageHelper {
*/
private function fetchData() {
if ( $this->fetchedData === false ) {
if ( $this->title->inNamespace( NS_USER ) && !$this->title->isSubpage() ) {
if ( $this->title && $this->title->inNamespace( NS_USER ) && !$this->title->isSubpage()
) {
$this->pageUser = $this->buildPageUserObject( $this->title );
}
$this->fetchedData = true;

View File

@ -24,6 +24,19 @@ class SkinUserPageHelperTest extends MediaWikiTestCase {
$this->assertEquals( false, $helper->isUserPage() );
}
/**
* @covers ::isUserPage
* @covers ::fetchData
* @covers ::__construct
*/
public function testTitleIsNull() {
$title = null;
$helper = new SkinUserPageHelper( $title );
$this->assertEquals( null, $helper->getPageUser() );
$this->assertEquals( false, $helper->isUserPage() );
}
/**
* @covers ::isUserPage
* @covers ::fetchData