diff --git a/core/lib/Drupal/Core/Cache/ConditionalCacheabilityMetadataBubblingTrait.php b/core/lib/Drupal/Core/Cache/ConditionalCacheabilityMetadataBubblingTrait.php index 4403da4..b8c4b33 100644 --- a/core/lib/Drupal/Core/Cache/ConditionalCacheabilityMetadataBubblingTrait.php +++ b/core/lib/Drupal/Core/Cache/ConditionalCacheabilityMetadataBubblingTrait.php @@ -22,21 +22,11 @@ * A cacheable dependency object. */ protected function bubble(CacheableDependencyInterface $object) { - if ($this->renderer()->hasRenderContext()) { + if ($this->renderer->hasRenderContext()) { $build = []; CacheableMetadata::createFromObject($object)->applyTo($build); - $this->renderer()->render($build); + $this->renderer->render($build); } } - /** - * Gets the render service. - * - * @return \Drupal\Core\Render\RendererInterface - * The renderer. - */ - protected function renderer() { - return isset($this->renderer) ? $this->renderer : \Drupal::service('renderer'); - } - } diff --git a/core/modules/image/src/ImageServiceProvider.php b/core/modules/image/src/ImageServiceProvider.php index 24b4a4a..694df8d 100644 --- a/core/modules/image/src/ImageServiceProvider.php +++ b/core/modules/image/src/ImageServiceProvider.php @@ -22,6 +22,7 @@ public function register(ContainerBuilder $container) { // Add an ImageItem normalizer. $service_definition = new Definition(ImageItemNormalizer::class, [ new Reference('entity_type.manager'), + new Reference('renderer'), ]); // Priority should be higher than // serializer.normalizer.entity_reference_field_item but lower than diff --git a/core/modules/image/src/Normalizer/ImageItemNormalizer.php b/core/modules/image/src/Normalizer/ImageItemNormalizer.php index 413d637..6bad572 100644 --- a/core/modules/image/src/Normalizer/ImageItemNormalizer.php +++ b/core/modules/image/src/Normalizer/ImageItemNormalizer.php @@ -4,6 +4,7 @@ use Drupal\Core\Cache\ConditionalCacheabilityMetadataBubblingTrait; use Drupal\Core\Entity\EntityTypeManagerInterface; +use Drupal\Core\Render\RendererInterface; use Drupal\file\Entity\File; use Drupal\image\Entity\ImageStyle; use Drupal\image\Plugin\Field\FieldType\ImageItem; @@ -29,13 +30,23 @@ class ImageItemNormalizer extends EntityReferenceFieldItemNormalizer { protected $supportedInterfaceOrClass = ImageItem::class; /** + * The renderer. + * + * @var \Drupal\Core\Render\RendererInterface + */ + protected $renderer; + + /** * Constructs an ImageItemNormalizer object. * * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager * The entity type manager. + * @param \Drupal\Core\Render\RendererInterface $renderer + * The renderer. */ - public function __construct(EntityTypeManagerInterface $entity_type_manager) { + public function __construct(EntityTypeManagerInterface $entity_type_manager, RendererInterface $renderer) { $this->entityTypeManager = $entity_type_manager; + $this->renderer = $renderer; } /** diff --git a/core/modules/image/tests/src/Kernel/Normalizer/ImageFieldItemNormalizerTest.php b/core/modules/image/tests/src/Kernel/Normalizer/ImageItemNormalizerTest.php similarity index 95% rename from core/modules/image/tests/src/Kernel/Normalizer/ImageFieldItemNormalizerTest.php rename to core/modules/image/tests/src/Kernel/Normalizer/ImageItemNormalizerTest.php index 3cb2cce..ee9fcf0 100644 --- a/core/modules/image/tests/src/Kernel/Normalizer/ImageFieldItemNormalizerTest.php +++ b/core/modules/image/tests/src/Kernel/Normalizer/ImageItemNormalizerTest.php @@ -17,7 +17,7 @@ * @coversDefaultClass \Drupal\image\Normalizer\ImageItemNormalizer * @group image */ -class ImageFieldItemNormalizerTest extends KernelTestBase { +class ImageItemNormalizerTest extends KernelTestBase { /** * {@inheritdoc} @@ -32,6 +32,13 @@ class ImageFieldItemNormalizerTest extends KernelTestBase { protected $serializer; /** + * An image for testing. + * + * @var \Drupal\file\FileInterface + */ + protected $image; + + /** * {@inheritdoc} */ protected function setUp() { @@ -66,7 +73,6 @@ protected function setUp() { 'uri' => 'public://example.jpg', ]); $this->image->save(); - $this->imageFactory = $this->container->get('image.factory'); } /**