core/modules/big_pipe/src/Render/BigPipe.php | 22 +++++++++++++++++-- .../big_pipe_test/src/BigPipeTestController.php | 25 ---------------------- 2 files changed, 20 insertions(+), 27 deletions(-) diff --git a/core/modules/big_pipe/src/Render/BigPipe.php b/core/modules/big_pipe/src/Render/BigPipe.php index 348e759..9337234 100644 --- a/core/modules/big_pipe/src/Render/BigPipe.php +++ b/core/modules/big_pipe/src/Render/BigPipe.php @@ -500,8 +500,26 @@ protected function sendPlaceholders(array $placeholders, array $placeholder_orde */ protected function filterEmbeddedResponse(Request $fake_request, Response $embedded_response) { assert('$embedded_response instanceof \Drupal\Core\Render\HtmlResponse || $embedded_response instanceof \Drupal\Core\Ajax\AjaxResponse'); - $this->requestStack->push($fake_request); - $event = new FilterResponseEvent($this->httpKernel, $fake_request, HttpKernelInterface::SUB_REQUEST, $embedded_response); + return $this->filterResponse($fake_request, HttpKernelInterface::SUB_REQUEST, $embedded_response); + } + + /** + * Filters the given response. + * + * @param \Symfony\Component\HttpFoundation\Request $request + * The request for which a response is being sent. + * @param \Symfony\Component\HttpKernel\HttpKernelInterface::MASTER_REQUEST|\Symfony\Component\HttpKernel\HttpKernelInterface::SUB_REQUEST $request_type + * The request type. + * @param \Symfony\Component\HttpFoundation\Response $response + * The response to filter. + * + * @return \Symfony\Component\HttpFoundation\Response + * The filtered response. + */ + protected function filterResponse(Request $request, $request_type, Response $response) { + assert('$request_type === \Symfony\Component\HttpKernel\HttpKernelInterface::MASTER_REQUEST || $request_type === \Symfony\Component\HttpKernel\HttpKernelInterface::SUB_REQUEST'); + $this->requestStack->push($request); + $event = new FilterResponseEvent($this->httpKernel, $request, $request_type, $response); $this->eventDispatcher->dispatch(KernelEvents::RESPONSE, $event); $filtered_response = $event->getResponse(); $this->requestStack->pop(); diff --git a/core/modules/big_pipe/tests/modules/big_pipe_test/src/BigPipeTestController.php b/core/modules/big_pipe/tests/modules/big_pipe_test/src/BigPipeTestController.php index 55f3098..2230770 100644 --- a/core/modules/big_pipe/tests/modules/big_pipe_test/src/BigPipeTestController.php +++ b/core/modules/big_pipe/tests/modules/big_pipe_test/src/BigPipeTestController.php @@ -5,7 +5,6 @@ use Drupal\big_pipe\Render\BigPipeMarkup; use Drupal\big_pipe\Tests\BigPipePlaceholderTestCases; use Drupal\big_pipe_test\EventSubscriber\BigPipeTestSubscriber; -use Drupal\Core\Url; class BigPipeTestController { @@ -35,10 +34,6 @@ public function test() { // 3. HTML attribute value subset placeholder: CSRF token in link. $build['html_attribute_value_subset'] = $cases['html_attribute_value_subset']->renderArray; - // We can't test CSRF tokens for no-session requests. - if (!$has_session) { - unset($build['html_attribute_value_subset']); - } // 4. Edge case: custom string to be considered as a placeholder that // happens to not be valid HTML. @@ -53,26 +48,6 @@ public function test() { // 7. Exception: placeholder that causes response filter to throw exception. $build['exception__embedded_response'] = $cases['exception__embedded_response']->renderArray; - // Edge case for no-session (and hence anonymous) responses: active links. - // @see \Drupal\Core\EventSubscriber\ActiveLinkResponseFilter - $build['active_link'] = [ - '#type' => 'link', - '#title' => 'This should be marked active', - '#url' => Url::fromRoute('big_pipe_test'), - '#options' => [ - 'set_active_class' => TRUE, - ], - ]; - - $build['inactive_link'] = [ - '#type' => 'link', - '#title' => 'This should be marked inactive', - '#url' => Url::fromRoute(''), - '#options' => [ - 'set_active_class' => TRUE, - ], - ]; - return $build; }