diff --git a/core/modules/image/src/ImageServiceProvider.php b/core/modules/image/src/ImageServiceProvider.php index 04923cf..7e459b9 100644 --- a/core/modules/image/src/ImageServiceProvider.php +++ b/core/modules/image/src/ImageServiceProvider.php @@ -4,13 +4,14 @@ use Drupal\Core\DependencyInjection\ContainerBuilder; use Drupal\Core\DependencyInjection\ServiceProviderInterface; -use Drupal\image\Normalizer\ImageItemHalNormalizer; -use Drupal\image\Normalizer\ImageItemNormalizer; +use Drupal\image\Normalizer\ImageItemWithStylesHalNormalizer; +use Drupal\image\Normalizer\ImageItemWithStylesNormalizer; use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\Reference; /** - * Provides a normalizer service for image field items. + * Provides additional normalizer services for image field items when the + * serialization and hal modules are enabled. */ class ImageServiceProvider implements ServiceProviderInterface { @@ -21,7 +22,7 @@ public function register(ContainerBuilder $container) { $modules = $container->getParameter('container.modules'); if (isset($modules['serialization'])) { // Add an ImageItem normalizer. - $service_definition = new Definition(ImageItemNormalizer::class, [ + $service_definition = new Definition(ImageItemWithStylesNormalizer::class, [ new Reference('renderer'), ]); // Priority should be higher than @@ -32,7 +33,7 @@ public function register(ContainerBuilder $container) { } if (isset($modules['hal'])) { // Add an ImageItem normalizer. - $service_definition = new Definition(ImageItemHalNormalizer::class, [ + $service_definition = new Definition(ImageItemWithStylesHalNormalizer::class, [ new Reference('serialization.link_manager'), new Reference('serializer.entity_resolver'), new Reference('renderer'), diff --git a/core/modules/image/src/Normalizer/ImageItemHalNormalizer.php b/core/modules/image/src/Normalizer/ImageItemWithStylesHalNormalizer.php similarity index 80% rename from core/modules/image/src/Normalizer/ImageItemHalNormalizer.php rename to core/modules/image/src/Normalizer/ImageItemWithStylesHalNormalizer.php index c5b4c4e..dfc1451 100644 --- a/core/modules/image/src/Normalizer/ImageItemHalNormalizer.php +++ b/core/modules/image/src/Normalizer/ImageItemWithStylesHalNormalizer.php @@ -10,13 +10,13 @@ use Drupal\serialization\EntityResolver\EntityResolverInterface; /** - * ImageItem HAL normalizer to provide URLs to image styles. + * Decorator for ImageItem HAL normalizer providing URLs to image styles. */ -class ImageItemHalNormalizer extends EntityReferenceItemNormalizer { +class ImageItemWithStylesHalNormalizer extends EntityReferenceItemNormalizer { use ConditionalCacheabilityMetadataBubblingTrait; - use ImageItemNormalizerTrait; + use ImageItemWithStylesNormalizerTrait; /** * {@inheritdoc} @@ -33,7 +33,7 @@ class ImageItemHalNormalizer extends EntityReferenceItemNormalizer { /** * Constructs an ImageItemHalNormalizer object. * - * @param Drupal\serialization\LinkManager\LinkManager $link_manager + * @param Drupal\serialization\LinkManager\LinkManagerInterface $link_manager * The hypermedia link manager. * @param \Drupal\serialization\EntityResolver\EntityResolverInterface $entity_Resolver * The entity resolver. @@ -52,7 +52,7 @@ public function normalize($object, $format = NULL, array $context = []) { $data = parent::normalize($object, $format, $context); if (!empty($data['_embedded'])) { $field_key = array_keys($data['_embedded'])[0]; - $this->addImageStyles($object, $data['_embedded'][$field_key][0]); + $this->decorateWithImageStyles($object, $data['_embedded'][$field_key][0]); } return $data; } diff --git a/core/modules/image/src/Normalizer/ImageItemNormalizer.php b/core/modules/image/src/Normalizer/ImageItemWithStylesNormalizer.php similarity index 75% rename from core/modules/image/src/Normalizer/ImageItemNormalizer.php rename to core/modules/image/src/Normalizer/ImageItemWithStylesNormalizer.php index 1754dd3..73fed29 100644 --- a/core/modules/image/src/Normalizer/ImageItemNormalizer.php +++ b/core/modules/image/src/Normalizer/ImageItemWithStylesNormalizer.php @@ -8,13 +8,13 @@ use Drupal\serialization\Normalizer\EntityReferenceFieldItemNormalizer; /** - * ImageItem normalizer to provide URLs to image styles. + * Decorator for ImageItem normalizer providing URLs to image styles. */ -class ImageItemNormalizer extends EntityReferenceFieldItemNormalizer { +class ImageItemWithStylesNormalizer extends EntityReferenceFieldItemNormalizer { use ConditionalCacheabilityMetadataBubblingTrait; - use ImageItemNormalizerTrait; + use ImageItemWithStylesNormalizerTrait; /** * {@inheritdoc} @@ -29,7 +29,7 @@ class ImageItemNormalizer extends EntityReferenceFieldItemNormalizer { protected $renderer; /** - * Constructs an ImageItemNormalizer object. + * Constructs an ImageItemWithStylesNormalizer object. * * @param \Drupal\Core\Render\RendererInterface $renderer * The renderer. @@ -44,7 +44,7 @@ public function __construct(RendererInterface $renderer) { public function normalize($field_item, $format = NULL, array $context = []) { $data = parent::normalize($field_item, $format, $context); if (!$field_item->isEmpty()) { - $this->addImageStyles($field_item, $data); + $this->decorateWithImageStyles($field_item, $data); } } diff --git a/core/modules/image/src/Normalizer/ImageItemNormalizerTrait.php b/core/modules/image/src/Normalizer/ImageItemWithStylesNormalizerTrait.php similarity index 80% rename from core/modules/image/src/Normalizer/ImageItemNormalizerTrait.php rename to core/modules/image/src/Normalizer/ImageItemWithStylesNormalizerTrait.php index 33ef4d5..66868bd 100644 --- a/core/modules/image/src/Normalizer/ImageItemNormalizerTrait.php +++ b/core/modules/image/src/Normalizer/ImageItemWithStylesNormalizerTrait.php @@ -7,9 +7,9 @@ use Drupal\image\Plugin\Field\FieldType\ImageItem; /** - * A trait for providing ItemItem normalizing methods. + * A trait providing ItemItem normalizing decorating methods. */ -trait ImageItemNormalizerTrait { +trait ImageItemWithStylesNormalizerTrait { /** * Adds image style information to normalized ImageItem field data. @@ -19,17 +19,17 @@ * @param array $normalization * The image field normalization to add image style information to. */ - protected function addImageStyles(ImageItem $item, array &$data) { + protected function decorateWithImageStyles(ImageItem $item, array &$normalization) { /** @var \Drupal\file\FileInterface $image */ if ($image = File::load($item->target_id)) { $uri = $image->getFileUri(); /** @var \Drupal\image\ImageStyleInterface[] $styles */ $styles = ImageStyle::loadMultiple(); - $data['image_styles'] = []; + $normalization['image_styles'] = []; foreach ($styles as $id => $style) { $dimensions = ['width' => $item->width, 'height' => $item->height]; $style->transformDimensions($dimensions, $uri); - $data['image_styles'][$id] = [ + $normalization['image_styles'][$id] = [ 'url' => file_url_transform_relative($style->buildUrl($uri)), 'height' => empty($dimensions['height']) ? NULL : $dimensions['height'], 'width' => empty($dimensions['width']) ? NULL : $dimensions['width'], diff --git a/core/modules/image/tests/src/Kernel/Normalizer/ImageItemHalNormalizerTest.php b/core/modules/image/tests/src/Kernel/Normalizer/ImageItemWithStylesHalNormalizerTest.php similarity index 67% rename from core/modules/image/tests/src/Kernel/Normalizer/ImageItemHalNormalizerTest.php rename to core/modules/image/tests/src/Kernel/Normalizer/ImageItemWithStylesHalNormalizerTest.php index 9bc916e..00bcab3 100644 --- a/core/modules/image/tests/src/Kernel/Normalizer/ImageItemHalNormalizerTest.php +++ b/core/modules/image/tests/src/Kernel/Normalizer/ImageItemWithStylesHalNormalizerTest.php @@ -3,10 +3,10 @@ namespace Drupal\Tests\image\Kernel\Normalizer; /** - * @coversDefaultClass \Drupal\image\Normalizer\ImageItemHalNormalizer + * @coversDefaultClass \Drupal\image\Normalizer\ImageItemWithStylesHalNormalizer * @group image */ -class ImageItemHalNormalizerTest extends ImageItemNormalizerTestBase { +class ImageItemWithStylesHalNormalizerTest extends ImageItemWithStylesNormalizerTestBase { /** * {@inheritdoc} @@ -16,7 +16,7 @@ class ImageItemHalNormalizerTest extends ImageItemNormalizerTestBase { /** * {@inheritdoc} */ - public static $modules = ['system', 'entity_test', 'serialization', 'image', 'field', 'user', 'file', 'hal', 'rest']; + public static $modules = ['hal']; /** * {@inheritdoc} diff --git a/core/modules/image/tests/src/Kernel/Normalizer/ImageItemNormalizerTest.php b/core/modules/image/tests/src/Kernel/Normalizer/ImageItemWithStylesNormalizerTest.php similarity index 65% rename from core/modules/image/tests/src/Kernel/Normalizer/ImageItemNormalizerTest.php rename to core/modules/image/tests/src/Kernel/Normalizer/ImageItemWithStylesNormalizerTest.php index 774afed..4eb589e 100644 --- a/core/modules/image/tests/src/Kernel/Normalizer/ImageItemNormalizerTest.php +++ b/core/modules/image/tests/src/Kernel/Normalizer/ImageItemWithStylesNormalizerTest.php @@ -3,10 +3,10 @@ namespace Drupal\Tests\image\Kernel\Normalizer; /** - * @coversDefaultClass \Drupal\image\Normalizer\ImageItemNormalizer + * @coversDefaultClass \Drupal\image\Normalizer\ImageItemWithStylesNormalizer * @group image */ -class ImageItemNormalizerTest extends ImageItemNormalizerTestBase { +class ImageItemWithStylesNormalizerTest extends ImageItemWithStylesNormalizerTestBase { /** * {@inheritdoc} diff --git a/core/modules/image/tests/src/Kernel/Normalizer/ImageItemNormalizerTestBase.php b/core/modules/image/tests/src/Kernel/Normalizer/ImageItemWithStylesNormalizerTestBase.php similarity index 94% rename from core/modules/image/tests/src/Kernel/Normalizer/ImageItemNormalizerTestBase.php rename to core/modules/image/tests/src/Kernel/Normalizer/ImageItemWithStylesNormalizerTestBase.php index 7e989e1..2a3b38d 100644 --- a/core/modules/image/tests/src/Kernel/Normalizer/ImageItemNormalizerTestBase.php +++ b/core/modules/image/tests/src/Kernel/Normalizer/ImageItemWithStylesNormalizerTestBase.php @@ -14,9 +14,9 @@ use Drupal\KernelTests\KernelTestBase; /** - * Base class for ItemItemNormalizer testing. + * Base class for ItemItemWithStylesNormalizer testing. */ -abstract class ImageItemNormalizerTestBase extends KernelTestBase { +abstract class ImageItemWithStylesNormalizerTestBase extends KernelTestBase { /** * {@inheritdoc} @@ -38,7 +38,7 @@ protected $image; /** - * The format to use in normalization. + * The format whose normalization to test. * * @var string */ @@ -93,6 +93,10 @@ protected function setUp() { } /** + * Test that the decorator provides additional image style information. + * + * See ImageItemWithStylesNormalizerTrait + * * @covers ::normalize */ public function testNormalize() {