From cfdc440d40a02675189ddc47edbf19d339bcb9d7 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Tue, 27 Mar 2018 14:28:03 -0700 Subject: [PATCH] resourceloader: Replace ClientHtml 'target' param with 'options' array In preparation for passing down 'safemode' from OutputPage. Only used in one place in Wikimedia Git: OutputPage::getRlClient(). Bug: T185303 Change-Id: If01eca96986ff8d7dcdaab6910bf183ba7c7311f --- includes/OutputPage.php | 4 +++- .../resourceloader/ResourceLoaderClientHtml.php | 17 ++++++++++------- .../ResourceLoaderClientHtmlTest.php | 4 ++-- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/includes/OutputPage.php b/includes/OutputPage.php index 4d6db4c35c..99dd4a7c0e 100644 --- a/includes/OutputPage.php +++ b/includes/OutputPage.php @@ -2788,7 +2788,9 @@ class OutputPage extends ContextSource { $this->rlUserModuleState = $exemptStates['user'] = $userState; } - $rlClient = new ResourceLoaderClientHtml( $context, $this->getTarget() ); + $rlClient = new ResourceLoaderClientHtml( $context, [ + 'target' => $this->getTarget(), + ] ); $rlClient->setConfig( $this->getJSVars() ); $rlClient->setModules( $this->getModules( /*filter*/ true ) ); $rlClient->setModuleStyles( $moduleStyles ); diff --git a/includes/resourceloader/ResourceLoaderClientHtml.php b/includes/resourceloader/ResourceLoaderClientHtml.php index a9e2f92488..545fd3bda7 100644 --- a/includes/resourceloader/ResourceLoaderClientHtml.php +++ b/includes/resourceloader/ResourceLoaderClientHtml.php @@ -33,8 +33,8 @@ class ResourceLoaderClientHtml { /** @var ResourceLoader */ private $resourceLoader; - /** @var string|null */ - private $target; + /** @var array */ + private $options; /** @var array */ private $config = []; @@ -56,12 +56,13 @@ class ResourceLoaderClientHtml { /** * @param ResourceLoaderContext $context - * @param string|null $target [optional] Custom 'target' parameter for the startup module + * @param array $options [optional] Array of options + * - 'target': Custom parameter passed to StartupModule. */ - public function __construct( ResourceLoaderContext $context, $target = null ) { + public function __construct( ResourceLoaderContext $context, array $options = [] ) { $this->context = $context; $this->resourceLoader = $context->getResourceLoader(); - $this->target = $target; + $this->options = $options; } /** @@ -309,8 +310,10 @@ class ResourceLoaderClientHtml { } // Async scripts. Once the startup is loaded, inline RLQ scripts will run. - // Pass-through a custom target from OutputPage (T143066). - $startupQuery = $this->target ? [ 'target' => $this->target ] : []; + // Pass-through a custom 'target' from OutputPage (T143066). + $startupQuery = isset( $this->options['target'] ) + ? [ 'target' => (string)$this->options['target'] ] + : []; $chunks[] = $this->getLoad( 'startup', ResourceLoaderModule::TYPE_SCRIPTS, diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderClientHtmlTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderClientHtmlTest.php index 4f66bd9744..07956f1d1c 100644 --- a/tests/phpunit/includes/resourceloader/ResourceLoaderClientHtmlTest.php +++ b/tests/phpunit/includes/resourceloader/ResourceLoaderClientHtmlTest.php @@ -225,7 +225,7 @@ class ResourceLoaderClientHtmlTest extends PHPUnit\Framework\TestCase { public function testGetHeadHtmlWithTarget() { $client = new ResourceLoaderClientHtml( self::makeContext(), - 'example' + [ 'target' => 'example' ] ); // phpcs:disable Generic.Files.LineLength @@ -244,7 +244,7 @@ class ResourceLoaderClientHtmlTest extends PHPUnit\Framework\TestCase { public function testGetHeadHtmlWithNullTarget() { $client = new ResourceLoaderClientHtml( self::makeContext(), - null + [ 'target' => null ] ); // phpcs:disable Generic.Files.LineLength -- 2.20.1