Update to Drupal 8.1.1. For more information, see https://www.drupal.org/node/2718713
This commit is contained in:
parent
c0a0d5a94c
commit
9eae24d844
669 changed files with 3873 additions and 1553 deletions
|
@ -11,7 +11,7 @@ services:
|
|||
- { name: placeholder_strategy, priority: 0 }
|
||||
big_pipe:
|
||||
class: Drupal\big_pipe\Render\BigPipe
|
||||
arguments: ['@renderer', '@session', '@request_stack', '@http_kernel', '@event_dispatcher']
|
||||
arguments: ['@renderer', '@session', '@request_stack', '@http_kernel', '@event_dispatcher', '@config.factory']
|
||||
html_response.attachments_processor.big_pipe:
|
||||
public: false
|
||||
class: \Drupal\big_pipe\Render\BigPipeResponseAttachmentsProcessor
|
||||
|
|
|
@ -8,6 +8,7 @@ use Drupal\Core\Ajax\AjaxResponse;
|
|||
use Drupal\Core\Ajax\ReplaceCommand;
|
||||
use Drupal\Core\Asset\AttachedAssets;
|
||||
use Drupal\Core\Asset\AttachedAssetsInterface;
|
||||
use Drupal\Core\Config\ConfigFactoryInterface;
|
||||
use Drupal\Core\Render\HtmlResponse;
|
||||
use Drupal\Core\Render\RendererInterface;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
|
@ -73,6 +74,13 @@ class BigPipe implements BigPipeInterface {
|
|||
*/
|
||||
protected $eventDispatcher;
|
||||
|
||||
/**
|
||||
* The config factory.
|
||||
*
|
||||
* @var \Drupal\Core\Config\ConfigFactoryInterface
|
||||
*/
|
||||
protected $configFactory;
|
||||
|
||||
/**
|
||||
* Constructs a new BigPipe class.
|
||||
*
|
||||
|
@ -86,13 +94,16 @@ class BigPipe implements BigPipeInterface {
|
|||
* The HTTP kernel.
|
||||
* @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher
|
||||
* The event dispatcher.
|
||||
* @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
|
||||
* The config factory.
|
||||
*/
|
||||
public function __construct(RendererInterface $renderer, SessionInterface $session, RequestStack $request_stack, HttpKernelInterface $http_kernel, EventDispatcherInterface $event_dispatcher) {
|
||||
public function __construct(RendererInterface $renderer, SessionInterface $session, RequestStack $request_stack, HttpKernelInterface $http_kernel, EventDispatcherInterface $event_dispatcher, ConfigFactoryInterface $config_factory) {
|
||||
$this->renderer = $renderer;
|
||||
$this->session = $session;
|
||||
$this->requestStack = $request_stack;
|
||||
$this->httpKernel = $http_kernel;
|
||||
$this->eventDispatcher = $event_dispatcher;
|
||||
$this->configFactory = $config_factory;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -243,7 +254,7 @@ class BigPipe implements BigPipeInterface {
|
|||
$elements = $this->renderPlaceholder($placeholder, $placeholder_plus_cumulative_settings);
|
||||
}
|
||||
catch (\Exception $e) {
|
||||
if (\Drupal::config('system.logging')->get('error_level') === ERROR_REPORTING_DISPLAY_VERBOSE) {
|
||||
if ($this->configFactory->get('system.logging')->get('error_level') === ERROR_REPORTING_DISPLAY_VERBOSE) {
|
||||
throw $e;
|
||||
}
|
||||
else {
|
||||
|
@ -280,7 +291,7 @@ class BigPipe implements BigPipeInterface {
|
|||
$html_response = $this->filterEmbeddedResponse($fake_request, $html_response);
|
||||
}
|
||||
catch (\Exception $e) {
|
||||
if (\Drupal::config('system.logging')->get('error_level') === ERROR_REPORTING_DISPLAY_VERBOSE) {
|
||||
if ($this->configFactory->get('system.logging')->get('error_level') === ERROR_REPORTING_DISPLAY_VERBOSE) {
|
||||
throw $e;
|
||||
}
|
||||
else {
|
||||
|
@ -355,7 +366,7 @@ class BigPipe implements BigPipeInterface {
|
|||
$elements = $this->renderPlaceholder($placeholder_id, $placeholder_render_array);
|
||||
}
|
||||
catch (\Exception $e) {
|
||||
if (\Drupal::config('system.logging')->get('error_level') === ERROR_REPORTING_DISPLAY_VERBOSE) {
|
||||
if ($this->configFactory->get('system.logging')->get('error_level') === ERROR_REPORTING_DISPLAY_VERBOSE) {
|
||||
throw $e;
|
||||
}
|
||||
else {
|
||||
|
@ -388,7 +399,7 @@ class BigPipe implements BigPipeInterface {
|
|||
$ajax_response = $this->filterEmbeddedResponse($fake_request, $ajax_response);
|
||||
}
|
||||
catch (\Exception $e) {
|
||||
if (\Drupal::config('system.logging')->get('error_level') === ERROR_REPORTING_DISPLAY_VERBOSE) {
|
||||
if ($this->configFactory->get('system.logging')->get('error_level') === ERROR_REPORTING_DISPLAY_VERBOSE) {
|
||||
throw $e;
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -105,12 +105,19 @@ class BigPipeStrategy implements PlaceholderStrategyInterface {
|
|||
* {@inheritdoc}
|
||||
*/
|
||||
public function processPlaceholders(array $placeholders) {
|
||||
$request = $this->requestStack->getCurrentRequest();
|
||||
|
||||
// @todo remove this check when https://www.drupal.org/node/2367555 lands.
|
||||
if (!$request->isMethodSafe()) {
|
||||
return [];
|
||||
}
|
||||
|
||||
// Routes can opt out from using the BigPipe HTML delivery technique.
|
||||
if ($this->routeMatch->getRouteObject()->getOption('_no_big_pipe')) {
|
||||
return [];
|
||||
}
|
||||
|
||||
if (!$this->sessionConfiguration->hasSession($this->requestStack->getCurrentRequest())) {
|
||||
if (!$this->sessionConfiguration->hasSession($request)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ namespace Drupal\big_pipe\Tests;
|
|||
|
||||
use Drupal\big_pipe\Render\BigPipeMarkup;
|
||||
use Drupal\Core\Session\AccountInterface;
|
||||
use Drupal\Core\StringTranslation\PluralTranslatableMarkup;
|
||||
use Drupal\Core\Url;
|
||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||
|
||||
|
@ -93,7 +94,7 @@ class BigPipePlaceholderTestCases {
|
|||
'theme' => 'classy',
|
||||
'libraries' => 'big_pipe/big_pipe,classy/base,classy/messages,core/drupal.active-link,core/html5shiv,core/normalize,system/base',
|
||||
],
|
||||
'pluralDelimiter' => \Drupal\Core\StringTranslation\PluralTranslatableMarkup::DELIMITER,
|
||||
'pluralDelimiter' => PluralTranslatableMarkup::DELIMITER,
|
||||
'user' => [
|
||||
'uid' => '1',
|
||||
'permissionsHash' => $container->get('user_permissions_hash_generator')->generate($user),
|
||||
|
|
|
@ -361,7 +361,7 @@ class BigPipeTest extends WebTestBase {
|
|||
$csrf_token_seed = unserialize(explode('_sf2_meta|', $session_data)[1])['s'];
|
||||
$this->container->get('session_manager.metadata_bag')->setCsrfTokenSeed($csrf_token_seed);
|
||||
|
||||
return \Drupal\big_pipe\Tests\BigPipePlaceholderTestCases::cases($this->container, $this->rootUser);
|
||||
return BigPipePlaceholderTestCases::cases($this->container, $this->rootUser);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
namespace Drupal\big_pipe_test;
|
||||
|
||||
use Drupal\big_pipe\Render\BigPipeMarkup;
|
||||
use Drupal\big_pipe\Tests\BigPipePlaceholderTestCases;
|
||||
use Drupal\big_pipe_test\EventSubscriber\BigPipeTestSubscriber;
|
||||
|
||||
class BigPipeTestController {
|
||||
|
@ -15,7 +16,7 @@ class BigPipeTestController {
|
|||
public function test() {
|
||||
$build = [];
|
||||
|
||||
$cases = \Drupal\big_pipe\Tests\BigPipePlaceholderTestCases::cases(\Drupal::getContainer());
|
||||
$cases = BigPipePlaceholderTestCases::cases(\Drupal::getContainer());
|
||||
|
||||
// 1. HTML placeholder: status messages. Drupal renders those automatically,
|
||||
// so all that we need to do in this controller is set a message.
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
namespace Drupal\Tests\big_pipe\Unit\Render\Placeholder;
|
||||
|
||||
use Drupal\big_pipe\Render\Placeholder\BigPipeStrategy;
|
||||
use Drupal\big_pipe\Tests\BigPipePlaceholderTestCases;
|
||||
use Drupal\Core\Routing\RouteMatchInterface;
|
||||
use Drupal\Core\Session\SessionConfigurationInterface;
|
||||
use Drupal\Tests\UnitTestCase;
|
||||
|
@ -22,8 +23,9 @@ class BigPipeStrategyTest extends UnitTestCase {
|
|||
*
|
||||
* @dataProvider placeholdersProvider
|
||||
*/
|
||||
public function testProcessPlaceholders(array $placeholders, $route_match_has_no_big_pipe_option, $request_has_session, $request_has_big_pipe_nojs_cookie, array $expected_big_pipe_placeholders) {
|
||||
public function testProcessPlaceholders(array $placeholders, $method, $route_match_has_no_big_pipe_option, $request_has_session, $request_has_big_pipe_nojs_cookie, array $expected_big_pipe_placeholders) {
|
||||
$request = new Request();
|
||||
$request->setMethod($method);
|
||||
if ($request_has_big_pipe_nojs_cookie) {
|
||||
$request->cookies->set(BigPipeStrategy::NOJS_COOKIE, 1);
|
||||
}
|
||||
|
@ -45,7 +47,7 @@ class BigPipeStrategyTest extends UnitTestCase {
|
|||
$big_pipe_strategy = new BigPipeStrategy($session_configuration->reveal(), $request_stack->reveal(), $route_match->reveal());
|
||||
$processed_placeholders = $big_pipe_strategy->processPlaceholders($placeholders);
|
||||
|
||||
if (!$route_match_has_no_big_pipe_option && $request_has_session) {
|
||||
if ($request->isMethodSafe() && !$route_match_has_no_big_pipe_option && $request_has_session) {
|
||||
$this->assertSameSize($expected_big_pipe_placeholders, $processed_placeholders, 'BigPipe is able to deliver all placeholders.');
|
||||
foreach (array_keys($placeholders) as $placeholder) {
|
||||
$this->assertSame($expected_big_pipe_placeholders[$placeholder], $processed_placeholders[$placeholder], "Verifying how BigPipeStrategy handles the placeholder '$placeholder'");
|
||||
|
@ -60,7 +62,7 @@ class BigPipeStrategyTest extends UnitTestCase {
|
|||
* @see \Drupal\big_pipe\Tests\BigPipePlaceholderTestCases
|
||||
*/
|
||||
public function placeholdersProvider() {
|
||||
$cases = \Drupal\big_pipe\Tests\BigPipePlaceholderTestCases::cases();
|
||||
$cases = BigPipePlaceholderTestCases::cases();
|
||||
|
||||
// Generate $placeholders variable as expected by
|
||||
// \Drupal\Core\Render\Placeholder\PlaceholderStrategyInterface::processPlaceholders().
|
||||
|
@ -75,13 +77,13 @@ class BigPipeStrategyTest extends UnitTestCase {
|
|||
];
|
||||
|
||||
return [
|
||||
'_no_big_pipe absent, no session, no-JS cookie absent' => [$placeholders, FALSE, FALSE, FALSE, []],
|
||||
'_no_big_pipe absent, no session, no-JS cookie present' => [$placeholders, FALSE, FALSE, TRUE, []],
|
||||
'_no_big_pipe present, no session, no-JS cookie absent' => [$placeholders, TRUE, FALSE, FALSE, []],
|
||||
'_no_big_pipe present, no session, no-JS cookie present' => [$placeholders, TRUE, FALSE, TRUE, []],
|
||||
'_no_big_pipe present, session, no-JS cookie absent' => [$placeholders, TRUE, TRUE, FALSE, []],
|
||||
'_no_big_pipe present, session, no-JS cookie present' => [$placeholders, TRUE, TRUE, TRUE, []],
|
||||
'_no_big_pipe absent, session, no-JS cookie absent: (JS-powered) BigPipe placeholder used for HTML placeholders' => [$placeholders, FALSE, TRUE, FALSE, [
|
||||
'_no_big_pipe absent, no session, no-JS cookie absent' => [$placeholders, 'GET', FALSE, FALSE, FALSE, []],
|
||||
'_no_big_pipe absent, no session, no-JS cookie present' => [$placeholders, 'GET', FALSE, FALSE, TRUE, []],
|
||||
'_no_big_pipe present, no session, no-JS cookie absent' => [$placeholders, 'GET', TRUE, FALSE, FALSE, []],
|
||||
'_no_big_pipe present, no session, no-JS cookie present' => [$placeholders, 'GET', TRUE, FALSE, TRUE, []],
|
||||
'_no_big_pipe present, session, no-JS cookie absent' => [$placeholders, 'GET', TRUE, TRUE, FALSE, []],
|
||||
'_no_big_pipe present, session, no-JS cookie present' => [$placeholders, 'GET', TRUE, TRUE, TRUE, []],
|
||||
'_no_big_pipe absent, session, no-JS cookie absent: (JS-powered) BigPipe placeholder used for HTML placeholders' => [$placeholders, 'GET', FALSE, TRUE, FALSE, [
|
||||
$cases['html']->placeholder => $cases['html']->bigPipePlaceholderRenderArray,
|
||||
$cases['html_attribute_value']->placeholder => $cases['html_attribute_value']->bigPipeNoJsPlaceholderRenderArray,
|
||||
$cases['html_attribute_value_subset']->placeholder => $cases['html_attribute_value_subset']->bigPipeNoJsPlaceholderRenderArray,
|
||||
|
@ -90,7 +92,8 @@ class BigPipeStrategyTest extends UnitTestCase {
|
|||
$cases['exception__lazy_builder']->placeholder => $cases['exception__lazy_builder']->bigPipePlaceholderRenderArray,
|
||||
$cases['exception__embedded_response']->placeholder => $cases['exception__embedded_response']->bigPipePlaceholderRenderArray,
|
||||
]],
|
||||
'_no_big_pipe absent, session, no-JS cookie present: no-JS BigPipe placeholder used for HTML placeholders' => [$placeholders, FALSE, TRUE, TRUE, [
|
||||
'_no_big_pipe absent, session, no-JS cookie absent: (JS-powered) BigPipe placeholder used for HTML placeholders — but unsafe method' => [$placeholders, 'POST', FALSE, TRUE, FALSE, []],
|
||||
'_no_big_pipe absent, session, no-JS cookie present: no-JS BigPipe placeholder used for HTML placeholders' => [$placeholders, 'GET', FALSE, TRUE, TRUE, [
|
||||
$cases['html']->placeholder => $cases['html']->bigPipeNoJsPlaceholderRenderArray,
|
||||
$cases['html_attribute_value']->placeholder => $cases['html_attribute_value']->bigPipeNoJsPlaceholderRenderArray,
|
||||
$cases['html_attribute_value_subset']->placeholder => $cases['html_attribute_value_subset']->bigPipeNoJsPlaceholderRenderArray,
|
||||
|
@ -99,6 +102,7 @@ class BigPipeStrategyTest extends UnitTestCase {
|
|||
$cases['exception__lazy_builder']->placeholder => $cases['exception__lazy_builder']->bigPipeNoJsPlaceholderRenderArray,
|
||||
$cases['exception__embedded_response']->placeholder => $cases['exception__embedded_response']->bigPipeNoJsPlaceholderRenderArray,
|
||||
]],
|
||||
'_no_big_pipe absent, session, no-JS cookie present: no-JS BigPipe placeholder used for HTML placeholders — but unsafe method' => [$placeholders, 'POST', FALSE, TRUE, TRUE, []],
|
||||
];
|
||||
}
|
||||
|
||||
|
|
Reference in a new issue