htmlResponseAttachmentsProcessor = $html_response_attachments_processor; parent::__construct($asset_resolver, $config_factory, $css_collection_renderer, $js_collection_renderer, $request_stack, $renderer, $module_handler); } /** * {@inheritdoc} */ public function processAttachments(AttachmentsInterface $response) { assert($response instanceof HtmlResponse); // First, render the actual placeholders; this will cause the BigPipe // placeholder strategy to generate BigPipe placeholders. We need those to // exist already so that we can extract BigPipe placeholders. This is hence // a bit of unfortunate but necessary duplication. // @see \Drupal\big_pipe\Render\Placeholder\BigPipeStrategy // (Note this is copied verbatim from // \Drupal\Core\Render\HtmlResponseAttachmentsProcessor::processAttachments) try { $response = $this->renderPlaceholders($response); } catch (EnforcedResponseException $e) { return $e->getResponse(); } // Extract BigPipe placeholders; HtmlResponseAttachmentsProcessor does not // know (nor need to know) how to process those. $attachments = $response->getAttachments(); $big_pipe_placeholders = []; $big_pipe_nojs_placeholders = []; if (isset($attachments['big_pipe_placeholders'])) { $big_pipe_placeholders = $attachments['big_pipe_placeholders']; unset($attachments['big_pipe_placeholders']); } if (isset($attachments['big_pipe_nojs_placeholders'])) { $big_pipe_nojs_placeholders = $attachments['big_pipe_nojs_placeholders']; unset($attachments['big_pipe_nojs_placeholders']); } $html_response = clone $response; $html_response->setAttachments($attachments); // Call HtmlResponseAttachmentsProcessor to process all other attachments. $processed_html_response = $this->htmlResponseAttachmentsProcessor->processAttachments($html_response); // Restore BigPipe placeholders. $attachments = $processed_html_response->getAttachments(); $big_pipe_response = clone $processed_html_response; if (count($big_pipe_placeholders)) { $attachments['big_pipe_placeholders'] = $big_pipe_placeholders; } if (count($big_pipe_nojs_placeholders)) { $attachments['big_pipe_nojs_placeholders'] = $big_pipe_nojs_placeholders; } $big_pipe_response->setAttachments($attachments); return $big_pipe_response; } }