diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php index 632c1c3..6495229 100644 --- a/core/lib/Drupal/Core/DrupalKernel.php +++ b/core/lib/Drupal/Core/DrupalKernel.php @@ -461,7 +461,7 @@ public function preHandle(Request $request) { UrlHelper::setAllowedProtocols($allowed_protocols); // Override of Symfony's mime type guesser singleton. - MimeTypeGuesser::overrideSymfonyGuessers(); + MimeTypeGuesser::registerWithSymfonyGuesser($this->container); } /** diff --git a/core/lib/Drupal/Core/File/MimeType/MimeTypeGuesser.php b/core/lib/Drupal/Core/File/MimeType/MimeTypeGuesser.php index 6e31c73..2054463 100644 --- a/core/lib/Drupal/Core/File/MimeType/MimeTypeGuesser.php +++ b/core/lib/Drupal/Core/File/MimeType/MimeTypeGuesser.php @@ -7,6 +7,7 @@ namespace Drupal\Core\File\MimeType; +use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser as SymfonyMimeTypeGuesser; use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface; @@ -90,7 +91,7 @@ protected function sortGuessers() { } /** - * A helper function to override Symfony's default guessers. + * A helper function to register with Symfony's singleton mime type guesser. * * Symfony's default mimetype guessers have dependencies on PHP's fileinfo * extension or being able to run the system command file. Drupal's guesser @@ -98,9 +99,9 @@ protected function sortGuessers() { * * @see \Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser */ - public static function overrideSymfonyGuessers() { + public static function registerWithSymfonyGuesser(ContainerInterface $container) { $singleton = SymfonyMimeTypeGuesser::getInstance(); - $singleton->register(\Drupal::service('file.mime_type.guesser')); + $singleton->register($container->get('file.mime_type.guesser')); } } diff --git a/core/tests/Drupal/Tests/Core/DrupalKernel/MimeTypeGuesserOverrideTest.php b/core/tests/Drupal/Tests/Core/File/MimeTypeGuesserTest.php similarity index 61% rename from core/tests/Drupal/Tests/Core/DrupalKernel/MimeTypeGuesserOverrideTest.php rename to core/tests/Drupal/Tests/Core/File/MimeTypeGuesserTest.php index ee24994..a1bf9c2 100644 --- a/core/tests/Drupal/Tests/Core/DrupalKernel/MimeTypeGuesserOverrideTest.php +++ b/core/tests/Drupal/Tests/Core/File/MimeTypeGuesserTest.php @@ -2,10 +2,10 @@ /** * @file - * Contains \Drupal\Tests\Core\DrupalKernel\MimeTypeGuesserOverrideTest. + * Contains \Drupal\Tests\Core\File\MimeTypeGuesserTest. */ -namespace Drupal\Tests\Core\DrupalKernel; +namespace Drupal\Tests\Core\File; use Drupal\Core\DependencyInjection\ContainerBuilder; use Drupal\Core\File\MimeType\MimeTypeGuesser; @@ -16,39 +16,27 @@ * @coversDefaultClass \Drupal\Core\File\MimeType\MimeTypeGuesser * @group DrupalKernel */ -class MimeTypeGuesserOverrideTest extends UnitTestCase { +class MimeTypeGuesserTest extends UnitTestCase { /** - * {@inheritdoc} - */ - protected function setUp() { - parent::setUp(); - $container = new ContainerBuilder(); - $container->set('file.mime_type.guesser', new MimeTypeGuesser()); - \Drupal::setContainer($container); - } - - /** - * @covers ::overrideSymfonyGuessers + * @covers ::registerWithSymfonyGuesser * * @see Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser */ - public function testSymfonyGuesserOverrider() { + public function testSymfonyGuesserRegistration() { // Make the guessers property accessible on Symfony's MimeTypeGuesser. $symfony_guesser = SymfonyMimeTypeGuesser::getInstance(); - $reflection = new \ReflectionClass($symfony_guesser); - $property = $reflection->getProperty('guessers'); - $property->setAccessible(TRUE); - // Test that the Drupal mime type guess is not being used before the // override method is called. It is possible that the test environment does // not support the default guessers. - $guessers = $property->getValue($symfony_guesser); + $guessers = $this->readAttribute($symfony_guesser, 'guessers'); if (count($guessers)) { $this->assertNotInstanceOf('Drupal\Core\File\MimeType\MimeTypeGuesser', $guessers[0]); } - MimeTypeGuesser::overrideSymfonyGuessers(); - $guessers = $property->getValue($symfony_guesser); + $container = new ContainerBuilder(); + $container->set('file.mime_type.guesser', new MimeTypeGuesser()); + MimeTypeGuesser::registerWithSymfonyGuesser($container); + $guessers = $this->readAttribute($symfony_guesser, 'guessers'); $this->assertInstanceOf('Drupal\Core\File\MimeType\MimeTypeGuesser', $guessers[0]); }