From cc54a481db723918f37ec638de55b32e94ab8d67 Mon Sep 17 00:00:00 2001 From: Alex Pott Date: Fri, 20 Mar 2015 14:28:45 +0000 Subject: [PATCH] Issue #2453891 by Dragooon, Wim Leers: Renderer::getCacheableRenderArray() does not include max-age --- core/lib/Drupal/Core/Render/Renderer.php | 1 + .../Tests/Core/Render/RendererBubblingTest.php | 13 +++++++++++++ .../Core/Render/RendererPostRenderCacheTest.php | 9 +++++++++ 3 files changed, 23 insertions(+) diff --git a/core/lib/Drupal/Core/Render/Renderer.php b/core/lib/Drupal/Core/Render/Renderer.php index 06f9c4f5b65..a7f7346c180 100644 --- a/core/lib/Drupal/Core/Render/Renderer.php +++ b/core/lib/Drupal/Core/Render/Renderer.php @@ -754,6 +754,7 @@ class Renderer implements RendererInterface { '#cache' => [ 'contexts' => $elements['#cache']['contexts'], 'tags' => $elements['#cache']['tags'], + 'max-age' => $elements['#cache']['max-age'], ], ]; } diff --git a/core/tests/Drupal/Tests/Core/Render/RendererBubblingTest.php b/core/tests/Drupal/Tests/Core/Render/RendererBubblingTest.php index 929a307253f..e2cfd915767 100644 --- a/core/tests/Drupal/Tests/Core/Render/RendererBubblingTest.php +++ b/core/tests/Drupal/Tests/Core/Render/RendererBubblingTest.php @@ -10,6 +10,7 @@ namespace Drupal\Tests\Core\Render; use Drupal\Core\KeyValueStore\KeyValueMemoryFactory; use Drupal\Core\Render\Element; use Drupal\Core\State\State; +use Drupal\Core\Cache\Cache; /** * @coversDefaultClass \Drupal\Core\Render\Renderer @@ -114,6 +115,7 @@ class RendererBubblingTest extends RendererTestBase { '#cache' => [ 'contexts' => ['foo'], 'tags' => [], + 'max-age' => Cache::PERMANENT, ], '#post_render_cache' => [], '#markup' => 'parent', @@ -142,6 +144,7 @@ class RendererBubblingTest extends RendererTestBase { '#cache' => [ 'contexts' => [], 'tags' => [], + 'max-age' => Cache::PERMANENT, ], '#post_render_cache' => [], '#markup' => 'parent', @@ -165,6 +168,7 @@ class RendererBubblingTest extends RendererTestBase { '#cache' => [ 'contexts' => [], 'tags' => [], + 'max-age' => Cache::PERMANENT, ], '#post_render_cache' => [], '#markup' => '', @@ -196,6 +200,7 @@ class RendererBubblingTest extends RendererTestBase { 'child' => [ '#cache' => [ 'contexts' => ['foo', 'baz'], + 'max-age' => 3600, ], ], ]; @@ -205,6 +210,7 @@ class RendererBubblingTest extends RendererTestBase { '#cache' => [ 'contexts' => ['bar', 'baz', 'foo'], 'tags' => [], + 'max-age' => 3600, ], '#post_render_cache' => [], '#markup' => 'parent', @@ -251,6 +257,7 @@ class RendererBubblingTest extends RendererTestBase { '#cache' => [ 'contexts' => ['bar', 'foo'], 'tags' => ['dee', 'fiddle', 'har', 'yar'], + 'max-age' => Cache::PERMANENT, ], '#post_render_cache' => [], '#markup' => 'parent', @@ -339,6 +346,7 @@ class RendererBubblingTest extends RendererTestBase { '#cache' => [ 'contexts' => ['user.roles'], 'tags' => ['a', 'b'], + 'max-age' => Cache::PERMANENT, ], '#post_render_cache' => [], '#markup' => 'parent', @@ -362,6 +370,7 @@ class RendererBubblingTest extends RendererTestBase { '#cache' => [ 'contexts' => ['foo', 'user.roles'], 'tags' => ['a', 'b', 'c'], + 'max-age' => Cache::PERMANENT, ], '#post_render_cache' => [], '#markup' => 'parent', @@ -393,6 +402,7 @@ class RendererBubblingTest extends RendererTestBase { '#cache' => [ 'contexts' => ['foo', 'user.roles'], 'tags' => ['a', 'b'], + 'max-age' => Cache::PERMANENT, ], '#post_render_cache' => [], '#markup' => 'parent', @@ -417,6 +427,7 @@ class RendererBubblingTest extends RendererTestBase { '#cache' => [ 'contexts' => ['bar', 'foo', 'user.roles'], 'tags' => ['a', 'b', 'c', 'd'], + 'max-age' => Cache::PERMANENT, ], '#post_render_cache' => [], '#markup' => 'parent', @@ -432,6 +443,7 @@ class RendererBubblingTest extends RendererTestBase { '#cache' => [ 'contexts' => ['bar', 'foo', 'user.roles'], 'tags' => ['a', 'b'], + 'max-age' => Cache::PERMANENT, ], '#post_render_cache' => [], '#markup' => 'parent', @@ -447,6 +459,7 @@ class RendererBubblingTest extends RendererTestBase { '#cache' => [ 'contexts' => ['bar', 'foo', 'user.roles'], 'tags' => ['a', 'b', 'c'], + 'max-age' => Cache::PERMANENT, ], '#post_render_cache' => [], '#markup' => 'parent', diff --git a/core/tests/Drupal/Tests/Core/Render/RendererPostRenderCacheTest.php b/core/tests/Drupal/Tests/Core/Render/RendererPostRenderCacheTest.php index da9f2327748..53e30d6f4c2 100644 --- a/core/tests/Drupal/Tests/Core/Render/RendererPostRenderCacheTest.php +++ b/core/tests/Drupal/Tests/Core/Render/RendererPostRenderCacheTest.php @@ -9,6 +9,7 @@ namespace Drupal\Tests\Core\Render; use Drupal\Component\Utility\Html; use Drupal\Core\Render\Element; +use Drupal\Core\Cache\Cache; /** * @coversDefaultClass \Drupal\Core\Render\Renderer @@ -92,6 +93,7 @@ class RendererPostRenderCacheTest extends RendererTestBase { '#cache' => [ 'contexts' => [], 'tags' => [], + 'max-age' => Cache::PERMANENT, ], ]; $this->assertSame($cached_element, $expected_element, 'The correct data is cached: the stored #markup and #attached properties are not affected by #post_render_cache callbacks.'); @@ -228,6 +230,7 @@ class RendererPostRenderCacheTest extends RendererTestBase { '#cache' => [ 'contexts' => [], 'tags' => [], + 'max-age' => Cache::PERMANENT, ], ]; @@ -323,6 +326,7 @@ class RendererPostRenderCacheTest extends RendererTestBase { '#cache' => [ 'contexts' => [], 'tags' => [], + 'max-age' => Cache::PERMANENT, ], ]; @@ -349,6 +353,7 @@ class RendererPostRenderCacheTest extends RendererTestBase { '#cache' => [ 'contexts' => [], 'tags' => [], + 'max-age' => Cache::PERMANENT, ], ]; @@ -463,6 +468,7 @@ class RendererPostRenderCacheTest extends RendererTestBase { '#cache' => [ 'contexts' => [], 'tags' => [], + 'max-age' => Cache::PERMANENT, ], ]; $this->assertSame($cached_element, $expected_element, 'The correct data is cached: the stored #markup and #attached properties are not affected by #post_render_cache callbacks.'); @@ -561,6 +567,7 @@ class RendererPostRenderCacheTest extends RendererTestBase { '#cache' => [ 'contexts' => [], 'tags' => [], + 'max-age' => Cache::PERMANENT, ], ]; $this->assertSame($cached_element, $expected_element, 'The correct data is cached for the child element: the stored #markup and #attached properties are not affected by #post_render_cache callbacks.'); @@ -589,6 +596,7 @@ class RendererPostRenderCacheTest extends RendererTestBase { '#cache' => [ 'contexts' => [], 'tags' => [], + 'max-age' => Cache::PERMANENT, ], ]; $this->assertSame($cached_element, $expected_element, 'The correct data is cached for the parent element: the stored #markup and #attached properties are not affected by #post_render_cache callbacks.'); @@ -620,6 +628,7 @@ class RendererPostRenderCacheTest extends RendererTestBase { '#cache' => [ 'contexts' => [], 'tags' => [], + 'max-age' => Cache::PERMANENT, ], ]; $this->assertSame($cached_element, $expected_element, 'The correct data is cached for the child element: the stored #markup and #attached properties are not affected by #post_render_cache callbacks.');