resourceloader: Add coverage for internal Context::getReqBase()
[lhc/web/wiklou.git] / includes / resourceloader / ResourceLoaderContext.php
index f57f13b..c3948cb 100644 (file)
@@ -30,6 +30,9 @@ use MediaWiki\MediaWikiServices;
  * of a specific loader request.
  */
 class ResourceLoaderContext implements MessageLocalizer {
+       const DEFAULT_LANG = 'qqx';
+       const DEFAULT_SKIN = 'fallback';
+
        protected $resourceLoader;
        protected $request;
        protected $logger;
@@ -63,8 +66,8 @@ class ResourceLoaderContext implements MessageLocalizer {
                $this->request = $request;
                $this->logger = $resourceLoader->getLogger();
 
-               // Future developers: Use WebRequest::getRawVal() instead of getVal().
-               // The getVal() method performs slow Language+UTF logic. (f303bb9360)
+               // Optimisation: Use WebRequest::getRawVal() instead of getVal(). We don't
+               // need the slow Language+UTF logic meant for user input here. (f303bb9360)
 
                // List of modules
                $modules = $request->getRawVal( 'modules' );
@@ -73,8 +76,8 @@ class ResourceLoaderContext implements MessageLocalizer {
                // Various parameters
                $this->user = $request->getRawVal( 'user' );
                $this->debug = $request->getRawVal( 'debug' ) === 'true';
-               $this->only = $request->getRawVal( 'only', null );
-               $this->version = $request->getRawVal( 'version', null );
+               $this->only = $request->getRawVal( 'only' );
+               $this->version = $request->getRawVal( 'version' );
                $this->raw = $request->getFuzzyBool( 'raw' );
 
                // Image requests
@@ -88,23 +91,10 @@ class ResourceLoaderContext implements MessageLocalizer {
                        // The 'skin' parameter is required. (Not yet enforced.)
                        // For requests without a known skin specified,
                        // use MediaWiki's 'fallback' skin for skin-specific decisions.
-                       $this->skin = 'fallback';
+                       $this->skin = self::DEFAULT_SKIN;
                }
        }
 
-       /**
-        * Reverse the process done by ResourceLoader::makePackedModulesString().
-        *
-        * @deprecated since 1.33 Use ResourceLoader::expandModuleNames instead.
-        * @param string $modules Packed module name list
-        * @return array Array of module names
-        * @codeCoverageIgnore
-        */
-       public static function expandModuleNames( $modules ) {
-               wfDeprecated( __METHOD__, '1.33' );
-               return ResourceLoader::expandModuleNames( $modules );
-       }
-
        /**
         * Return a dummy ResourceLoaderContext object suitable for passing into
         * things that don't "really" need a context.
@@ -137,8 +127,10 @@ class ResourceLoaderContext implements MessageLocalizer {
         * @deprecated since 1.34 Use ResourceLoaderModule::getConfig instead
         * inside module methods. Use ResourceLoader::getConfig elsewhere.
         * @return Config
+        * @codeCoverageIgnore
         */
        public function getConfig() {
+               wfDeprecated( __METHOD__, '1.34' );
                return $this->getResourceLoader()->getConfig();
        }
 
@@ -178,7 +170,7 @@ class ResourceLoaderContext implements MessageLocalizer {
                        if ( !Language::isValidBuiltInCode( $lang ) ) {
                                // The 'lang' parameter is required. (Not yet enforced.)
                                // If omitted, localise with the dummy language code.
-                               $lang = 'qqx';
+                               $lang = self::DEFAULT_LANG;
                        }
                        $this->language = $lang;
                }
@@ -407,4 +399,24 @@ class ResourceLoaderContext implements MessageLocalizer {
                }
                return $this->hash;
        }
+
+       /**
+        * Get the request base parameters, omitting any defaults.
+        *
+        * @internal For internal use by ResourceLoaderStartUpModule only
+        * @return array
+        */
+       public function getReqBase() {
+               $reqBase = [];
+               if ( $this->getLanguage() !== self::DEFAULT_LANG ) {
+                       $reqBase['lang'] = $this->getLanguage();
+               }
+               if ( $this->getSkin() !== self::DEFAULT_SKIN ) {
+                       $reqBase['skin'] = $this->getSkin();
+               }
+               if ( $this->getDebug() ) {
+                       $reqBase['debug'] = 'true';
+               }
+               return $reqBase;
+       }
 }