Allow $wgResourceModuleSkinStyles for any ResourceLoaderFileModule subclass
authorBartosz Dziewoński <matma.rex@gmail.com>
Mon, 5 Jun 2017 23:04:19 +0000 (01:04 +0200)
committerKrinkle <krinklemail@gmail.com>
Wed, 21 Jun 2017 19:37:07 +0000 (19:37 +0000)
All ResourceLoaderFileModule subclasses are now required to support
the 'skinStyles' property in their module definition, and ideally
make use of it (but at least they must not fail violently).

Follow-up to 51eede02837a3a9d378cb35fa7c27a9f4e8e5f4e.

Bug: T167478
Bug: T168088
Change-Id: I35a12a451bf2695818702df1bbd1708173a3f9ce

includes/resourceloader/ResourceLoader.php

index c2faf48..c11fe5b 100644 (file)
@@ -563,7 +563,8 @@ class ResourceLoader implements LoggerAwareInterface {
        }
 
        /**
-        * Return whether the definition of a module corresponds to a simple ResourceLoaderFileModule.
+        * Return whether the definition of a module corresponds to a simple ResourceLoaderFileModule
+        * or one of its subclasses.
         *
         * @param string $name Module name
         * @return bool
@@ -573,11 +574,13 @@ class ResourceLoader implements LoggerAwareInterface {
                        return false;
                }
                $info = $this->moduleInfos[$name];
+               if ( isset( $info['object'] ) ) {
+                       return false;
+               }
                if (
-                       isset( $info['object'] ) ||
-                       // This special case is dumb, but we need $wgResourceModuleSkinStyles
-                       // to work for 'oojs-ui-core.styles'. See T167042.
-                       ( isset( $info['class'] ) && $info['class'] !== 'ResourceLoaderOOUIFileModule' )
+                       isset( $info['class'] ) &&
+                       $info['class'] !== 'ResourceLoaderFileModule' &&
+                       !is_subclass_of( $info['class'], 'ResourceLoaderFileModule' )
                ) {
                        return false;
                }