Issue #2712647 by slasher13, klausi, catch, jibran, Manuel Garcia, alexpott, mpdonadio, naveenvalecha, neclimdul, timmillwood, webflo, dawehner, Wim Leers, pounard: Update Symfony components to ~3.2
							parent
							
								
									4d80891f80
								
							
						
					
					
						commit
						494271d030
					
				
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
				
			
			@ -5,19 +5,19 @@
 | 
			
		|||
    "license": "GPL-2.0+",
 | 
			
		||||
    "require": {
 | 
			
		||||
        "php": ">=5.5.9",
 | 
			
		||||
        "symfony/class-loader": "~2.8",
 | 
			
		||||
        "symfony/console": "~2.8",
 | 
			
		||||
        "symfony/dependency-injection": "~2.8",
 | 
			
		||||
        "symfony/event-dispatcher": "~2.8",
 | 
			
		||||
        "symfony/http-foundation": "~2.8",
 | 
			
		||||
        "symfony/http-kernel": "~2.8",
 | 
			
		||||
        "symfony/routing": "~2.8",
 | 
			
		||||
        "symfony/serializer": "~2.8",
 | 
			
		||||
        "symfony/translation": "~2.8",
 | 
			
		||||
        "symfony/validator": "~2.8",
 | 
			
		||||
        "symfony/process": "~2.8",
 | 
			
		||||
        "symfony/class-loader": "3.2.6",
 | 
			
		||||
        "symfony/console": "3.2.6",
 | 
			
		||||
        "symfony/dependency-injection": "3.2.6",
 | 
			
		||||
        "symfony/event-dispatcher": "3.2.6",
 | 
			
		||||
        "symfony/http-foundation": "3.2.6",
 | 
			
		||||
        "symfony/http-kernel": "3.2.6",
 | 
			
		||||
        "symfony/routing": "3.2.6",
 | 
			
		||||
        "symfony/serializer": "3.2.6",
 | 
			
		||||
        "symfony/translation": "3.2.6",
 | 
			
		||||
        "symfony/validator": "3.2.6",
 | 
			
		||||
        "symfony/process": "3.2.6",
 | 
			
		||||
        "symfony/polyfill-iconv": "~1.0",
 | 
			
		||||
        "symfony/yaml": "~2.8",
 | 
			
		||||
        "symfony/yaml": "3.2.6",
 | 
			
		||||
        "twig/twig": "^1.23.1",
 | 
			
		||||
        "doctrine/common": "^2.5",
 | 
			
		||||
        "doctrine/annotations": "1.2.*",
 | 
			
		||||
| 
						 | 
				
			
			@ -45,8 +45,7 @@
 | 
			
		|||
        "jcalderonzumba/mink-phantomjs-driver": "~0.3.1",
 | 
			
		||||
        "mikey179/vfsStream": "~1.2",
 | 
			
		||||
        "phpunit/phpunit": ">=4.8.35 <5",
 | 
			
		||||
        "symfony/browser-kit": ">=2.8.13 <3.0",
 | 
			
		||||
        "symfony/css-selector": "~2.8"
 | 
			
		||||
        "symfony/css-selector": "3.2.6"
 | 
			
		||||
    },
 | 
			
		||||
    "replace": {
 | 
			
		||||
        "drupal/action": "self.version",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,9 +3,7 @@
 | 
			
		|||
namespace Drupal\Component\DependencyInjection;
 | 
			
		||||
 | 
			
		||||
use Symfony\Component\DependencyInjection\ContainerInterface;
 | 
			
		||||
use Symfony\Component\DependencyInjection\IntrospectableContainerInterface;
 | 
			
		||||
use Symfony\Component\DependencyInjection\ResettableContainerInterface;
 | 
			
		||||
use Symfony\Component\DependencyInjection\ScopeInterface;
 | 
			
		||||
use Symfony\Component\DependencyInjection\Exception\LogicException;
 | 
			
		||||
use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
 | 
			
		||||
use Symfony\Component\DependencyInjection\Exception\RuntimeException;
 | 
			
		||||
| 
						 | 
				
			
			@ -43,14 +41,10 @@ use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceExce
 | 
			
		|||
 *   getAServiceWithAnIdByCamelCase().
 | 
			
		||||
 * - The function getServiceIds() was added as it has a use-case in core and
 | 
			
		||||
 *   contrib.
 | 
			
		||||
 * - Scopes are explicitly not allowed, because Symfony 2.8 has deprecated
 | 
			
		||||
 *   them and they will be removed in Symfony 3.0.
 | 
			
		||||
 * - Synchronized services are explicitly not supported, because Symfony 2.8 has
 | 
			
		||||
 *   deprecated them and they will be removed in Symfony 3.0.
 | 
			
		||||
 *
 | 
			
		||||
 * @ingroup container
 | 
			
		||||
 */
 | 
			
		||||
class Container implements IntrospectableContainerInterface, ResettableContainerInterface {
 | 
			
		||||
class Container implements ContainerInterface, ResettableContainerInterface {
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * The parameters of the container.
 | 
			
		||||
| 
						 | 
				
			
			@ -311,12 +305,8 @@ class Container implements IntrospectableContainerInterface, ResettableContainer
 | 
			
		|||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Share the service if it is public.
 | 
			
		||||
    if (!isset($definition['public']) || $definition['public'] !== FALSE) {
 | 
			
		||||
      // Forward compatibility fix for Symfony 2.8 update.
 | 
			
		||||
      if (!isset($definition['shared']) || $definition['shared'] !== FALSE) {
 | 
			
		||||
        $this->services[$id] = $service;
 | 
			
		||||
      }
 | 
			
		||||
    if (!isset($definition['shared']) || $definition['shared'] !== FALSE) {
 | 
			
		||||
      $this->services[$id] = $service;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (isset($definition['calls'])) {
 | 
			
		||||
| 
						 | 
				
			
			@ -361,11 +351,7 @@ class Container implements IntrospectableContainerInterface, ResettableContainer
 | 
			
		|||
  /**
 | 
			
		||||
   * {@inheritdoc}
 | 
			
		||||
   */
 | 
			
		||||
  public function set($id, $service, $scope = ContainerInterface::SCOPE_CONTAINER) {
 | 
			
		||||
    if (!in_array($scope, ['container', 'request']) || ('request' === $scope && 'request' !== $id)) {
 | 
			
		||||
      @trigger_error('The concept of container scopes is deprecated since version 2.8 and will be removed in 3.0. Omit the third parameter.', E_USER_DEPRECATED);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  public function set($id, $service) {
 | 
			
		||||
    $this->services[$id] = $service;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -587,61 +573,6 @@ class Container implements IntrospectableContainerInterface, ResettableContainer
 | 
			
		|||
    return $this->getAlternatives($name, array_keys($this->parameters));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * {@inheritdoc}
 | 
			
		||||
   */
 | 
			
		||||
  public function enterScope($name) {
 | 
			
		||||
    if ('request' !== $name) {
 | 
			
		||||
      @trigger_error('The ' . __METHOD__ . ' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    throw new \BadMethodCallException(sprintf("'%s' is not supported by Drupal 8.", __FUNCTION__));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * {@inheritdoc}
 | 
			
		||||
   */
 | 
			
		||||
  public function leaveScope($name) {
 | 
			
		||||
    if ('request' !== $name) {
 | 
			
		||||
      @trigger_error('The ' . __METHOD__ . ' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    throw new \BadMethodCallException(sprintf("'%s' is not supported by Drupal 8.", __FUNCTION__));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * {@inheritdoc}
 | 
			
		||||
   */
 | 
			
		||||
  public function addScope(ScopeInterface $scope) {
 | 
			
		||||
 | 
			
		||||
    $name = $scope->getName();
 | 
			
		||||
    if ('request' !== $name) {
 | 
			
		||||
      @trigger_error('The ' . __METHOD__ . ' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
 | 
			
		||||
    }
 | 
			
		||||
    throw new \BadMethodCallException(sprintf("'%s' is not supported by Drupal 8.", __FUNCTION__));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * {@inheritdoc}
 | 
			
		||||
   */
 | 
			
		||||
  public function hasScope($name) {
 | 
			
		||||
    if ('request' !== $name) {
 | 
			
		||||
      @trigger_error('The ' . __METHOD__ . ' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    throw new \BadMethodCallException(sprintf("'%s' is not supported by Drupal 8.", __FUNCTION__));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * {@inheritdoc}
 | 
			
		||||
   */
 | 
			
		||||
  public function isScopeActive($name) {
 | 
			
		||||
    @trigger_error('The ' . __METHOD__ . ' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
 | 
			
		||||
 | 
			
		||||
    throw new \BadMethodCallException(sprintf("'%s' is not supported by Drupal 8.", __FUNCTION__));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Gets all defined service IDs.
 | 
			
		||||
   *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -237,18 +237,6 @@ class OptimizedPhpArrayDumper extends Dumper {
 | 
			
		|||
      $service['calls'] = $this->dumpMethodCalls($definition->getMethodCalls());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (($scope = $definition->getScope()) !== ContainerInterface::SCOPE_CONTAINER) {
 | 
			
		||||
      if ($scope === ContainerInterface::SCOPE_PROTOTYPE) {
 | 
			
		||||
        // Scope prototype has been replaced with 'shared' => FALSE.
 | 
			
		||||
        // This is a Symfony 2.8 forward compatibility fix.
 | 
			
		||||
        // Reference: https://github.com/symfony/symfony/blob/2.8/UPGRADE-2.8.md#dependencyinjection
 | 
			
		||||
        $service['shared'] = FALSE;
 | 
			
		||||
      }
 | 
			
		||||
      else {
 | 
			
		||||
        throw new InvalidArgumentException("The 'scope' definition is deprecated in Symfony 3.0 and not supported by Drupal 8.");
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // By default services are shared, so just provide the flag, when needed.
 | 
			
		||||
    if ($definition->isShared() === FALSE) {
 | 
			
		||||
      $service['shared'] = $definition->isShared();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -136,12 +136,8 @@ class PhpArrayContainer extends Container {
 | 
			
		|||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Share the service if it is public.
 | 
			
		||||
    if (!isset($definition['public']) || $definition['public'] !== FALSE) {
 | 
			
		||||
      // Forward compatibility fix for Symfony 2.8 update.
 | 
			
		||||
      if (!isset($definition['shared']) || $definition['shared'] !== FALSE) {
 | 
			
		||||
        $this->services[$id] = $service;
 | 
			
		||||
      }
 | 
			
		||||
    if (!isset($definition['shared']) || $definition['shared'] !== FALSE) {
 | 
			
		||||
      $this->services[$id] = $service;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (isset($definition['calls'])) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,7 @@
 | 
			
		|||
 | 
			
		||||
namespace Drupal\Component\EventDispatcher;
 | 
			
		||||
 | 
			
		||||
use Symfony\Component\DependencyInjection\IntrospectableContainerInterface;
 | 
			
		||||
use Symfony\Component\DependencyInjection\ContainerInterface;
 | 
			
		||||
use Symfony\Component\EventDispatcher\Event;
 | 
			
		||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
 | 
			
		||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 | 
			
		||||
| 
						 | 
				
			
			@ -36,7 +36,7 @@ class ContainerAwareEventDispatcher implements EventDispatcherInterface {
 | 
			
		|||
  /**
 | 
			
		||||
   * The service container.
 | 
			
		||||
   *
 | 
			
		||||
   * @var \Symfony\Component\DependencyInjection\IntrospectableContainerInterface;
 | 
			
		||||
   * @var \Symfony\Component\DependencyInjection\ContainerInterface;
 | 
			
		||||
   */
 | 
			
		||||
  protected $container;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -66,7 +66,7 @@ class ContainerAwareEventDispatcher implements EventDispatcherInterface {
 | 
			
		|||
  /**
 | 
			
		||||
   * Constructs a container aware event dispatcher.
 | 
			
		||||
   *
 | 
			
		||||
   * @param \Symfony\Component\DependencyInjection\IntrospectableContainerInterface $container
 | 
			
		||||
   * @param \Symfony\Component\DependencyInjection\ContainerInterface $container
 | 
			
		||||
   *   The service container.
 | 
			
		||||
   * @param array $listeners
 | 
			
		||||
   *   A nested array of listener definitions keyed by event name and priority.
 | 
			
		||||
| 
						 | 
				
			
			@ -77,7 +77,7 @@ class ContainerAwareEventDispatcher implements EventDispatcherInterface {
 | 
			
		|||
   *   A service entry will be resolved to a callable only just before its
 | 
			
		||||
   *   invocation.
 | 
			
		||||
   */
 | 
			
		||||
  public function __construct(IntrospectableContainerInterface $container, array $listeners = []) {
 | 
			
		||||
  public function __construct(ContainerInterface $container, array $listeners = []) {
 | 
			
		||||
    $this->container = $container;
 | 
			
		||||
    $this->listeners = $listeners;
 | 
			
		||||
    $this->unsorted = [];
 | 
			
		||||
| 
						 | 
				
			
			@ -91,9 +91,6 @@ class ContainerAwareEventDispatcher implements EventDispatcherInterface {
 | 
			
		|||
      $event = new Event();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $event->setDispatcher($this);
 | 
			
		||||
    $event->setName($event_name);
 | 
			
		||||
 | 
			
		||||
    if (isset($this->listeners[$event_name])) {
 | 
			
		||||
      // Sort listeners if necessary.
 | 
			
		||||
      if (isset($this->unsorted[$event_name])) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,6 +27,13 @@ class YamlPecl implements SerializationInterface {
 | 
			
		|||
   * {@inheritdoc}
 | 
			
		||||
   */
 | 
			
		||||
  public static function decode($raw) {
 | 
			
		||||
    static $init;
 | 
			
		||||
    if (!isset($init)) {
 | 
			
		||||
      // Decode binary, since Symfony YAML parser encodes binary from 3.1
 | 
			
		||||
      // onwards.
 | 
			
		||||
      ini_set('yaml.decode_binary', 1);
 | 
			
		||||
      $init = TRUE;
 | 
			
		||||
    }
 | 
			
		||||
    // yaml_parse() will error with an empty value.
 | 
			
		||||
    if (!trim($raw)) {
 | 
			
		||||
      return NULL;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,6 +5,7 @@ namespace Drupal\Component\Serialization;
 | 
			
		|||
use Drupal\Component\Serialization\Exception\InvalidDataTypeException;
 | 
			
		||||
use Symfony\Component\Yaml\Parser;
 | 
			
		||||
use Symfony\Component\Yaml\Dumper;
 | 
			
		||||
use Symfony\Component\Yaml\Yaml as SymfonyYaml;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Default serialization for YAML using the Symfony component.
 | 
			
		||||
| 
						 | 
				
			
			@ -18,7 +19,7 @@ class YamlSymfony implements SerializationInterface {
 | 
			
		|||
    try {
 | 
			
		||||
      $yaml = new Dumper();
 | 
			
		||||
      $yaml->setIndentation(2);
 | 
			
		||||
      return $yaml->dump($data, PHP_INT_MAX, 0, TRUE, FALSE);
 | 
			
		||||
      return $yaml->dump($data, PHP_INT_MAX, 0, SymfonyYaml::DUMP_EXCEPTION_ON_INVALID_TYPE);
 | 
			
		||||
    }
 | 
			
		||||
    catch (\Exception $e) {
 | 
			
		||||
      throw new InvalidDataTypeException($e->getMessage(), $e->getCode(), $e);
 | 
			
		||||
| 
						 | 
				
			
			@ -33,7 +34,7 @@ class YamlSymfony implements SerializationInterface {
 | 
			
		|||
      $yaml = new Parser();
 | 
			
		||||
      // Make sure we have a single trailing newline. A very simple config like
 | 
			
		||||
      // 'foo: bar' with no newline will fail to parse otherwise.
 | 
			
		||||
      return $yaml->parse($raw, TRUE, FALSE);
 | 
			
		||||
      return $yaml->parse($raw, SymfonyYaml::PARSE_EXCEPTION_ON_INVALID_TYPE);
 | 
			
		||||
    }
 | 
			
		||||
    catch (\Exception $e) {
 | 
			
		||||
      throw new InvalidDataTypeException($e->getMessage(), $e->getCode(), $e);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,6 @@
 | 
			
		|||
namespace Drupal\Core\DependencyInjection;
 | 
			
		||||
 | 
			
		||||
use Drupal\Component\DependencyInjection\Container as DrupalContainer;
 | 
			
		||||
use Symfony\Component\DependencyInjection\ContainerInterface;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Extends the Drupal container to set the service ID on the created object.
 | 
			
		||||
| 
						 | 
				
			
			@ -13,8 +12,8 @@ class Container extends DrupalContainer {
 | 
			
		|||
  /**
 | 
			
		||||
   * {@inheritdoc}
 | 
			
		||||
   */
 | 
			
		||||
  public function set($id, $service, $scope = ContainerInterface::SCOPE_CONTAINER) {
 | 
			
		||||
    parent::set($id, $service, $scope);
 | 
			
		||||
  public function set($id, $service) {
 | 
			
		||||
    parent::set($id, $service);
 | 
			
		||||
 | 
			
		||||
    // Ensure that the _serviceId property is set on synthetic services as well.
 | 
			
		||||
    if (isset($this->services[$id]) && is_object($this->services[$id]) && !isset($this->services[$id]->_serviceId)) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -46,20 +46,12 @@ class ContainerBuilder extends SymfonyContainerBuilder {
 | 
			
		|||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Direct copy of the parent function.
 | 
			
		||||
   * {@inheritdoc}
 | 
			
		||||
   */
 | 
			
		||||
  protected function shareService(Definition $definition, $service, $id)
 | 
			
		||||
  {
 | 
			
		||||
    if ($definition->isShared() && self::SCOPE_PROTOTYPE !== $scope = $definition->getScope(false)) {
 | 
			
		||||
      if (self::SCOPE_CONTAINER !== $scope && !isset($this->scopedServices[$scope])) {
 | 
			
		||||
        throw new InactiveScopeException($id, $scope);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
    if ($definition->isShared()) {
 | 
			
		||||
      $this->services[$lowerId = strtolower($id)] = $service;
 | 
			
		||||
 | 
			
		||||
      if (self::SCOPE_CONTAINER !== $scope) {
 | 
			
		||||
        $this->scopedServices[$scope][$lowerId] = $service;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -74,11 +66,11 @@ class ContainerBuilder extends SymfonyContainerBuilder {
 | 
			
		|||
   *   ContainerBuilder class should be fixed to allow setting synthetic
 | 
			
		||||
   *   services in a frozen builder.
 | 
			
		||||
   */
 | 
			
		||||
  public function set($id, $service, $scope = self::SCOPE_CONTAINER) {
 | 
			
		||||
  public function set($id, $service) {
 | 
			
		||||
    if (strtolower($id) !== $id) {
 | 
			
		||||
      throw new \InvalidArgumentException("Service ID names must be lowercase: $id");
 | 
			
		||||
    }
 | 
			
		||||
    SymfonyContainer::set($id, $service, $scope);
 | 
			
		||||
    SymfonyContainer::set($id, $service);
 | 
			
		||||
 | 
			
		||||
    // Ensure that the _serviceId property is set on synthetic services as well.
 | 
			
		||||
    if (isset($this->services[$id]) && is_object($this->services[$id]) && !isset($this->services[$id]->_serviceId)) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -168,21 +168,10 @@ class YamlFileLoader
 | 
			
		|||
            $definition->setShared($service['shared']);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (isset($service['scope'])) {
 | 
			
		||||
            if ('request' !== $id) {
 | 
			
		||||
                @trigger_error(sprintf('The "scope" key of service "%s" in file "%s" is deprecated since version 2.8 and will be removed in 3.0.', $id, $file), E_USER_DEPRECATED);
 | 
			
		||||
            }
 | 
			
		||||
            $definition->setScope($service['scope'], false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (isset($service['synthetic'])) {
 | 
			
		||||
            $definition->setSynthetic($service['synthetic']);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (isset($service['synchronized'])) {
 | 
			
		||||
            $definition->setSynchronized($service['synchronized'], 'request' !== $id);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (isset($service['lazy'])) {
 | 
			
		||||
            $definition->setLazy($service['lazy']);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -213,15 +202,15 @@ class YamlFileLoader
 | 
			
		|||
        }
 | 
			
		||||
 | 
			
		||||
        if (isset($service['factory_class'])) {
 | 
			
		||||
            $definition->setFactoryClass($service['factory_class']);
 | 
			
		||||
            $definition->setFactory($service['factory_class']);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (isset($service['factory_method'])) {
 | 
			
		||||
            $definition->setFactoryMethod($service['factory_method']);
 | 
			
		||||
            $definition->setFactory($service['factory_method']);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (isset($service['factory_service'])) {
 | 
			
		||||
            $definition->setFactoryService($service['factory_service']);
 | 
			
		||||
            $definition->setFactory($service['factory_service']);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (isset($service['file'])) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -189,9 +189,9 @@ class FinishResponseSubscriber implements EventSubscriberInterface {
 | 
			
		|||
   *
 | 
			
		||||
   * When neither Cache-Control nor any of the ETag, Last-Modified, Expires
 | 
			
		||||
   * headers are set on the response, ::get('Cache-Control') returns the value
 | 
			
		||||
   * 'no-cache'. If any of ETag, Last-Modified or Expires are set but not
 | 
			
		||||
   * Cache-Control, then 'private, must-revalidate' (in exactly this order) is
 | 
			
		||||
   * returned.
 | 
			
		||||
   * 'no-cache, private'. If any of ETag, Last-Modified or Expires are set but
 | 
			
		||||
   * not Cache-Control, then 'private, must-revalidate' (in exactly this order)
 | 
			
		||||
   * is returned.
 | 
			
		||||
   *
 | 
			
		||||
   * @see \Symfony\Component\HttpFoundation\ResponseHeaderBag::computeCacheControlValue()
 | 
			
		||||
   *
 | 
			
		||||
| 
						 | 
				
			
			@ -202,7 +202,7 @@ class FinishResponseSubscriber implements EventSubscriberInterface {
 | 
			
		|||
   */
 | 
			
		||||
  protected function isCacheControlCustomized(Response $response) {
 | 
			
		||||
    $cache_control = $response->headers->get('Cache-Control');
 | 
			
		||||
    return $cache_control != 'no-cache' && $cache_control != 'private, must-revalidate';
 | 
			
		||||
    return $cache_control != 'no-cache, private' && $cache_control != 'private, must-revalidate';
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,7 @@ class CommandLineOrUnsafeMethod implements RequestPolicyInterface {
 | 
			
		|||
   * {@inheritdoc}
 | 
			
		||||
   */
 | 
			
		||||
  public function check(Request $request) {
 | 
			
		||||
    if ($this->isCli() || !$request->isMethodSafe()) {
 | 
			
		||||
    if ($this->isCli() || !$request->isMethodCacheable()) {
 | 
			
		||||
      return static::DENY;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -93,7 +93,7 @@ class PlaceholderingRenderCache extends RenderCache {
 | 
			
		|||
   */
 | 
			
		||||
  public function get(array $elements) {
 | 
			
		||||
    // @todo remove this check when https://www.drupal.org/node/2367555 lands.
 | 
			
		||||
    if (!$this->requestStack->getCurrentRequest()->isMethodSafe()) {
 | 
			
		||||
    if (!$this->requestStack->getCurrentRequest()->isMethodCacheable()) {
 | 
			
		||||
      return FALSE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -127,7 +127,7 @@ class PlaceholderingRenderCache extends RenderCache {
 | 
			
		|||
    $result = parent::set($elements, $pre_bubbling_elements);
 | 
			
		||||
 | 
			
		||||
    // @todo remove this check when https://www.drupal.org/node/2367555 lands.
 | 
			
		||||
    if (!$this->requestStack->getCurrentRequest()->isMethodSafe()) {
 | 
			
		||||
    if (!$this->requestStack->getCurrentRequest()->isMethodCacheable()) {
 | 
			
		||||
      return FALSE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -61,9 +61,9 @@ class RenderCache implements RenderCacheInterface {
 | 
			
		|||
  public function get(array $elements) {
 | 
			
		||||
    // Form submissions rely on the form being built during the POST request,
 | 
			
		||||
    // and render caching of forms prevents this from happening.
 | 
			
		||||
    // @todo remove the isMethodSafe() check when
 | 
			
		||||
    // @todo remove the isMethodCacheable() check when
 | 
			
		||||
    //       https://www.drupal.org/node/2367555 lands.
 | 
			
		||||
    if (!$this->requestStack->getCurrentRequest()->isMethodSafe() || !$cid = $this->createCacheID($elements)) {
 | 
			
		||||
    if (!$this->requestStack->getCurrentRequest()->isMethodCacheable() || !$cid = $this->createCacheID($elements)) {
 | 
			
		||||
      return FALSE;
 | 
			
		||||
    }
 | 
			
		||||
    $bin = isset($elements['#cache']['bin']) ? $elements['#cache']['bin'] : 'render';
 | 
			
		||||
| 
						 | 
				
			
			@ -88,9 +88,9 @@ class RenderCache implements RenderCacheInterface {
 | 
			
		|||
  public function set(array &$elements, array $pre_bubbling_elements) {
 | 
			
		||||
    // Form submissions rely on the form being built during the POST request,
 | 
			
		||||
    // and render caching of forms prevents this from happening.
 | 
			
		||||
    // @todo remove the isMethodSafe() check when
 | 
			
		||||
    // @todo remove the isMethodCacheable() check when
 | 
			
		||||
    //       https://www.drupal.org/node/2367555 lands.
 | 
			
		||||
    if (!$this->requestStack->getCurrentRequest()->isMethodSafe() || !$cid = $this->createCacheID($elements)) {
 | 
			
		||||
    if (!$this->requestStack->getCurrentRequest()->isMethodCacheable() || !$cid = $this->createCacheID($elements)) {
 | 
			
		||||
      return FALSE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -338,9 +338,9 @@ class Renderer implements RendererInterface {
 | 
			
		|||
    // If instructed to create a placeholder, and a #lazy_builder callback is
 | 
			
		||||
    // present (without such a callback, it would be impossible to replace the
 | 
			
		||||
    // placeholder), replace the current element with a placeholder.
 | 
			
		||||
    // @todo remove the isMethodSafe() check when
 | 
			
		||||
    // @todo remove the isMethodCacheable() check when
 | 
			
		||||
    //       https://www.drupal.org/node/2367555 lands.
 | 
			
		||||
    if (isset($elements['#create_placeholder']) && $elements['#create_placeholder'] === TRUE && $this->requestStack->getCurrentRequest()->isMethodSafe()) {
 | 
			
		||||
    if (isset($elements['#create_placeholder']) && $elements['#create_placeholder'] === TRUE && $this->requestStack->getCurrentRequest()->isMethodCacheable()) {
 | 
			
		||||
      if (!isset($elements['#lazy_builder'])) {
 | 
			
		||||
        throw new \LogicException('When #create_placeholder is set, a #lazy_builder callback must be present as well.');
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,7 +21,7 @@ use Symfony\Component\Validator\Validator\ValidatorInterface;
 | 
			
		|||
class ExecutionContext implements ExecutionContextInterface {
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * @var \Symfony\Component\Validator\ValidatorInterface
 | 
			
		||||
   * @var \Symfony\Component\Validator\Validator\ValidatorInterface
 | 
			
		||||
   */
 | 
			
		||||
  protected $validator;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -109,7 +109,7 @@ class BigPipeStrategy implements PlaceholderStrategyInterface {
 | 
			
		|||
    $request = $this->requestStack->getCurrentRequest();
 | 
			
		||||
 | 
			
		||||
    // @todo remove this check when https://www.drupal.org/node/2367555 lands.
 | 
			
		||||
    if (!$request->isMethodSafe()) {
 | 
			
		||||
    if (!$request->isMethodCacheable()) {
 | 
			
		||||
      return [];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -47,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 ($request->isMethodSafe() && !$route_match_has_no_big_pipe_option && $request_has_session) {
 | 
			
		||||
    if ($request->isMethodCacheable() && !$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'");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -76,7 +76,7 @@ class BlockContentCacheTagsTest extends EntityCacheTagsTestBase {
 | 
			
		|||
    // Render the block.
 | 
			
		||||
    // @todo The request stack manipulation won't be necessary once
 | 
			
		||||
    //   https://www.drupal.org/node/2367555 is fixed and the
 | 
			
		||||
    //   corresponding $request->isMethodSafe() checks are removed from
 | 
			
		||||
    //   corresponding $request->isMethodCacheable() checks are removed from
 | 
			
		||||
    //   Drupal\Core\Render\Renderer.
 | 
			
		||||
    $request_stack = $this->container->get('request_stack');
 | 
			
		||||
    $request_stack->push(new Request());
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -565,7 +565,7 @@ display:
 | 
			
		|||
          decimal: .
 | 
			
		||||
          separator: ','
 | 
			
		||||
          format_plural: true
 | 
			
		||||
          format_plural_string: "1 place\x03@count places"
 | 
			
		||||
          format_plural_string: !!binary MSBwbGFjZQNAY291bnQgcGxhY2Vz
 | 
			
		||||
          prefix: ''
 | 
			
		||||
          suffix: ''
 | 
			
		||||
          plugin_id: numeric
 | 
			
		||||
| 
						 | 
				
			
			@ -1007,7 +1007,7 @@ display:
 | 
			
		|||
          decimal: .
 | 
			
		||||
          separator: ','
 | 
			
		||||
          format_plural: false
 | 
			
		||||
          format_plural_string: "1\x03@count"
 | 
			
		||||
          format_plural_string: !!binary MQNAY291bnQ=
 | 
			
		||||
          prefix: ''
 | 
			
		||||
          suffix: ''
 | 
			
		||||
          plugin_id: numeric
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1099,7 +1099,7 @@ function node_query_node_access_alter(AlterableInterface $query) {
 | 
			
		|||
  // context.
 | 
			
		||||
  $request = \Drupal::requestStack()->getCurrentRequest();
 | 
			
		||||
  $renderer = \Drupal::service('renderer');
 | 
			
		||||
  if ($request->isMethodSafe() && $renderer->hasRenderContext()) {
 | 
			
		||||
  if ($request->isMethodCacheable() && $renderer->hasRenderContext()) {
 | 
			
		||||
    $build = ['#cache' => ['contexts' => ['user.node_grants:' . $op]]];
 | 
			
		||||
    $renderer->render($build);
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -96,7 +96,7 @@ class ResourceResponseSubscriber implements EventSubscriberInterface {
 | 
			
		|||
    $route = $route_match->getRouteObject();
 | 
			
		||||
    $acceptable_request_formats = $route->hasRequirement('_format') ? explode('|', $route->getRequirement('_format')) : [];
 | 
			
		||||
    $acceptable_content_type_formats = $route->hasRequirement('_content_type_format') ? explode('|', $route->getRequirement('_content_type_format')) : [];
 | 
			
		||||
    $acceptable_formats = $request->isMethodSafe() ? $acceptable_request_formats : $acceptable_content_type_formats;
 | 
			
		||||
    $acceptable_formats = $request->isMethodCacheable() ? $acceptable_request_formats : $acceptable_content_type_formats;
 | 
			
		||||
 | 
			
		||||
    $requested_format = $request->getRequestFormat();
 | 
			
		||||
    $content_type_format = $request->getContentType();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -141,8 +141,8 @@ class CollectRoutesTest extends UnitTestCase {
 | 
			
		|||
    $requirements_1 = $this->routes->get('test_1')->getRequirements();
 | 
			
		||||
    $requirements_2 = $this->routes->get('view.test_view.page_1')->getRequirements();
 | 
			
		||||
 | 
			
		||||
    $this->assertEquals(count($requirements_1), 0, 'First route has no requirement.');
 | 
			
		||||
    $this->assertEquals(count($requirements_2), 2, 'Views route with rest export had the format and method requirements added.');
 | 
			
		||||
    $this->assertEquals(0, count($requirements_1), 'First route has no requirement.');
 | 
			
		||||
    $this->assertEquals(1, count($requirements_2), 'Views route with rest export had the format requirement added.');
 | 
			
		||||
 | 
			
		||||
    // Check auth options.
 | 
			
		||||
    $auth = $this->routes->get('view.test_view.page_1')->getOption('_auth');
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -79,11 +79,6 @@ class ResourceResponseSubscriberTest extends UnitTestCase {
 | 
			
		|||
   * @dataProvider providerTestResponseFormat
 | 
			
		||||
   */
 | 
			
		||||
  public function testResponseFormat($methods, array $supported_formats, $request_format, array $request_headers, $request_body, $expected_response_format, $expected_response_content_type, $expected_response_content) {
 | 
			
		||||
    $parameters = [];
 | 
			
		||||
    if ($request_format !== FALSE) {
 | 
			
		||||
      $parameters['_format'] = $request_format;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    foreach ($request_headers as $key => $value) {
 | 
			
		||||
      unset($request_headers[$key]);
 | 
			
		||||
      $key = strtoupper(str_replace('-', '_', $key));
 | 
			
		||||
| 
						 | 
				
			
			@ -91,8 +86,13 @@ class ResourceResponseSubscriberTest extends UnitTestCase {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    foreach ($methods as $method) {
 | 
			
		||||
      $request = Request::create('/rest/test', $method, $parameters, [], [], $request_headers, $request_body);
 | 
			
		||||
      $route_requirement_key_format = $request->isMethodSafe() ? '_format' : '_content_type_format';
 | 
			
		||||
      $request = Request::create('/rest/test', $method, [], [], [], $request_headers, $request_body);
 | 
			
		||||
      // \Drupal\Core\StackMiddleware\NegotiationMiddleware normally takes care
 | 
			
		||||
      // of this so we'll hard code it here.
 | 
			
		||||
      if ($request_format) {
 | 
			
		||||
        $request->setRequestFormat($request_format);
 | 
			
		||||
      }
 | 
			
		||||
      $route_requirement_key_format = $request->isMethodCacheable() ? '_format' : '_content_type_format';
 | 
			
		||||
      $route_match = new RouteMatch('test', new Route('/rest/test', ['_rest_resource_config' => $this->randomMachineName()], [$route_requirement_key_format => implode('|', $supported_formats)]));
 | 
			
		||||
 | 
			
		||||
      $resource_response_subscriber = new ResourceResponseSubscriber(
 | 
			
		||||
| 
						 | 
				
			
			@ -116,11 +116,6 @@ class ResourceResponseSubscriberTest extends UnitTestCase {
 | 
			
		|||
  public function testOnResponseWithCacheableResponse($methods, array $supported_formats, $request_format, array $request_headers, $request_body, $expected_response_format, $expected_response_content_type, $expected_response_content) {
 | 
			
		||||
    $rest_config_name = $this->randomMachineName();
 | 
			
		||||
 | 
			
		||||
    $parameters = [];
 | 
			
		||||
    if ($request_format !== FALSE) {
 | 
			
		||||
      $parameters['_format'] = $request_format;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    foreach ($request_headers as $key => $value) {
 | 
			
		||||
      unset($request_headers[$key]);
 | 
			
		||||
      $key = strtoupper(str_replace('-', '_', $key));
 | 
			
		||||
| 
						 | 
				
			
			@ -128,8 +123,13 @@ class ResourceResponseSubscriberTest extends UnitTestCase {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    foreach ($methods as $method) {
 | 
			
		||||
      $request = Request::create('/rest/test', $method, $parameters, [], [], $request_headers, $request_body);
 | 
			
		||||
      $route_requirement_key_format = $request->isMethodSafe() ? '_format' : '_content_type_format';
 | 
			
		||||
      $request = Request::create('/rest/test', $method, [], [], [], $request_headers, $request_body);
 | 
			
		||||
      // \Drupal\Core\StackMiddleware\NegotiationMiddleware normally takes care
 | 
			
		||||
      // of this so we'll hard code it here.
 | 
			
		||||
      if ($request_format) {
 | 
			
		||||
        $request->setRequestFormat($request_format);
 | 
			
		||||
      }
 | 
			
		||||
      $route_requirement_key_format = $request->isMethodCacheable() ? '_format' : '_content_type_format';
 | 
			
		||||
      $route_match = new RouteMatch('test', new Route('/rest/test', ['_rest_resource_config' => $rest_config_name], [$route_requirement_key_format => implode('|', $supported_formats)]));
 | 
			
		||||
 | 
			
		||||
      // The RequestHandler must return a ResourceResponseInterface object.
 | 
			
		||||
| 
						 | 
				
			
			@ -166,11 +166,6 @@ class ResourceResponseSubscriberTest extends UnitTestCase {
 | 
			
		|||
  public function testOnResponseWithUncacheableResponse($methods, array $supported_formats, $request_format, array $request_headers, $request_body, $expected_response_format, $expected_response_content_type, $expected_response_content) {
 | 
			
		||||
    $rest_config_name = $this->randomMachineName();
 | 
			
		||||
 | 
			
		||||
    $parameters = [];
 | 
			
		||||
    if ($request_format !== FALSE) {
 | 
			
		||||
      $parameters['_format'] = $request_format;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    foreach ($request_headers as $key => $value) {
 | 
			
		||||
      unset($request_headers[$key]);
 | 
			
		||||
      $key = strtoupper(str_replace('-', '_', $key));
 | 
			
		||||
| 
						 | 
				
			
			@ -178,8 +173,13 @@ class ResourceResponseSubscriberTest extends UnitTestCase {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    foreach ($methods as $method) {
 | 
			
		||||
      $request = Request::create('/rest/test', $method, $parameters, [], [], $request_headers, $request_body);
 | 
			
		||||
      $route_requirement_key_format = $request->isMethodSafe() ? '_format' : '_content_type_format';
 | 
			
		||||
      $request = Request::create('/rest/test', $method, [], [], [], $request_headers, $request_body);
 | 
			
		||||
      // \Drupal\Core\StackMiddleware\NegotiationMiddleware normally takes care
 | 
			
		||||
      // of this so we'll hard code it here.
 | 
			
		||||
      if ($request_format) {
 | 
			
		||||
        $request->setRequestFormat($request_format);
 | 
			
		||||
      }
 | 
			
		||||
      $route_requirement_key_format = $request->isMethodCacheable() ? '_format' : '_content_type_format';
 | 
			
		||||
      $route_match = new RouteMatch('test', new Route('/rest/test', ['_rest_resource_config' => $rest_config_name], [$route_requirement_key_format => implode('|', $supported_formats)]));
 | 
			
		||||
 | 
			
		||||
      // The RequestHandler must return a ResourceResponseInterface object.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -86,7 +86,7 @@ class FormTestStorageForm extends FormBase {
 | 
			
		|||
    //   that issue.
 | 
			
		||||
    if ($this->getRequest()->get('immutable')) {
 | 
			
		||||
      $form_state->addBuildInfo('immutable', TRUE);
 | 
			
		||||
      if ($this->getRequest()->get('cache') && $this->getRequest()->isMethodSafe()) {
 | 
			
		||||
      if ($this->getRequest()->get('cache') && $this->getRequest()->isMethodCacheable()) {
 | 
			
		||||
        $form_state->setRequestMethod('FAKE');
 | 
			
		||||
        $form_state->setCached();
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,7 +17,8 @@ class ThemeTestSubscriber implements EventSubscriberInterface {
 | 
			
		|||
  /**
 | 
			
		||||
   * The used container.
 | 
			
		||||
   *
 | 
			
		||||
   * @var \Symfony\Component\DependencyInjection\IntrospectableContainerInterface
 | 
			
		||||
   * @todo This variable is never initialzed, so we don't know what it is.
 | 
			
		||||
   *   See https://www.drupal.org/node/2721315
 | 
			
		||||
   */
 | 
			
		||||
  protected $container;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -654,46 +654,6 @@ class ContainerTest extends TestCase {
 | 
			
		|||
    $this->assertTrue($this->container->initialized('late.service_alias'), 'Late service is initialized after it was retrieved once.');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Tests that unsupported methods throw an Exception.
 | 
			
		||||
   *
 | 
			
		||||
   * @covers ::enterScope
 | 
			
		||||
   * @covers ::leaveScope
 | 
			
		||||
   * @covers ::addScope
 | 
			
		||||
   * @covers ::hasScope
 | 
			
		||||
   * @covers ::isScopeActive
 | 
			
		||||
   *
 | 
			
		||||
   * @dataProvider scopeExceptionTestProvider
 | 
			
		||||
   */
 | 
			
		||||
  public function testScopeFunctionsWithException($method, $argument) {
 | 
			
		||||
    $callable = [
 | 
			
		||||
      $this->container,
 | 
			
		||||
      $method,
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    $this->setExpectedException(\BadMethodCallException::class);
 | 
			
		||||
    $callable($argument);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Data provider for scopeExceptionTestProvider().
 | 
			
		||||
   *
 | 
			
		||||
   * @return array[]
 | 
			
		||||
   *   Returns per data set an array with:
 | 
			
		||||
   *     - method name to call
 | 
			
		||||
   *     - argument to pass
 | 
			
		||||
   */
 | 
			
		||||
  public function scopeExceptionTestProvider() {
 | 
			
		||||
    $scope = $this->prophesize('\Symfony\Component\DependencyInjection\ScopeInterface')->reveal();
 | 
			
		||||
    return [
 | 
			
		||||
      ['enterScope', 'test_scope'],
 | 
			
		||||
      ['leaveScope', 'test_scope'],
 | 
			
		||||
      ['hasScope', 'test_scope'],
 | 
			
		||||
      ['isScopeActive', 'test_scope'],
 | 
			
		||||
      ['addScope', $scope],
 | 
			
		||||
    ];
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Tests that Container::getServiceIds() works properly.
 | 
			
		||||
   *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -249,7 +249,6 @@ namespace Drupal\Tests\Component\DependencyInjection\Dumper {
 | 
			
		|||
        'arguments_count' => 0,
 | 
			
		||||
        'properties' => [],
 | 
			
		||||
        'calls' => [],
 | 
			
		||||
        'scope' => ContainerInterface::SCOPE_CONTAINER,
 | 
			
		||||
        'shared' => TRUE,
 | 
			
		||||
        'factory' => FALSE,
 | 
			
		||||
        'configurator' => FALSE,
 | 
			
		||||
| 
						 | 
				
			
			@ -361,11 +360,6 @@ namespace Drupal\Tests\Component\DependencyInjection\Dumper {
 | 
			
		|||
        'calls' => $calls,
 | 
			
		||||
      ] + $base_service_definition;
 | 
			
		||||
 | 
			
		||||
      $service_definitions[] = [
 | 
			
		||||
        'scope' => ContainerInterface::SCOPE_PROTOTYPE,
 | 
			
		||||
        'shared' => FALSE,
 | 
			
		||||
      ] + $base_service_definition;
 | 
			
		||||
 | 
			
		||||
      $service_definitions[] = [
 | 
			
		||||
          'shared' => FALSE,
 | 
			
		||||
        ] + $base_service_definition;
 | 
			
		||||
| 
						 | 
				
			
			@ -408,7 +402,6 @@ namespace Drupal\Tests\Component\DependencyInjection\Dumper {
 | 
			
		|||
        $definition->getArguments()->willReturn($service_definition['arguments']);
 | 
			
		||||
        $definition->getProperties()->willReturn($service_definition['properties']);
 | 
			
		||||
        $definition->getMethodCalls()->willReturn($service_definition['calls']);
 | 
			
		||||
        $definition->getScope()->willReturn($service_definition['scope']);
 | 
			
		||||
        $definition->isShared()->willReturn($service_definition['shared']);
 | 
			
		||||
        $definition->getDecoratedService()->willReturn(NULL);
 | 
			
		||||
        $definition->getFactory()->willReturn($service_definition['factory']);
 | 
			
		||||
| 
						 | 
				
			
			@ -441,9 +434,6 @@ namespace Drupal\Tests\Component\DependencyInjection\Dumper {
 | 
			
		|||
          }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Remove any remaining scope.
 | 
			
		||||
        unset($filtered_service_definition['scope']);
 | 
			
		||||
 | 
			
		||||
        if (isset($filtered_service_definition['public']) && $filtered_service_definition['public'] === FALSE) {
 | 
			
		||||
          $services_provided[] = [
 | 
			
		||||
            ['foo_service' => $definition->reveal()],
 | 
			
		||||
| 
						 | 
				
			
			@ -481,21 +471,6 @@ namespace Drupal\Tests\Component\DependencyInjection\Dumper {
 | 
			
		|||
      ];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Tests that the correct InvalidArgumentException is thrown for getScope().
 | 
			
		||||
     *
 | 
			
		||||
     * @covers ::getServiceDefinition
 | 
			
		||||
     */
 | 
			
		||||
    public function testGetServiceDefinitionWithInvalidScope() {
 | 
			
		||||
      $bar_definition = new Definition('\stdClass');
 | 
			
		||||
      $bar_definition->setScope('foo_scope');
 | 
			
		||||
      $services['bar'] = $bar_definition;
 | 
			
		||||
 | 
			
		||||
      $this->containerBuilder->getDefinitions()->willReturn($services);
 | 
			
		||||
      $this->setExpectedException(InvalidArgumentException::class);
 | 
			
		||||
      $this->dumper->getArray();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Tests that references to aliases work correctly.
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,9 +6,10 @@ namespace Drupal\Tests\Component\EventDispatcher;
 | 
			
		|||
use Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher;
 | 
			
		||||
use Symfony\Component\DependencyInjection\Container;
 | 
			
		||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
 | 
			
		||||
use Symfony\Component\DependencyInjection\ContainerInterface;
 | 
			
		||||
use Symfony\Component\EventDispatcher\Tests\CallableClass;
 | 
			
		||||
use Symfony\Component\EventDispatcher\Tests\TestEventListener;
 | 
			
		||||
use Symfony\Component\EventDispatcher\Tests\ContainerAwareEventDispatcherTest as SymfonyContainerAwareEventDispatcherTest;
 | 
			
		||||
use Symfony\Component\EventDispatcher\Tests\TestEventListener;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Unit tests for the ContainerAwareEventDispatcher.
 | 
			
		||||
| 
						 | 
				
			
			@ -37,7 +38,7 @@ class ContainerAwareEventDispatcherTest extends SymfonyContainerAwareEventDispat
 | 
			
		|||
        // When passing in callables exclusively as listeners into the event
 | 
			
		||||
        // dispatcher constructor, the event dispatcher must not attempt to
 | 
			
		||||
        // resolve any services.
 | 
			
		||||
        $container = $this->getMock('Symfony\Component\DependencyInjection\IntrospectableContainerInterface');
 | 
			
		||||
        $container = $this->getMock(ContainerInterface::class);
 | 
			
		||||
        $container->expects($this->never())->method($this->anything());
 | 
			
		||||
 | 
			
		||||
        $firstListener = new CallableClass();
 | 
			
		||||
| 
						 | 
				
			
			@ -72,7 +73,7 @@ class ContainerAwareEventDispatcherTest extends SymfonyContainerAwareEventDispat
 | 
			
		|||
        // When passing in callables exclusively as listeners into the event
 | 
			
		||||
        // dispatcher constructor, the event dispatcher must not attempt to
 | 
			
		||||
        // resolve any services.
 | 
			
		||||
        $container = $this->getMock('Symfony\Component\DependencyInjection\IntrospectableContainerInterface');
 | 
			
		||||
        $container = $this->getMock(ContainerInterface::class);
 | 
			
		||||
        $container->expects($this->never())->method($this->anything());
 | 
			
		||||
 | 
			
		||||
        $firstListener = new CallableClass();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,6 +10,7 @@ use Drupal\Core\Language\LanguageInterface;
 | 
			
		|||
use Drupal\Core\TypedData\TypedDataManagerInterface;
 | 
			
		||||
use Drupal\Tests\UnitTestCase;
 | 
			
		||||
use Drupal\Core\Language\Language;
 | 
			
		||||
use Symfony\Component\Validator\Validator\ValidatorInterface;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @coversDefaultClass \Drupal\Core\Entity\ContentEntityBase
 | 
			
		||||
| 
						 | 
				
			
			@ -327,7 +328,7 @@ class ContentEntityBaseUnitTest extends UnitTestCase {
 | 
			
		|||
   * @covers ::validate
 | 
			
		||||
   */
 | 
			
		||||
  public function testValidate() {
 | 
			
		||||
    $validator = $this->getMock('\Symfony\Component\Validator\ValidatorInterface');
 | 
			
		||||
    $validator = $this->getMock(ValidatorInterface::class);
 | 
			
		||||
    /** @var \Symfony\Component\Validator\ConstraintViolationList|\PHPUnit_Framework_MockObject_MockObject $empty_violation_list */
 | 
			
		||||
    $empty_violation_list = $this->getMockBuilder('\Symfony\Component\Validator\ConstraintViolationList')
 | 
			
		||||
      ->setMethods(NULL)
 | 
			
		||||
| 
						 | 
				
			
			@ -360,7 +361,7 @@ class ContentEntityBaseUnitTest extends UnitTestCase {
 | 
			
		|||
   * @covers ::preSave
 | 
			
		||||
   */
 | 
			
		||||
  public function testRequiredValidation() {
 | 
			
		||||
    $validator = $this->getMock('\Symfony\Component\Validator\ValidatorInterface');
 | 
			
		||||
    $validator = $this->getMock(ValidatorInterface::class);
 | 
			
		||||
    /** @var \Symfony\Component\Validator\ConstraintViolationList|\PHPUnit_Framework_MockObject_MockObject $empty_violation_list */
 | 
			
		||||
    $empty_violation_list = $this->getMockBuilder('\Symfony\Component\Validator\ConstraintViolationList')
 | 
			
		||||
      ->setMethods(NULL)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,10 @@ class FinalExceptionSubscriberTest extends UnitTestCase {
 | 
			
		|||
    $config_factory = $this->getConfigFactoryStub();
 | 
			
		||||
 | 
			
		||||
    $kernel = $this->prophesize(HttpKernelInterface::class);
 | 
			
		||||
    $request = Request::create('/test?_format=bananas');
 | 
			
		||||
    $request = Request::create('/test');
 | 
			
		||||
    // \Drupal\Core\StackMiddleware\NegotiationMiddleware normally takes care
 | 
			
		||||
    // of this so we'll hard code it here.
 | 
			
		||||
    $request->setRequestFormat('bananas');
 | 
			
		||||
    $e = new MethodNotAllowedHttpException(['POST', 'PUT'], 'test message');
 | 
			
		||||
    $event = new GetResponseForExceptionEvent($kernel->reveal(), $request, 'GET', $e);
 | 
			
		||||
    $subscriber = new TestDefaultExceptionSubscriber($config_factory);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue