Chris@0: registerTest($container); Chris@0: Chris@0: // Only register the private file stream wrapper if a file path has been set. Chris@0: if (Settings::get('file_private_path')) { Chris@0: $container->register('stream_wrapper.private', 'Drupal\Core\StreamWrapper\PrivateStream') Chris@0: ->addTag('stream_wrapper', ['scheme' => 'private']); Chris@0: } Chris@0: Chris@0: // Add the compiler pass that lets service providers modify existing Chris@0: // service definitions. This pass must come first so that later Chris@0: // list-building passes are operating on the post-alter services list. Chris@0: $container->addCompilerPass(new ModifyServiceDefinitionsPass()); Chris@0: Chris@0: $container->addCompilerPass(new ProxyServicesPass()); Chris@0: Chris@0: $container->addCompilerPass(new BackendCompilerPass()); Chris@0: Chris@0: $container->addCompilerPass(new CorsCompilerPass()); Chris@0: Chris@0: $container->addCompilerPass(new StackedKernelPass()); Chris@0: Chris@0: $container->addCompilerPass(new StackedSessionHandlerPass()); Chris@0: Chris@0: $container->addCompilerPass(new MainContentRenderersPass()); Chris@0: Chris@0: // Collect tagged handler services as method calls on consumer services. Chris@0: $container->addCompilerPass(new TaggedHandlersPass()); Chris@0: $container->addCompilerPass(new RegisterStreamWrappersPass()); Chris@0: $container->addCompilerPass(new GuzzleMiddlewarePass()); Chris@0: Chris@0: $container->addCompilerPass(new TwigExtensionPass()); Chris@0: Chris@0: // Add a compiler pass for registering event subscribers. Chris@0: $container->addCompilerPass(new RegisterEventSubscribersPass(), PassConfig::TYPE_AFTER_REMOVING); Chris@0: Chris@0: $container->addCompilerPass(new RegisterAccessChecksPass()); Chris@0: Chris@0: // Add a compiler pass for registering services needing destruction. Chris@0: $container->addCompilerPass(new RegisterServicesForDestructionPass()); Chris@0: Chris@0: // Add the compiler pass that will process the tagged services. Chris@0: $container->addCompilerPass(new ListCacheBinsPass()); Chris@0: $container->addCompilerPass(new CacheContextsPass()); Chris@0: $container->addCompilerPass(new ContextProvidersPass()); Chris@0: $container->addCompilerPass(new AuthenticationProviderPass()); Chris@0: Chris@0: // Register plugin managers. Chris@0: $container->addCompilerPass(new PluginManagerPass()); Chris@0: Chris@0: $container->addCompilerPass(new DependencySerializationTraitPass()); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Alters the UUID service to use the most efficient method available. Chris@0: * Chris@0: * @param \Drupal\Core\DependencyInjection\ContainerBuilder $container Chris@0: * The container builder. Chris@0: */ Chris@0: public function alter(ContainerBuilder $container) { Chris@0: $uuid_service = $container->getDefinition('uuid'); Chris@0: // Debian/Ubuntu uses the (broken) OSSP extension as their UUID Chris@0: // implementation. The OSSP implementation is not compatible with the Chris@0: // PECL functions. Chris@0: if (function_exists('uuid_create') && !function_exists('uuid_make')) { Chris@0: $uuid_service->setClass('Drupal\Component\Uuid\Pecl'); Chris@0: } Chris@0: // Try to use the COM implementation for Windows users. Chris@0: elseif (function_exists('com_create_guid')) { Chris@0: $uuid_service->setClass('Drupal\Component\Uuid\Com'); Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * Registers services and event subscribers for a site under test. Chris@0: * Chris@0: * @param \Drupal\Core\DependencyInjection\ContainerBuilder $container Chris@0: * The container builder. Chris@0: */ Chris@0: protected function registerTest(ContainerBuilder $container) { Chris@0: // Do nothing if we are not in a test environment. Chris@0: if (!drupal_valid_test_ua()) { Chris@0: return; Chris@0: } Chris@0: // Add the HTTP request middleware to Guzzle. Chris@0: $container Chris@0: ->register('test.http_client.middleware', 'Drupal\Core\Test\HttpClientMiddleware\TestHttpClientMiddleware') Chris@0: ->addTag('http_client_middleware'); Chris@0: } Chris@0: Chris@0: }