resourceloader: Add method ResourceLoaderModule::getVary
authorFomafix <fomafix@googlemail.com>
Mon, 24 Jun 2019 14:47:23 +0000 (16:47 +0200)
committerFomafix <fomafix@googlemail.com>
Mon, 24 Jun 2019 16:45:05 +0000 (18:45 +0200)
Change-Id: I79cd3ad7ad65533717bab52462ffaab5b2179789

includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderModule.php

index 8ce4ab9..387e344 100644 (file)
@@ -118,11 +118,10 @@ class ResourceLoader implements LoggerAwareInterface {
                        return;
                }
                $dbr = wfGetDB( DB_REPLICA );
-               $skin = $context->getSkin();
                $lang = $context->getLanguage();
 
                // Batched version of ResourceLoaderModule::getFileDependencies
-               $vary = "$skin|$lang";
+               $vary = ResourceLoaderModule::getVary( $context );
                $res = $dbr->select( 'module_deps', [ 'md_module', 'md_deps' ], [
                                'md_module' => $moduleNames,
                                'md_skin' => $vary,
index 0baed65..a7fee85 100644 (file)
@@ -409,7 +409,7 @@ abstract class ResourceLoaderModule implements LoggerAwareInterface {
         * @return array List of files
         */
        protected function getFileDependencies( ResourceLoaderContext $context ) {
-               $vary = $context->getSkin() . '|' . $context->getLanguage();
+               $vary = self::getVary( $context );
 
                // Try in-object cache first
                if ( !isset( $this->fileDeps[$vary] ) ) {
@@ -444,7 +444,7 @@ abstract class ResourceLoaderModule implements LoggerAwareInterface {
         * @param string[] $files Array of file names
         */
        public function setFileDependencies( ResourceLoaderContext $context, $files ) {
-               $vary = $context->getSkin() . '|' . $context->getLanguage();
+               $vary = self::getVary( $context );
                $this->fileDeps[$vary] = $files;
        }
 
@@ -481,7 +481,7 @@ abstract class ResourceLoaderModule implements LoggerAwareInterface {
                        }
 
                        // The file deps list has changed, we want to update it.
-                       $vary = $context->getSkin() . '|' . $context->getLanguage();
+                       $vary = self::getVary( $context );
                        $cache = ObjectCache::getLocalClusterInstance();
                        $key = $cache->makeKey( __METHOD__, $this->getName(), $vary );
                        $scopeLock = $cache->getScopedLock( $key, 0 );
@@ -1017,4 +1017,18 @@ abstract class ResourceLoaderModule implements LoggerAwareInterface {
        protected static function safeFileHash( $filePath ) {
                return FileContentsHasher::getFileContentsHash( $filePath );
        }
+
+       /**
+        * Get vary string.
+        *
+        * @internal For internal use only.
+        * @param ResourceLoaderContext $context
+        * @return string Vary string
+        */
+       public static function getVary( ResourceLoaderContext $context ) {
+               return implode( '|', [
+                       $context->getSkin(),
+                       $context->getLanguage(),
+               ] );
+       }
 }