Preload the logo using link rel="preload" http header
[lhc/web/wiklou.git] / includes / resourceloader / ResourceLoaderSkinModule.php
index e1df6d9..7d37944 100644 (file)
 
 class ResourceLoaderSkinModule extends ResourceLoaderFileModule {
 
-       /* Methods */
-
        /**
-        * @param $context ResourceLoaderContext
+        * @param ResourceLoaderContext $context
         * @return array
         */
        public function getStyles( ResourceLoaderContext $context ) {
-               $logo = $this->getConfig()->get( 'Logo' );
-               $logoHD = $this->getConfig()->get( 'LogoHD' );
+               $conf = $this->getConfig();
+               $logo = $conf->get( 'Logo' );
+               $logoHD = $conf->get( 'LogoHD' );
+
+               $logo1 = OutputPage::transformResourcePath( $conf, $logo );
+               $logo15 = OutputPage::transformResourcePath( $conf, $logoHD['1.5x'] );
+               $logo2 = OutputPage::transformResourcePath( $conf, $logoHD['2x'] );
+
                $styles = parent::getStyles( $context );
                $styles['all'][] = '.mw-wiki-logo { background-image: ' .
-                       CSSMin::buildUrlValue( $logo ) .
+                       CSSMin::buildUrlValue( $logo1 ) .
                        '; }';
+               // Only 1.5x and 2x are supported
+               // Note: Keep in sync with OutputPage::addLogoPreloadLinkHeaders()
                if ( $logoHD ) {
                        if ( isset( $logoHD['1.5x'] ) ) {
                                $styles[
@@ -44,7 +50,7 @@ class ResourceLoaderSkinModule extends ResourceLoaderFileModule {
                                        '(min-resolution: 1.5dppx), ' .
                                        '(min-resolution: 144dpi)'
                                ][] = '.mw-wiki-logo { background-image: ' .
-                               CSSMin::buildUrlValue( $logoHD['1.5x'] ) . ';' .
+                               CSSMin::buildUrlValue( $logo15 ) . ';' .
                                'background-size: 135px auto; }';
                        }
                        if ( isset( $logoHD['2x'] ) ) {
@@ -54,7 +60,7 @@ class ResourceLoaderSkinModule extends ResourceLoaderFileModule {
                                        '(min-resolution: 2dppx), ' .
                                        '(min-resolution: 192dpi)'
                                ][] = '.mw-wiki-logo { background-image: ' .
-                               CSSMin::buildUrlValue( $logoHD['2x'] ) . ';' .
+                               CSSMin::buildUrlValue( $logo2 ) . ';' .
                                'background-size: 135px auto; }';
                        }
                }
@@ -62,7 +68,7 @@ class ResourceLoaderSkinModule extends ResourceLoaderFileModule {
        }
 
        /**
-        * @param $context ResourceLoaderContext
+        * @param ResourceLoaderContext $context
         * @return bool
         */
        public function isKnownEmpty( ResourceLoaderContext $context ) {
@@ -71,13 +77,12 @@ class ResourceLoaderSkinModule extends ResourceLoaderFileModule {
                return false;
        }
 
-       /**
-        * @param $context ResourceLoaderContext
-        * @return string: Hash
-        */
-       public function getModifiedHash( ResourceLoaderContext $context ) {
-               $logo = $this->getConfig()->get( 'Logo' );
-               $logoHD = $this->getConfig()->get( 'LogoHD' );
-               return md5( parent::getModifiedHash( $context ) . $logo . json_encode( $logoHD ) );
+       public function getDefinitionSummary( ResourceLoaderContext $context ) {
+               $summary = parent::getDefinitionSummary( $context );
+               $summary[] = [
+                       'logo' => $this->getConfig()->get( 'Logo' ),
+                       'logoHD' => $this->getConfig()->get( 'LogoHD' ),
+               ];
+               return $summary;
        }
 }