Verified Commit 22707d5c authored by Alex Pott's avatar Alex Pott
Browse files

Issue #3437839 by catch, Luke.Leber, thejimbirch: Only send libraries with...

Issue #3437839 by catch, Luke.Leber, thejimbirch: Only send libraries with aggregate URLs that have the aggregate type included
parent 79eed4ac
Loading
Loading
Loading
Loading
Loading
+49 −41
Original line number Diff line number Diff line
@@ -143,10 +143,14 @@ public function getCssAssets(AttachedAssetsInterface $assets, $optimize, Languag
      'preprocess' => TRUE,
    ];

    foreach ($libraries_to_load as $library) {
    foreach ($libraries_to_load as $key => $library) {
      [$extension, $name] = explode('/', $library, 2);
      $definition = $this->libraryDiscovery->getLibraryByName($extension, $name);
      if (isset($definition['css'])) {
      if (empty($definition['css'])) {
        unset($libraries_to_load[$key]);
        continue;
      }

      foreach ($definition['css'] as $options) {
        $options += $default_options;
        // Copy the asset library license information to each file.
@@ -165,7 +169,6 @@ public function getCssAssets(AttachedAssetsInterface $assets, $optimize, Languag
        $css[$options['data']] = $options;
      }
    }
    }

    // Allow modules and themes to alter the CSS assets.
    $this->moduleHandler->alter('css', $css, $assets, $language);
@@ -176,7 +179,7 @@ public function getCssAssets(AttachedAssetsInterface $assets, $optimize, Languag
      uasort($css, [static::class, 'sort']);

      if ($optimize) {
        $css = \Drupal::service('asset.css.collection_optimizer')->optimize($css, $libraries_to_load, $language);
        $css = \Drupal::service('asset.css.collection_optimizer')->optimize($css, array_values($libraries_to_load), $language);
      }
    }
    $this->cache->set($cid, $css, CacheBackendInterface::CACHE_PERMANENT, ['library_info']);
@@ -240,14 +243,21 @@ public function getJsAssets(AttachedAssetsInterface $assets, $optimize, Language
      ];

      // Collect all libraries that contain JS assets and are in the header.
      // Also remove any libraries with no JavaScript from the libraries to
      // load.
      $header_js_libraries = [];
      foreach ($libraries_to_load as $library) {
      foreach ($libraries_to_load as $key => $library) {
        [$extension, $name] = explode('/', $library, 2);
        $definition = $this->libraryDiscovery->getLibraryByName($extension, $name);
        if (isset($definition['js']) && !empty($definition['header'])) {
        if (empty($definition['js'])) {
          unset($libraries_to_load[$key]);
          continue;
        }
        if (!empty($definition['header'])) {
          $header_js_libraries[] = $library;
        }
      }
      $libraries_to_load = array_values($libraries_to_load);
      // The current list of header JS libraries are only those libraries that
      // are in the header, but their dependencies must also be loaded for them
      // to function correctly, so update the list with those.
@@ -256,7 +266,6 @@ public function getJsAssets(AttachedAssetsInterface $assets, $optimize, Language
      foreach ($libraries_to_load as $library) {
        [$extension, $name] = explode('/', $library, 2);
        $definition = $this->libraryDiscovery->getLibraryByName($extension, $name);
        if (isset($definition['js'])) {
        foreach ($definition['js'] as $options) {
          $options += $default_options;
          // Copy the asset library license information to each file.
@@ -279,7 +288,6 @@ public function getJsAssets(AttachedAssetsInterface $assets, $optimize, Language
          $javascript[$options['data']] = $options;
        }
      }
      }

      // Allow modules and themes to alter the JavaScript assets.
      $this->moduleHandler->alter('js', $javascript, $assets, $language);
+4 −4
Original line number Diff line number Diff line
@@ -26,8 +26,8 @@ public function testFrontAndRecipesPages() {
    $performance_data = $this->doRequests();
    $this->assertSame(4, $performance_data->getStylesheetCount());
    $this->assertLessThan(82500, $performance_data->getStylesheetBytes());
    $this->assertSame(2, $performance_data->getScriptCount());
    $this->assertLessThan(14500, $performance_data->getScriptBytes());
    $this->assertSame(1, $performance_data->getScriptCount());
    $this->assertLessThan(7500, $performance_data->getScriptBytes());
  }

  /**
@@ -40,8 +40,8 @@ public function testFrontAndRecipesPagesAuthenticated() {
    $performance_data = $this->doRequests();
    $this->assertSame(4, $performance_data->getStylesheetCount());
    $this->assertLessThan(89500, $performance_data->getStylesheetBytes());
    $this->assertSame(2, $performance_data->getScriptCount());
    $this->assertLessThan(250000, $performance_data->getScriptBytes());
    $this->assertSame(1, $performance_data->getScriptCount());
    $this->assertLessThan(125500, $performance_data->getScriptBytes());
  }

  /**