From 558b00758557a638ad8ec96812100a45a27c69df Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Wed, 21 Mar 2018 20:35:16 -0700 Subject: [PATCH] resourceloader: Use getRawVal instead of slower getVal in StartupModule For the same reasons as in ResourceLoaderContext. The only valid values here are known strings like "desktop" and "mobile". No Language/UTF normalisation required. Ensures that Language instance won't get initialised just for this. Change-Id: If219463d80a66132786710184329388080fbe713 --- includes/resourceloader/ResourceLoaderContext.php | 8 ++------ includes/resourceloader/ResourceLoaderStartUpModule.php | 4 +++- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/includes/resourceloader/ResourceLoaderContext.php b/includes/resourceloader/ResourceLoaderContext.php index 370046aab4..c4e9884a1e 100644 --- a/includes/resourceloader/ResourceLoaderContext.php +++ b/includes/resourceloader/ResourceLoaderContext.php @@ -63,12 +63,8 @@ class ResourceLoaderContext implements MessageLocalizer { $this->request = $request; $this->logger = $resourceLoader->getLogger(); - // Future developers: Avoid use of getVal() in this class, which performs - // expensive UTF normalisation by default. Use getRawVal() instead. - // Values here are either one of a finite number of internal IDs, - // or previously-stored user input (e.g. titles, user names) that were passed - // to this endpoint by ResourceLoader itself from the canonical value. - // Values do not come directly from user input and need not match. + // Future developers: Use WebRequest::getRawVal() instead getVal(). + // The getVal() method performs slow Language+UTF logic. (f303bb9360) // List of modules $modules = $request->getRawVal( 'modules' ); diff --git a/includes/resourceloader/ResourceLoaderStartUpModule.php b/includes/resourceloader/ResourceLoaderStartUpModule.php index ae9520d1a6..681e8dc005 100644 --- a/includes/resourceloader/ResourceLoaderStartUpModule.php +++ b/includes/resourceloader/ResourceLoaderStartUpModule.php @@ -206,7 +206,9 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { */ public function getModuleRegistrations( ResourceLoaderContext $context ) { $resourceLoader = $context->getResourceLoader(); - $target = $context->getRequest()->getVal( 'target', 'desktop' ); + // Future developers: Use WebRequest::getRawVal() instead getVal(). + // The getVal() method performs slow Language+UTF logic. (f303bb9360) + $target = $context->getRequest()->getRawVal( 'target', 'desktop' ); // Bypass target filter if this request is Special:JavaScriptTest. // To prevent misuse in production, this is only allowed if testing is enabled server-side. $byPassTargetFilter = $this->getConfig()->get( 'EnableJavaScriptTest' ) && $target === 'test'; -- 2.20.1