From 414748a59c7260f8664c9b10754909cb7cf695ad Mon Sep 17 00:00:00 2001
From: Dave Long <dave@longwaveconsulting.com>
Date: Fri, 21 Mar 2025 09:38:13 +0000
Subject: [PATCH] Issue #3513317 by annmarysruthy, larowlan, wim leers:
 ImageItem::defaultStorageSettings() should override display_default

(cherry picked from commit 7265831241910980852d79e5188b4b7b3960400d)
---
 .../src/Plugin/Field/FieldType/ImageItem.php  |  1 +
 .../image/tests/src/Kernel/ImageItemTest.php  | 29 ++++++++++++++++++-
 2 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php b/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php
index 29fa146d4874..1742f56fe282 100644
--- a/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php
+++ b/core/modules/image/src/Plugin/Field/FieldType/ImageItem.php
@@ -72,6 +72,7 @@ public static function defaultStorageSettings() {
         'width' => NULL,
         'height' => NULL,
       ],
+      'display_default' => TRUE,
     ] + parent::defaultStorageSettings();
   }
 
diff --git a/core/modules/image/tests/src/Kernel/ImageItemTest.php b/core/modules/image/tests/src/Kernel/ImageItemTest.php
index aad34b9efab4..0598b25e9db8 100644
--- a/core/modules/image/tests/src/Kernel/ImageItemTest.php
+++ b/core/modules/image/tests/src/Kernel/ImageItemTest.php
@@ -5,14 +5,20 @@
 namespace Drupal\Tests\image\Kernel;
 
 use Drupal\Core\Database\Database;
+use Drupal\Core\Entity\ContentEntityForm;
+use Drupal\Core\Entity\Entity\EntityFormDisplay;
+use Drupal\Core\Entity\EntityDisplayRepositoryInterface;
+use Drupal\Core\Entity\EntityTypeManagerInterface;
 use Drupal\Core\Field\FieldItemInterface;
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
+use Drupal\Core\Form\FormBuilderInterface;
+use Drupal\Core\Form\FormState;
 use Drupal\entity_test\Entity\EntityTest;
 use Drupal\field\Entity\FieldConfig;
-use Drupal\Tests\field\Kernel\FieldKernelTestBase;
 use Drupal\field\Entity\FieldStorageConfig;
 use Drupal\file\Entity\File;
+use Drupal\Tests\field\Kernel\FieldKernelTestBase;
 use Drupal\user\Entity\Role;
 
 /**
@@ -92,6 +98,9 @@ protected function setUp(): void {
     ]);
     $this->image->save();
     $this->imageFactory = $this->container->get('image.factory');
+    $this->container->get(EntityDisplayRepositoryInterface::class)
+      ->getFormDisplay('entity_test', 'entity_test')
+      ->setComponent('image_test', ['type' => 'image_image'])->save();
   }
 
   /**
@@ -198,4 +207,22 @@ public function testImageItemMalformed(): void {
     $this->assertEmpty($entity->image_test->height);
   }
 
+  /**
+   * Tests display_default.
+   */
+  public function testDisplayDefaultValue(): void {
+    $entity = EntityTest::create([
+      'name' => $this->randomMachineName(),
+    ]);
+    $form_object = $this->container->get(EntityTypeManagerInterface::class)->getFormObject('entity_test', 'default');
+    \assert($form_object instanceof ContentEntityForm);
+    $form_object->setEntity($entity);
+    $form_display = EntityFormDisplay::collectRenderDisplay($entity, 'default');
+    \assert($form_display instanceof EntityFormDisplay);
+    $form_state = new FormState();
+    $form_object->setFormDisplay($form_display, $form_state);
+    $this->container->get(FormBuilderInterface::class)->buildForm($form_object, $form_state);
+    self::assertEquals(1, $form_state->getValue(['image_test', 0, 'display']));
+  }
+
 }
-- 
GitLab