resourceloader: Instantiate main class via ServiceWiring
[lhc/web/wiklou.git] / includes / resourceloader / ResourceLoaderContext.php
index d41198a..d6573af 100644 (file)
@@ -74,7 +74,7 @@ class ResourceLoaderContext implements MessageLocalizer {
                $this->user = $request->getRawVal( 'user' );
                $this->debug = $request->getFuzzyBool(
                        'debug',
-                       $resourceLoader->getConfig()->get( 'ResourceLoaderDebug' )
+                       $this->getConfig()->get( 'ResourceLoaderDebug' )
                );
                $this->only = $request->getRawVal( 'only', null );
                $this->version = $request->getRawVal( 'version', null );
@@ -89,7 +89,7 @@ class ResourceLoaderContext implements MessageLocalizer {
                $skinnames = Skin::getSkinNames();
                // If no skin is specified, or we don't recognize the skin, use the default skin
                if ( !$this->skin || !isset( $skinnames[$this->skin] ) ) {
-                       $this->skin = $resourceLoader->getConfig()->get( 'DefaultSkin' );
+                       $this->skin = $this->getConfig()->get( 'DefaultSkin' );
                }
        }
 
@@ -133,9 +133,20 @@ class ResourceLoaderContext implements MessageLocalizer {
        /**
         * Return a dummy ResourceLoaderContext object suitable for passing into
         * things that don't "really" need a context.
+        *
+        * Use cases:
+        * - Creating html5shiv script tag in OutputPage.
+        * - FileModule::readStyleFiles (deprecated, to be removed).
+        * - Unit tests (deprecated, create empty instance directly or use RLTestCase).
+        *
         * @return ResourceLoaderContext
         */
        public static function newDummyContext() {
+               // This currently creates a non-empty instance of ResourceLoader (all modules registered),
+               // but that's probably not needed. So once that moves into ServiceWiring, this'll
+               // become more like the EmptyResourceLoader class we have in PHPUnit tests, which
+               // is what this should've had originally. If this turns out to be untrue, change to:
+               // `MediaWikiServices::getInstance()->getResourceLoader()` instead.
                return new self( new ResourceLoader(
                        MediaWikiServices::getInstance()->getMainConfig(),
                        LoggerFactory::getInstance( 'resourceloader' )
@@ -149,6 +160,13 @@ class ResourceLoaderContext implements MessageLocalizer {
                return $this->resourceLoader;
        }
 
+       /**
+        * @return Config
+        */
+       public function getConfig() {
+               return $this->getResourceLoader()->getConfig();
+       }
+
        /**
         * @return WebRequest
         */
@@ -181,7 +199,7 @@ class ResourceLoaderContext implements MessageLocalizer {
                        $lang = $this->getRequest()->getRawVal( 'lang', '' );
                        // Stricter version of RequestContext::sanitizeLangCode()
                        if ( !Language::isValidBuiltInCode( $lang ) ) {
-                               $lang = $this->getResourceLoader()->getConfig()->get( 'LanguageCode' );
+                               $lang = $this->getConfig()->get( 'LanguageCode' );
                        }
                        $this->language = $lang;
                }
@@ -226,7 +244,7 @@ class ResourceLoaderContext implements MessageLocalizer {
         * @return Message
         */
        public function msg( $key ) {
-               return call_user_func_array( 'wfMessage', func_get_args() )
+               return wfMessage( ...func_get_args() )
                        ->inLanguage( $this->getLanguage() )
                        // Use a dummy title because there is no real title
                        // for this endpoint, and the cache won't vary on it