diff --git a/core/modules/node/src/Controller/NodeController.php b/core/modules/node/src/Controller/NodeController.php index 87c9586daee00c3a86be09b2b4a07185b1751577..e860d0c1d2a0adba22f4c95216ef7911c5a7c15c 100644 --- a/core/modules/node/src/Controller/NodeController.php +++ b/core/modules/node/src/Controller/NodeController.php @@ -3,6 +3,7 @@ namespace Drupal\node\Controller; use Drupal\Component\Utility\Xss; +use Drupal\Core\Cache\CacheableMetadata; use Drupal\Core\Controller\ControllerBase; use Drupal\Core\Datetime\DateFormatterInterface; use Drupal\Core\DependencyInjection\ContainerInjectionInterface; @@ -199,7 +200,7 @@ public function revisionOverview(NodeInterface $node) { ], ]; // @todo Simplify once https://www.drupal.org/node/2334319 lands. - $this->renderer->addCacheableDependency($column['data'], $username); + $this->renderer->addCacheableDependency($column['data'], CacheableMetadata::createFromRenderArray($username)); $row[] = $column; if ($is_current_revision) { diff --git a/core/modules/node/tests/src/Functional/NodeRevisionsUiTest.php b/core/modules/node/tests/src/Functional/NodeRevisionsUiTest.php index 88fe3e34e3ed4723a2c864167b15a12d781f0f2b..201d4b6c7d2512cbe2b29bd24d4e386d420b1297 100644 --- a/core/modules/node/tests/src/Functional/NodeRevisionsUiTest.php +++ b/core/modules/node/tests/src/Functional/NodeRevisionsUiTest.php @@ -215,4 +215,20 @@ public function testNodeDuplicateRevisionsTab(): void { $this->assertSession()->elementsCount('xpath', $xpath, 1); } + /** + * Tests the node revisions page is cacheable by dynamic page cache. + */ + public function testNodeRevisionsCacheability(): void { + $this->drupalLogin($this->editor); + $node = $this->drupalCreateNode(); + // Admin paths are always uncacheable by dynamic page cache, swap node + // to non admin theme to test cacheability. + $this->config('node.settings')->set('use_admin_theme', FALSE)->save(); + \Drupal::service('router.builder')->rebuild(); + $this->drupalGet($node->toUrl('version-history')); + $this->assertSession()->responseHeaderEquals('X-Drupal-Dynamic-Cache', 'MISS'); + $this->drupalGet($node->toUrl('version-history')); + $this->assertSession()->responseHeaderEquals('X-Drupal-Dynamic-Cache', 'HIT'); + } + }