Merge "resourceloader: Use getRawVal instead of slower getVal in StartupModule"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 26 Mar 2018 17:39:18 +0000 (17:39 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 26 Mar 2018 17:39:18 +0000 (17:39 +0000)
includes/resourceloader/ResourceLoaderContext.php
includes/resourceloader/ResourceLoaderStartUpModule.php

index 370046a..c4e9884 100644 (file)
@@ -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' );
index ae9520d..681e8dc 100644 (file)
@@ -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';