summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorcatch <catch@35733.no-reply.drupal.org>2024-03-04 18:14:01 +0000
committercatch <catch@35733.no-reply.drupal.org>2024-03-04 18:14:01 +0000
commit2ab774d6b87f11d891f71c87b4469e9cd01262c7 (patch)
treee9333e6ed059187e1e237bc59aca23ae6e687efc
parentea9cc7538b80c29f56324a4a115d263d1a635816 (diff)
downloaddrupal-2ab774d6b87f11d891f71c87b4469e9cd01262c7.tar.gz
drupal-2ab774d6b87f11d891f71c87b4469e9cd01262c7.zip
Issue #2926070 by smustgrave, dimitriskr, andypost, gnuget, zahord, yogeshmpawar, MerryHamster, kim.pepper, alexpott, Mile23, daffie, larowlan: Deprecate ModuleHandlerInterface::getName()
-rw-r--r--core/lib/Drupal/Core/Extension/ModuleHandler.php1
-rw-r--r--core/lib/Drupal/Core/Extension/ModuleHandlerInterface.php5
-rw-r--r--core/lib/Drupal/Core/Menu/Form/MenuLinkDefaultForm.php14
-rw-r--r--core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php35
-rw-r--r--core/lib/Drupal/Core/Plugin/DefaultPluginManager.php8
-rw-r--r--core/modules/breakpoint/breakpoint.services.yml2
-rw-r--r--core/modules/breakpoint/src/BreakpointManager.php12
-rw-r--r--core/modules/field/field.module3
-rw-r--r--core/modules/help/src/Controller/HelpController.php2
-rw-r--r--core/modules/help/src/Plugin/HelpSection/HookHelpSection.php14
-rw-r--r--core/modules/help/tests/src/Functional/HelpTest.php5
-rw-r--r--core/modules/help/tests/src/Functional/NoHelpTest.php2
-rw-r--r--core/modules/language/language.module5
-rw-r--r--core/modules/migrate_drupal_ui/src/Form/ReviewForm.php30
-rw-r--r--core/modules/user/src/Form/EntityPermissionsForm.php14
-rw-r--r--core/modules/user/src/Form/UserPermissionsForm.php14
-rw-r--r--core/modules/user/src/PermissionHandler.php11
-rw-r--r--core/modules/user/src/Plugin/views/access/Permission.php30
-rw-r--r--core/modules/user/src/Plugin/views/field/UserData.php18
-rw-r--r--core/modules/user/src/Plugin/views/filter/Permissions.php30
-rw-r--r--core/modules/user/tests/src/Unit/Form/EntityPermissionsFormTest.php4
-rw-r--r--core/modules/user/tests/src/Unit/PermissionHandlerTest.php19
-rw-r--r--core/modules/user/user.services.yml2
-rw-r--r--core/tests/Drupal/FunctionalTests/Installer/InstallerTest.php3
-rw-r--r--core/tests/Drupal/KernelTests/Core/Extension/ModuleHandlerTest.php12
-rw-r--r--core/tests/Drupal/Tests/Core/Menu/MenuLinkDefaultFormTest.php5
-rw-r--r--core/tests/Drupal/Tests/Core/Plugin/CategorizingPluginManagerTraitTest.php24
27 files changed, 244 insertions, 80 deletions
diff --git a/core/lib/Drupal/Core/Extension/ModuleHandler.php b/core/lib/Drupal/Core/Extension/ModuleHandler.php
index 6508be6aec7..61e2f638fe5 100644
--- a/core/lib/Drupal/Core/Extension/ModuleHandler.php
+++ b/core/lib/Drupal/Core/Extension/ModuleHandler.php
@@ -717,6 +717,7 @@ class ModuleHandler implements ModuleHandlerInterface {
* {@inheritdoc}
*/
public function getName($module) {
+ @trigger_error(__METHOD__ . '() is deprecated in drupal:10.3.0 and is removed from drupal:12.0.0. Use \Drupal\Core\Extension\ModuleExtensionList::getName($module) instead. See https://www.drupal.org/node/3310017', E_USER_DEPRECATED);
return \Drupal::service('extension.list.module')->getName($module);
}
diff --git a/core/lib/Drupal/Core/Extension/ModuleHandlerInterface.php b/core/lib/Drupal/Core/Extension/ModuleHandlerInterface.php
index f1fb3e4a869..36df82821cf 100644
--- a/core/lib/Drupal/Core/Extension/ModuleHandlerInterface.php
+++ b/core/lib/Drupal/Core/Extension/ModuleHandlerInterface.php
@@ -406,6 +406,11 @@ interface ModuleHandlerInterface {
* @return string
* Returns the human readable name of the module or the machine name passed
* in if no matching module is found.
+ *
+ * @deprecated in drupal:10.3.0 and is removed from drupal:12.0.0.
+ * Use \Drupal::service('extension.list.module')->getName($module) instead.
+ *
+ * @see https://www.drupal.org/node/3310017
*/
public function getName($module);
diff --git a/core/lib/Drupal/Core/Menu/Form/MenuLinkDefaultForm.php b/core/lib/Drupal/Core/Menu/Form/MenuLinkDefaultForm.php
index 36b91f6b3c2..66341b3c3aa 100644
--- a/core/lib/Drupal/Core/Menu/Form/MenuLinkDefaultForm.php
+++ b/core/lib/Drupal/Core/Menu/Form/MenuLinkDefaultForm.php
@@ -3,6 +3,7 @@
namespace Drupal\Core\Menu\Form;
use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
+use Drupal\Core\Extension\ModuleExtensionList;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Menu\MenuLinkInterface;
use Drupal\Core\Menu\MenuLinkManagerInterface;
@@ -60,12 +61,18 @@ class MenuLinkDefaultForm implements MenuLinkFormInterface, ContainerInjectionIn
* The string translation.
* @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
* The module handler;
+ * @param \Drupal\Core\Extension\ModuleExtensionList|null $moduleExtensionList
+ * The module extension list.
*/
- public function __construct(MenuLinkManagerInterface $menu_link_manager, MenuParentFormSelectorInterface $menu_parent_selector, TranslationInterface $string_translation, ModuleHandlerInterface $module_handler) {
+ public function __construct(MenuLinkManagerInterface $menu_link_manager, MenuParentFormSelectorInterface $menu_parent_selector, TranslationInterface $string_translation, ModuleHandlerInterface $module_handler, protected ?ModuleExtensionList $moduleExtensionList = NULL) {
$this->menuLinkManager = $menu_link_manager;
$this->menuParentSelector = $menu_parent_selector;
$this->stringTranslation = $string_translation;
$this->moduleHandler = $module_handler;
+ if ($this->moduleExtensionList === NULL) {
+ @trigger_error('Calling ' . __METHOD__ . '() without the $moduleExtensionList argument is deprecated in drupal:10.3.0 and will be required in drupal:12.0.0. See https://www.drupal.org/node/3310017', E_USER_DEPRECATED);
+ $this->moduleExtensionList = \Drupal::service('extension.list.module');
+ }
}
/**
@@ -76,7 +83,8 @@ class MenuLinkDefaultForm implements MenuLinkFormInterface, ContainerInjectionIn
$container->get('plugin.manager.menu.link'),
$container->get('menu.parent_form_selector'),
$container->get('string_translation'),
- $container->get('module_handler')
+ $container->get('module_handler'),
+ $container->get('extension.list.module')
);
}
@@ -96,7 +104,7 @@ class MenuLinkDefaultForm implements MenuLinkFormInterface, ContainerInjectionIn
$provider = $this->menuLink->getProvider();
$form['info'] = [
'#type' => 'item',
- '#title' => $this->t('This link is provided by the @name module. The title and path cannot be edited.', ['@name' => $this->moduleHandler->getName($provider)]),
+ '#title' => $this->t('This link is provided by the @name module. The title and path cannot be edited.', ['@name' => $this->moduleExtensionList->getName($provider)]),
];
$form['id'] = [
'#type' => 'value',
diff --git a/core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php b/core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php
index 1ce14468026..763006bef54 100644
--- a/core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php
+++ b/core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php
@@ -2,6 +2,8 @@
namespace Drupal\Core\Plugin;
+use Drupal\Core\Extension\Exception\UnknownExtensionException;
+use Drupal\Core\Extension\ModuleExtensionList;
use Drupal\Core\StringTranslation\StringTranslationTrait;
/**
@@ -46,13 +48,13 @@ trait CategorizingPluginManagerTrait {
* machine-readable name passed.
*/
protected function getProviderName($provider) {
- $list = $this->getModuleHandler()->getModuleList();
- // If the module exists, return its human-readable name.
- if (isset($list[$provider])) {
- return $this->getModuleHandler()->getName($provider);
+ try {
+ return $this->getModuleExtensionList()->getName($provider);
+ }
+ catch (UnknownExtensionException $e) {
+ // Otherwise, return the machine name.
+ return $provider;
}
- // Otherwise, return the machine name.
- return $provider;
}
/**
@@ -60,8 +62,14 @@ trait CategorizingPluginManagerTrait {
*
* @return \Drupal\Core\Extension\ModuleHandlerInterface
* The module handler.
+ *
+ * @deprecated in drupal:10.3.0 and is removed from drupal:12.0.0. There is no
+ * replacement.
+ *
+ * @see https://www.drupal.org/node/3310017
*/
public function getModuleHandler() {
+ @trigger_error(__METHOD__ . '() is deprecated in drupal:10.3.0 and is removed from drupal:12.0.0. There is no replacement. See https://www.drupal.org/node/3310017', E_USER_DEPRECATED);
// If the class has an injected module handler, use it. Otherwise fall back
// to fetch it from the service container.
if (isset($this->moduleHandler)) {
@@ -71,6 +79,21 @@ trait CategorizingPluginManagerTrait {
}
/**
+ * Returns the module extension list used.
+ *
+ * @return \Drupal\Core\Extension\ModuleExtensionList
+ * The module extension list.
+ */
+ protected function getModuleExtensionList(): ModuleExtensionList {
+ // If the class has an injected module extension list, use it. Otherwise
+ // fall back to fetch it from the service container.
+ if (isset($this->moduleExtensionList)) {
+ return $this->moduleExtensionList;
+ }
+ return \Drupal::service('extension.list.module');
+ }
+
+ /**
* {@inheritdoc}
*/
public function getCategories() {
diff --git a/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php b/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php
index 3b9036e6633..1f62d84e4a6 100644
--- a/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php
+++ b/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php
@@ -6,6 +6,7 @@ use Drupal\Component\Assertion\Inspector;
use Drupal\Component\Plugin\Attribute\AttributeInterface;
use Drupal\Component\Plugin\Definition\PluginDefinitionInterface;
use Drupal\Component\Plugin\Discovery\CachedDiscoveryInterface;
+use Drupal\Core\Extension\ModuleExtensionList;
use Drupal\Core\Cache\CacheableDependencyInterface;
use Drupal\Core\Cache\CacheBackendInterface;
use Drupal\Core\Cache\UseCacheBackendTrait;
@@ -69,6 +70,13 @@ class DefaultPluginManager extends PluginManagerBase implements PluginManagerInt
protected $moduleHandler;
/**
+ * The module extension list.
+ *
+ * @var \Drupal\Core\Extension\ModuleExtensionList
+ */
+ protected ?ModuleExtensionList $moduleExtensionList;
+
+ /**
* A set of defaults to be referenced by $this->processDefinition().
*
* Allows for additional processing of plugins when necessary or helpful for
diff --git a/core/modules/breakpoint/breakpoint.services.yml b/core/modules/breakpoint/breakpoint.services.yml
index 5bfcbe4111b..ead362d58b4 100644
--- a/core/modules/breakpoint/breakpoint.services.yml
+++ b/core/modules/breakpoint/breakpoint.services.yml
@@ -1,7 +1,7 @@
services:
breakpoint.manager:
class: Drupal\breakpoint\BreakpointManager
- arguments: ['@module_handler', '@theme_handler', '@cache.discovery', '@string_translation']
+ arguments: ['@module_handler', '@theme_handler', '@cache.discovery', '@string_translation', '@extension.list.module']
tags:
- { name: plugin_manager_cache_clear }
Drupal\breakpoint\BreakpointManagerInterface: '@breakpoint.manager'
diff --git a/core/modules/breakpoint/src/BreakpointManager.php b/core/modules/breakpoint/src/BreakpointManager.php
index 070b0bf0438..930e6a694a4 100644
--- a/core/modules/breakpoint/src/BreakpointManager.php
+++ b/core/modules/breakpoint/src/BreakpointManager.php
@@ -4,6 +4,7 @@ namespace Drupal\breakpoint;
use Drupal\Core\Cache\Cache;
use Drupal\Core\Cache\CacheBackendInterface;
+use Drupal\Core\Extension\ModuleExtensionList;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Extension\ThemeHandlerInterface;
use Drupal\Core\Plugin\DefaultPluginManager;
@@ -98,11 +99,18 @@ class BreakpointManager extends DefaultPluginManager implements BreakpointManage
* The cache backend.
* @param \Drupal\Core\StringTranslation\TranslationInterface $string_translation
* The string translation service.
+ * @param \Drupal\Core\Extension\ModuleExtensionList|null $module_extension_list
+ * The module extension list.
*/
- public function __construct(ModuleHandlerInterface $module_handler, ThemeHandlerInterface $theme_handler, CacheBackendInterface $cache_backend, TranslationInterface $string_translation) {
+ public function __construct(ModuleHandlerInterface $module_handler, ThemeHandlerInterface $theme_handler, CacheBackendInterface $cache_backend, TranslationInterface $string_translation, ?ModuleExtensionList $module_extension_list = NULL) {
$this->factory = new ContainerFactory($this);
$this->moduleHandler = $module_handler;
$this->themeHandler = $theme_handler;
+ if ($module_extension_list === NULL) {
+ @trigger_error('Calling ' . __METHOD__ . '() without the $module_extension_list argument is deprecated in drupal:10.3.0 and will be required in drupal:12.0.0. See https://www.drupal.org/node/3310017', E_USER_DEPRECATED);
+ $module_extension_list = \Drupal::service('extension.list.module');
+ }
+ $this->moduleExtensionList = $module_extension_list;
$this->setStringTranslation($string_translation);
$this->alterInfo('breakpoints');
$this->setCacheBackend($cache_backend, 'breakpoints', ['breakpoints']);
@@ -244,7 +252,7 @@ class BreakpointManager extends DefaultPluginManager implements BreakpointManage
protected function getGroupLabel($group) {
// Extension names are not translatable.
if ($this->moduleHandler->moduleExists($group)) {
- $label = $this->moduleHandler->getName($group);
+ $label = $this->moduleExtensionList->getName($group);
}
elseif ($this->themeHandler->themeExists($group)) {
$label = $this->themeHandler->getName($group);
diff --git a/core/modules/field/field.module b/core/modules/field/field.module
index f68daf91e3e..c5428e53b5f 100644
--- a/core/modules/field/field.module
+++ b/core/modules/field/field.module
@@ -107,11 +107,12 @@ function field_help($route_name, RouteMatchInterface $route_match) {
}
$providers = array_unique($providers);
sort($providers);
+ $module_extension_list = \Drupal::service('extension.list.module');
foreach ($providers as $provider) {
// Skip plugins provided by core components as they do not implement
// hook_help().
if (isset($modules[$provider])) {
- $display = \Drupal::moduleHandler()->getName($provider);
+ $display = $module_extension_list->getName($provider);
if (\Drupal::moduleHandler()->hasImplementations('help', $provider)) {
$items[] = Link::fromTextAndUrl($display, Url::fromRoute('help.page', ['name' => $provider]))->toRenderable();
}
diff --git a/core/modules/help/src/Controller/HelpController.php b/core/modules/help/src/Controller/HelpController.php
index 6f5cc767c84..5b33528a889 100644
--- a/core/modules/help/src/Controller/HelpController.php
+++ b/core/modules/help/src/Controller/HelpController.php
@@ -162,7 +162,7 @@ class HelpController extends ControllerBase {
public function helpPage($name) {
$build = [];
if ($this->moduleHandler()->hasImplementations('help', $name)) {
- $module_name = $this->moduleHandler()->getName($name);
+ $module_name = $this->moduleExtensionList->getName($name);
$build['#title'] = $module_name;
$info = $this->moduleExtensionList->getExtensionInfo($name);
diff --git a/core/modules/help/src/Plugin/HelpSection/HookHelpSection.php b/core/modules/help/src/Plugin/HelpSection/HookHelpSection.php
index 9336d7fde40..58350f5b9f1 100644
--- a/core/modules/help/src/Plugin/HelpSection/HookHelpSection.php
+++ b/core/modules/help/src/Plugin/HelpSection/HookHelpSection.php
@@ -2,6 +2,7 @@
namespace Drupal\help\Plugin\HelpSection;
+use Drupal\Core\Extension\ModuleExtensionList;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\Core\Link;
@@ -37,10 +38,16 @@ class HookHelpSection extends HelpSectionPluginBase implements ContainerFactoryP
* The plugin implementation definition.
* @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
* The module handler service.
+ * @param \Drupal\Core\Extension\ModuleExtensionList|null $moduleExtensionList
+ * The module extension list.
*/
- public function __construct(array $configuration, $plugin_id, $plugin_definition, ModuleHandlerInterface $module_handler) {
+ public function __construct(array $configuration, $plugin_id, $plugin_definition, ModuleHandlerInterface $module_handler, protected ?ModuleExtensionList $moduleExtensionList = NULL) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->moduleHandler = $module_handler;
+ if ($this->moduleExtensionList === NULL) {
+ @trigger_error('Calling ' . __METHOD__ . '() without the $moduleExtensionList argument is deprecated in drupal:10.3.0 and will be required in drupal:12.0.0. See https://www.drupal.org/node/3310017', E_USER_DEPRECATED);
+ $this->moduleExtensionList = \Drupal::service('extension.list.module');
+ }
}
/**
@@ -51,7 +58,8 @@ class HookHelpSection extends HelpSectionPluginBase implements ContainerFactoryP
$configuration,
$plugin_id,
$plugin_definition,
- $container->get('module_handler')
+ $container->get('module_handler'),
+ $container->get('extension.list.module'),
);
}
@@ -63,7 +71,7 @@ class HookHelpSection extends HelpSectionPluginBase implements ContainerFactoryP
$this->moduleHandler->invokeAllWith(
'help',
function (callable $hook, string $module) use (&$topics) {
- $title = $this->moduleHandler->getName($module);
+ $title = $this->moduleExtensionList->getName($module);
$topics[$title] = Link::createFromRoute($title, 'help.page', ['name' => $module]);
}
);
diff --git a/core/modules/help/tests/src/Functional/HelpTest.php b/core/modules/help/tests/src/Functional/HelpTest.php
index 57b99fe74e8..afcf2d04b4c 100644
--- a/core/modules/help/tests/src/Functional/HelpTest.php
+++ b/core/modules/help/tests/src/Functional/HelpTest.php
@@ -97,8 +97,9 @@ class HelpTest extends BrowserTestBase {
// Ensure a module which does not provide a module overview page is handled
// correctly.
- $this->clickLink(\Drupal::moduleHandler()->getName('help_test'));
- $this->assertSession()->pageTextContains('No help is available for module ' . \Drupal::moduleHandler()->getName('help_test'));
+ $module_name = \Drupal::service('extension.list.module')->getName('help_test');
+ $this->clickLink($module_name);
+ $this->assertSession()->pageTextContains('No help is available for module ' . $module_name);
// Verify that the order of topics is alphabetical by displayed module
// name, by checking the order of some modules, including some that would
diff --git a/core/modules/help/tests/src/Functional/NoHelpTest.php b/core/modules/help/tests/src/Functional/NoHelpTest.php
index 14999e29979..8252583f182 100644
--- a/core/modules/help/tests/src/Functional/NoHelpTest.php
+++ b/core/modules/help/tests/src/Functional/NoHelpTest.php
@@ -52,7 +52,7 @@ class NoHelpTest extends BrowserTestBase {
$this->assertFalse(\Drupal::moduleHandler()->hasImplementations('help', 'menu_test'), 'The menu_test module does not implement hook_help');
// Make sure the test module menu_test does not display a help link on
// admin/help.
- $this->assertSession()->pageTextNotContains(\Drupal::moduleHandler()->getName('menu_test'));
+ $this->assertSession()->pageTextNotContains(\Drupal::service('extension.list.module')->getName('menu_test'));
// Ensure that the module overview help page for a module that does not
// implement hook_help() results in a 404.
diff --git a/core/modules/language/language.module b/core/modules/language/language.module
index 7629cbf38c2..99453170239 100644
--- a/core/modules/language/language.module
+++ b/core/modules/language/language.module
@@ -418,6 +418,7 @@ function language_entity_field_access($operation, FieldDefinitionInterface $fiel
* Implements hook_tour_tips_alter().
*/
function language_tour_tips_alter(array &$tour_tips, EntityInterface $entity) {
+ $module_extension_list = \Drupal::service('extension.list.module');
foreach ($tour_tips as $tour_tip) {
if ($tour_tip->get('id') == 'language-overview') {
$additional_overview = '';
@@ -433,10 +434,10 @@ function language_tour_tips_alter(array &$tour_tips, EntityInterface $entity) {
$additional_continue = '';
$additional_modules = [];
if (!Drupal::service('module_handler')->moduleExists('locale')) {
- $additional_modules[] = Drupal::service('module_handler')->getName('locale');
+ $additional_modules[] = $module_extension_list->getName('locale');
}
if (!Drupal::service('module_handler')->moduleExists('content_translation')) {
- $additional_modules[] = Drupal::service('module_handler')->getName('content_translation');
+ $additional_modules[] = $module_extension_list->getName('content_translation');
}
if (!empty($additional_modules)) {
$additional_continue = t('Depending on your site features, additional modules that you might want to install are:') . '<ul>';
diff --git a/core/modules/migrate_drupal_ui/src/Form/ReviewForm.php b/core/modules/migrate_drupal_ui/src/Form/ReviewForm.php
index 3af6ac1202d..336734d0c47 100644
--- a/core/modules/migrate_drupal_ui/src/Form/ReviewForm.php
+++ b/core/modules/migrate_drupal_ui/src/Form/ReviewForm.php
@@ -5,7 +5,9 @@ namespace Drupal\migrate_drupal_ui\Form;
use Drupal\Component\Datetime\TimeInterface;
use Drupal\Core\Batch\BatchBuilder;
use Drupal\Core\Config\ConfigFactoryInterface;
+use Drupal\Core\DependencyInjection\DeprecatedServicePropertyTrait;
use Drupal\Core\Extension\Exception\UnknownExtensionException;
+use Drupal\Core\Extension\ModuleExtensionList;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\State\StateInterface;
@@ -33,6 +35,12 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
* @internal
*/
class ReviewForm extends MigrateUpgradeFormBase {
+ use DeprecatedServicePropertyTrait;
+
+ /**
+ * The service properties that should raise a deprecation error.
+ */
+ private array $deprecatedProperties = ['moduleHandler' => 'module_handler'];
/**
* The migrations.
@@ -49,11 +57,9 @@ class ReviewForm extends MigrateUpgradeFormBase {
protected $migrationState;
/**
- * Module handler.
- *
- * @var \Drupal\Core\Extension\ModuleHandlerInterface
+ * Module extension list.
*/
- protected $moduleHandler;
+ protected ModuleExtensionList $moduleExtensionList;
/**
* Source system data set in buildForm().
@@ -75,8 +81,8 @@ class ReviewForm extends MigrateUpgradeFormBase {
* Migration state service.
* @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
* The config factory service.
- * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
- * The module handler service.
+ * @param \Drupal\Core\Extension\ModuleExtensionList|\Drupal\Core\Extension\ModuleHandlerInterface $module_extension_list
+ * The module extension list.
* @param \Drupal\Component\Datetime\TimeInterface|null $time
* The time service.
*/
@@ -86,16 +92,20 @@ class ReviewForm extends MigrateUpgradeFormBase {
PrivateTempStoreFactory $tempstore_private,
MigrationState $migrationState,
ConfigFactoryInterface $config_factory,
- ModuleHandlerInterface $module_handler,
+ ModuleExtensionList|ModuleHandlerInterface $module_extension_list,
protected ?TimeInterface $time = NULL,
) {
parent::__construct($config_factory, $migration_plugin_manager, $state, $tempstore_private);
$this->migrationState = $migrationState;
- $this->moduleHandler = $module_handler;
if ($this->time === NULL) {
@trigger_error('Calling ' . __METHOD__ . ' without the $time argument is deprecated in drupal:10.3.0 and it will be required in drupal:11.0.0. See https://www.drupal.org/node/3112298', E_USER_DEPRECATED);
$this->time = \Drupal::service('datetime.time');
}
+ if ($module_extension_list instanceof ModuleHandlerInterface) {
+ @trigger_error('Calling ' . __METHOD__ . '() with the $module_extension_list argument as ModuleHandlerInterface is deprecated in drupal:10.3.0 and will be required in drupal:12.0.0. See https://www.drupal.org/node/3310017', E_USER_DEPRECATED);
+ $module_extension_list = \Drupal::service('extension.list.module');
+ }
+ $this->moduleExtensionList = $module_extension_list;
}
/**
@@ -108,7 +118,7 @@ class ReviewForm extends MigrateUpgradeFormBase {
$container->get('tempstore.private'),
$container->get('migrate_drupal.migration_state'),
$container->get('config.factory'),
- $container->get('module_handler'),
+ $container->get('extension.list.module'),
$container->get('datetime.time'),
);
}
@@ -311,7 +321,7 @@ class ReviewForm extends MigrateUpgradeFormBase {
}
else {
try {
- $destination_module_names[] = $this->moduleHandler->getName($destination_module);
+ $destination_module_names[] = $this->moduleExtensionList->getName($destination_module);
}
catch (UnknownExtensionException $e) {
$destination_module_names[] = $destination_module;
diff --git a/core/modules/user/src/Form/EntityPermissionsForm.php b/core/modules/user/src/Form/EntityPermissionsForm.php
index 126eb7b975b..48cd436145a 100644
--- a/core/modules/user/src/Form/EntityPermissionsForm.php
+++ b/core/modules/user/src/Form/EntityPermissionsForm.php
@@ -7,6 +7,7 @@ use Drupal\Core\Access\AccessResultInterface;
use Drupal\Core\Config\ConfigManagerInterface;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
+use Drupal\Core\Extension\ModuleExtensionList;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Routing\RouteMatchInterface;
@@ -58,9 +59,15 @@ class EntityPermissionsForm extends UserPermissionsForm {
* The configuration entity manager.
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
* The entity type manager service.
+ * @param \Drupal\Core\Extension\ModuleExtensionList|null $module_extension_list
+ * The module extension list.
*/
- public function __construct(PermissionHandlerInterface $permission_handler, RoleStorageInterface $role_storage, ModuleHandlerInterface $module_handler, ConfigManagerInterface $config_manager, EntityTypeManagerInterface $entity_type_manager) {
- parent::__construct($permission_handler, $role_storage, $module_handler);
+ public function __construct(PermissionHandlerInterface $permission_handler, RoleStorageInterface $role_storage, ModuleHandlerInterface $module_handler, ConfigManagerInterface $config_manager, EntityTypeManagerInterface $entity_type_manager, ?ModuleExtensionList $module_extension_list = NULL) {
+ if ($module_extension_list === NULL) {
+ @trigger_error('Calling ' . __METHOD__ . '() without the $module_extension_list argument is deprecated in drupal:10.3.0 and will be required in drupal:12.0.0. See https://www.drupal.org/node/3310017', E_USER_DEPRECATED);
+ $module_extension_list = \Drupal::service('extension.list.module');
+ }
+ parent::__construct($permission_handler, $role_storage, $module_handler, $module_extension_list);
$this->configManager = $config_manager;
$this->entityTypeManager = $entity_type_manager;
}
@@ -74,7 +81,8 @@ class EntityPermissionsForm extends UserPermissionsForm {
$container->get('entity_type.manager')->getStorage('user_role'),
$container->get('module_handler'),
$container->get('config.manager'),
- $container->get('entity_type.manager')
+ $container->get('entity_type.manager'),
+ $container->get('extension.list.module'),
);
}
diff --git a/core/modules/user/src/Form/UserPermissionsForm.php b/core/modules/user/src/Form/UserPermissionsForm.php
index d1e9b993265..8874b266141 100644
--- a/core/modules/user/src/Form/UserPermissionsForm.php
+++ b/core/modules/user/src/Form/UserPermissionsForm.php
@@ -2,6 +2,7 @@
namespace Drupal\user\Form;
+use Drupal\Core\Extension\ModuleExtensionList;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
@@ -46,11 +47,17 @@ class UserPermissionsForm extends FormBase {
* The role storage.
* @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
* The module handler.
+ * @param \Drupal\Core\Extension\ModuleExtensionList|null $moduleExtensionList
+ * The module extension list.
*/
- public function __construct(PermissionHandlerInterface $permission_handler, RoleStorageInterface $role_storage, ModuleHandlerInterface $module_handler) {
+ public function __construct(PermissionHandlerInterface $permission_handler, RoleStorageInterface $role_storage, ModuleHandlerInterface $module_handler, protected ?ModuleExtensionList $moduleExtensionList = NULL) {
$this->permissionHandler = $permission_handler;
$this->roleStorage = $role_storage;
$this->moduleHandler = $module_handler;
+ if ($this->moduleExtensionList === NULL) {
+ @trigger_error('Calling ' . __METHOD__ . '() without the $moduleExtensionList argument is deprecated in drupal:10.3.0 and will be required in drupal:12.0.0. See https://www.drupal.org/node/3310017', E_USER_DEPRECATED);
+ $this->moduleExtensionList = \Drupal::service('extension.list.module');
+ }
}
/**
@@ -60,7 +67,8 @@ class UserPermissionsForm extends FormBase {
return new static(
$container->get('user.permissions'),
$container->get('entity_type.manager')->getStorage('user_role'),
- $container->get('module_handler')
+ $container->get('module_handler'),
+ $container->get('extension.list.module'),
);
}
@@ -186,7 +194,7 @@ class UserPermissionsForm extends FormBase {
'class' => ['module'],
'id' => 'module-' . $provider,
],
- '#markup' => $this->moduleHandler->getName($provider),
+ '#markup' => $this->moduleExtensionList->getName($provider),
],
];
foreach ($permissions as $perm => $perm_item) {
diff --git a/core/modules/user/src/PermissionHandler.php b/core/modules/user/src/PermissionHandler.php
index 50670b03813..5858b33e2a0 100644
--- a/core/modules/user/src/PermissionHandler.php
+++ b/core/modules/user/src/PermissionHandler.php
@@ -4,6 +4,7 @@ namespace Drupal\user;
use Drupal\Core\Discovery\YamlDiscovery;
use Drupal\Core\Controller\ControllerResolverInterface;
+use Drupal\Core\Extension\ModuleExtensionList;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\Core\StringTranslation\TranslationInterface;
@@ -84,8 +85,10 @@ class PermissionHandler implements PermissionHandlerInterface {
* The string translation.
* @param \Drupal\Core\Utility\CallableResolver|\Drupal\Core\Controller\ControllerResolverInterface $callable_resolver
* The callable resolver.
+ * @param \Drupal\Core\Extension\ModuleExtensionList|null $moduleExtensionList
+ * The module extension list.
*/
- public function __construct(ModuleHandlerInterface $module_handler, TranslationInterface $string_translation, ControllerResolverInterface|CallableResolver $callable_resolver) {
+ public function __construct(ModuleHandlerInterface $module_handler, TranslationInterface $string_translation, ControllerResolverInterface|CallableResolver $callable_resolver, protected ?ModuleExtensionList $moduleExtensionList = NULL) {
if ($callable_resolver instanceof ControllerResolverInterface) {
@trigger_error('Calling ' . __METHOD__ . '() with an argument of ControllerResolverInterface is deprecated in drupal:10.2.0 and is removed in drupal:11.0.0. Use \Drupal\Core\Utility\CallableResolver instead. See https://www.drupal.org/node/3397954', E_USER_DEPRECATED);
$callable_resolver = \Drupal::service('callable_resolver');
@@ -96,6 +99,10 @@ class PermissionHandler implements PermissionHandlerInterface {
// container.
$this->moduleHandler = $module_handler;
$this->stringTranslation = $string_translation;
+ if ($this->moduleExtensionList === NULL) {
+ @trigger_error('Calling ' . __METHOD__ . '() without the $moduleExtensionList argument is deprecated in drupal:10.3.0 and will be required in drupal:12.0.0. See https://www.drupal.org/node/3310017', E_USER_DEPRECATED);
+ $this->moduleExtensionList = \Drupal::service('extension.list.module');
+ }
}
/**
@@ -233,7 +240,7 @@ class PermissionHandler implements PermissionHandlerInterface {
protected function getModuleNames() {
$modules = [];
foreach (array_keys($this->moduleHandler->getModuleList()) as $module) {
- $modules[$module] = $this->moduleHandler->getName($module);
+ $modules[$module] = $this->moduleExtensionList->getName($module);
}
asort($modules);
return $modules;
diff --git a/core/modules/user/src/Plugin/views/access/Permission.php b/core/modules/user/src/Plugin/views/access/Permission.php
index 291eb1ca8ed..8f9d6457453 100644
--- a/core/modules/user/src/Plugin/views/access/Permission.php
+++ b/core/modules/user/src/Plugin/views/access/Permission.php
@@ -4,6 +4,8 @@ namespace Drupal\user\Plugin\views\access;
use Drupal\Core\Cache\Cache;
use Drupal\Core\Cache\CacheableDependencyInterface;
+use Drupal\Core\DependencyInjection\DeprecatedServicePropertyTrait;
+use Drupal\Core\Extension\ModuleExtensionList;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Session\AccountInterface;
@@ -24,6 +26,12 @@ use Symfony\Component\Routing\Route;
* )
*/
class Permission extends AccessPluginBase implements CacheableDependencyInterface {
+ use DeprecatedServicePropertyTrait;
+
+ /**
+ * The service properties that should raise a deprecation error.
+ */
+ private array $deprecatedProperties = ['moduleHandler' => 'module_handler'];
/**
* {@inheritdoc}
@@ -38,11 +46,9 @@ class Permission extends AccessPluginBase implements CacheableDependencyInterfac
protected $permissionHandler;
/**
- * The module handler.
- *
- * @var \Drupal\Core\Extension\ModuleHandlerInterface
+ * Module extension list.
*/
- protected $moduleHandler;
+ protected ModuleExtensionList $moduleExtensionList;
/**
* Constructs a Permission object.
@@ -55,13 +61,17 @@ class Permission extends AccessPluginBase implements CacheableDependencyInterfac
* The plugin implementation definition.
* @param \Drupal\user\PermissionHandlerInterface $permission_handler
* The permission handler.
- * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
- * The module handler.
+ * @param \Drupal\Core\Extension\ModuleExtensionList|\Drupal\Core\Extension\ModuleHandlerInterface $module_extension_list
+ * The module extension list.
*/
- public function __construct(array $configuration, $plugin_id, $plugin_definition, PermissionHandlerInterface $permission_handler, ModuleHandlerInterface $module_handler) {
+ public function __construct(array $configuration, $plugin_id, $plugin_definition, PermissionHandlerInterface $permission_handler, ModuleExtensionList|ModuleHandlerInterface $module_extension_list) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->permissionHandler = $permission_handler;
- $this->moduleHandler = $module_handler;
+ if ($module_extension_list instanceof ModuleHandlerInterface) {
+ @trigger_error('Calling ' . __METHOD__ . '() with the $module_extension_list argument as ModuleHandlerInterface is deprecated in drupal:10.3.0 and will be required in drupal:12.0.0. See https://www.drupal.org/node/3310017', E_USER_DEPRECATED);
+ $module_extension_list = \Drupal::service('extension.list.module');
+ }
+ $this->moduleExtensionList = $module_extension_list;
}
/**
@@ -73,7 +83,7 @@ class Permission extends AccessPluginBase implements CacheableDependencyInterfac
$plugin_id,
$plugin_definition,
$container->get('user.permissions'),
- $container->get('module_handler')
+ $container->get('extension.list.module'),
);
}
@@ -114,7 +124,7 @@ class Permission extends AccessPluginBase implements CacheableDependencyInterfac
$permissions = $this->permissionHandler->getPermissions();
foreach ($permissions as $perm => $perm_item) {
$provider = $perm_item['provider'];
- $display_name = $this->moduleHandler->getName($provider);
+ $display_name = $this->moduleExtensionList->getName($provider);
$perms[$display_name][$perm] = strip_tags($perm_item['title']);
}
diff --git a/core/modules/user/src/Plugin/views/field/UserData.php b/core/modules/user/src/Plugin/views/field/UserData.php
index 1a4bb82acdd..fb853cfc0a3 100644
--- a/core/modules/user/src/Plugin/views/field/UserData.php
+++ b/core/modules/user/src/Plugin/views/field/UserData.php
@@ -2,6 +2,7 @@
namespace Drupal\user\Plugin\views\field;
+use Drupal\Core\Extension\ModuleExtensionList;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\views\Plugin\views\field\FieldPluginBase;
@@ -38,17 +39,28 @@ class UserData extends FieldPluginBase {
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
- return new static($configuration, $plugin_id, $plugin_definition, $container->get('user.data'), $container->get('module_handler'));
+ return new static(
+ $configuration,
+ $plugin_id,
+ $plugin_definition,
+ $container->get('user.data'),
+ $container->get('module_handler'),
+ $container->get('extension.list.module')
+ );
}
/**
* Constructs a UserData object.
*/
- public function __construct(array $configuration, $plugin_id, $plugin_definition, UserDataInterface $user_data, ModuleHandlerInterface $module_handler) {
+ public function __construct(array $configuration, $plugin_id, $plugin_definition, UserDataInterface $user_data, ModuleHandlerInterface $module_handler, protected ?ModuleExtensionList $moduleExtensionList = NULL) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->userData = $user_data;
$this->moduleHandler = $module_handler;
+ if ($this->moduleExtensionList === NULL) {
+ @trigger_error('Calling ' . __METHOD__ . '() without the $moduleExtensionList argument is deprecated in drupal:10.3.0 and will be required in drupal:12.0.0. See https://www.drupal.org/node/3310017', E_USER_DEPRECATED);
+ $this->moduleExtensionList = \Drupal::service('extension.list.module');
+ }
}
/**
@@ -72,7 +84,7 @@ class UserData extends FieldPluginBase {
$modules = $this->moduleHandler->getModuleList();
$names = [];
foreach (array_keys($modules) as $name) {
- $names[$name] = $this->moduleHandler->getName($name);
+ $names[$name] = $this->moduleExtensionList->getName($name);
}
$form['data_module'] = [
diff --git a/core/modules/user/src/Plugin/views/filter/Permissions.php b/core/modules/user/src/Plugin/views/filter/Permissions.php
index b4d93af2f19..e530de59d57 100644
--- a/core/modules/user/src/Plugin/views/filter/Permissions.php
+++ b/core/modules/user/src/Plugin/views/filter/Permissions.php
@@ -3,6 +3,8 @@
namespace Drupal\user\Plugin\views\filter;
use Drupal\Component\Utility\Html;
+use Drupal\Core\DependencyInjection\DeprecatedServicePropertyTrait;
+use Drupal\Core\Extension\ModuleExtensionList;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\user\Entity\Role;
use Drupal\user\PermissionHandlerInterface;
@@ -18,6 +20,12 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
* @ViewsFilter("user_permissions")
*/
class Permissions extends ManyToOne {
+ use DeprecatedServicePropertyTrait;
+
+ /**
+ * The service properties that should raise a deprecation error.
+ */
+ private array $deprecatedProperties = ['moduleHandler' => 'module_handler'];
/**
* The permission handler.
@@ -27,11 +35,9 @@ class Permissions extends ManyToOne {
protected $permissionHandler;
/**
- * The module handler.
- *
- * @var \Drupal\Core\Extension\ModuleHandlerInterface
+ * Module extension list.
*/
- protected $moduleHandler;
+ protected ModuleExtensionList $moduleExtensionList;
/**
* Constructs a Permissions object.
@@ -44,14 +50,18 @@ class Permissions extends ManyToOne {
* The plugin implementation definition.
* @param \Drupal\user\PermissionHandlerInterface $permission_handler
* The permission handler.
- * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
- * The module handler.
+ * @param \Drupal\Core\Extension\ModuleExtensionList|\Drupal\Core\Extension\ModuleHandlerInterface $module_extension_list
+ * The module extension list.
*/
- public function __construct(array $configuration, $plugin_id, $plugin_definition, PermissionHandlerInterface $permission_handler, ModuleHandlerInterface $module_handler) {
+ public function __construct(array $configuration, $plugin_id, $plugin_definition, PermissionHandlerInterface $permission_handler, ModuleExtensionList|ModuleHandlerInterface $module_extension_list) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->permissionHandler = $permission_handler;
- $this->moduleHandler = $module_handler;
+ if ($module_extension_list instanceof ModuleHandlerInterface) {
+ @trigger_error('Calling ' . __METHOD__ . '() with the $module_extension_list argument as ModuleHandlerInterface is deprecated in drupal:10.3.0 and will be required in drupal:12.0.0. See https://www.drupal.org/node/3310017', E_USER_DEPRECATED);
+ $module_extension_list = \Drupal::service('extension.list.module');
+ }
+ $this->moduleExtensionList = $module_extension_list;
}
/**
@@ -63,7 +73,7 @@ class Permissions extends ManyToOne {
$plugin_id,
$plugin_definition,
$container->get('user.permissions'),
- $container->get('module_handler')
+ $container->get('extension.list.module'),
);
}
@@ -72,7 +82,7 @@ class Permissions extends ManyToOne {
$permissions = $this->permissionHandler->getPermissions();
foreach ($permissions as $perm => $perm_item) {
$provider = $perm_item['provider'];
- $display_name = $this->moduleHandler->getName($provider);
+ $display_name = $this->moduleExtensionList->getName($provider);
$this->valueOptions[$display_name][$perm] = Html::escape(strip_tags($perm_item['title']));
}
return $this->valueOptions;
diff --git a/core/modules/user/tests/src/Unit/Form/EntityPermissionsFormTest.php b/core/modules/user/tests/src/Unit/Form/EntityPermissionsFormTest.php
index d8eb84c6aea..bccc105552f 100644
--- a/core/modules/user/tests/src/Unit/Form/EntityPermissionsFormTest.php
+++ b/core/modules/user/tests/src/Unit/Form/EntityPermissionsFormTest.php
@@ -10,6 +10,7 @@ use Drupal\Core\Config\Entity\ConfigEntityDependency;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
+use Drupal\Core\Extension\ModuleExtensionList;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Tests\UnitTestCase;
@@ -57,6 +58,7 @@ class EntityPermissionsFormTest extends UnitTestCase {
$permission_handler = $prophecy->reveal();
$role_storage = $this->prophesize(RoleStorageInterface::class)->reveal();
$module_handler = $this->prophesize(ModuleHandlerInterface::class)->reveal();
+ $module_extension_list = $this->prophesize(ModuleExtensionList::class)->reveal();
$prophecy = $this->prophesize(ConfigManagerInterface::class);
$prophecy->getConfigEntitiesToChangeOnDependencyRemoval('config', ['node.type.article'])
->willReturn([
@@ -75,7 +77,7 @@ class EntityPermissionsFormTest extends UnitTestCase {
->willReturn($entity_type);
$entity_type_manager = $prophecy->reveal();
- $bundle_form = new EntityPermissionsForm($permission_handler, $role_storage, $module_handler, $config_manager, $entity_type_manager);
+ $bundle_form = new EntityPermissionsForm($permission_handler, $role_storage, $module_handler, $config_manager, $entity_type_manager, $module_extension_list);
// Mock the method parameters.
$route = new Route('some.path');
diff --git a/core/modules/user/tests/src/Unit/PermissionHandlerTest.php b/core/modules/user/tests/src/Unit/PermissionHandlerTest.php
index 114cdf0de03..fb71401294d 100644
--- a/core/modules/user/tests/src/Unit/PermissionHandlerTest.php
+++ b/core/modules/user/tests/src/Unit/PermissionHandlerTest.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace Drupal\Tests\user\Unit;
use Drupal\Core\Extension\Extension;
+use Drupal\Core\Extension\ModuleExtensionList;
use Drupal\Core\StringTranslation\PluralTranslatableMarkup;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\Core\StringTranslation\TranslationInterface;
@@ -20,6 +21,7 @@ use org\bovigo\vfs\vfsStreamWrapper;
* @group user
*
* @coversDefaultClass \Drupal\user\PermissionHandler
+ * @runTestsInSeparateProcesses
*/
class PermissionHandlerTest extends UnitTestCase {
@@ -130,7 +132,9 @@ EOF
$this->callableResolver->expects($this->never())
->method('getCallableFromDefinition');
- $this->permissionHandler = new PermissionHandler($this->moduleHandler, $this->stringTranslation, $this->callableResolver);
+ $module_extension_list = $this->createMock(ModuleExtensionList::class);
+
+ $this->permissionHandler = new PermissionHandler($this->moduleHandler, $this->stringTranslation, $this->callableResolver, $module_extension_list);
$actual_permissions = $this->permissionHandler->getPermissions();
$this->assertPermissions($actual_permissions);
@@ -162,7 +166,8 @@ EOF
'module_b' => vfsStream::url('modules/module_b'),
'module_c' => vfsStream::url('modules/module_c'),
]);
- $this->moduleHandler->expects($this->exactly(3))
+ $module_extension_list = $this->createMock(ModuleExtensionList::class);
+ $module_extension_list->expects($this->exactly(3))
->method('getName')
->willReturnMap([
['module_a', 'Module a'],
@@ -191,7 +196,7 @@ EOF
->method('getModuleList')
->willReturn(array_flip($modules));
- $permissionHandler = new PermissionHandler($this->moduleHandler, $this->stringTranslation, $this->callableResolver);
+ $permissionHandler = new PermissionHandler($this->moduleHandler, $this->stringTranslation, $this->callableResolver, $module_extension_list);
$actual_permissions = $permissionHandler->getPermissions();
$this->assertEquals(['access_module_a4', 'access_module_a1', 'access_module_a2', 'access_module_a3'],
array_keys($actual_permissions));
@@ -254,7 +259,9 @@ EOF
['Drupal\\user\\Tests\\TestPermissionCallbacks::titleDescriptionRestrictAccess', [new TestPermissionCallbacks(), 'titleDescriptionRestrictAccess']],
]);
- $this->permissionHandler = new PermissionHandler($this->moduleHandler, $this->stringTranslation, $this->callableResolver);
+ $module_extension_list = $this->createMock(ModuleExtensionList::class);
+
+ $this->permissionHandler = new PermissionHandler($this->moduleHandler, $this->stringTranslation, $this->callableResolver, $module_extension_list);
$actual_permissions = $this->permissionHandler->getPermissions();
$this->assertPermissions($actual_permissions);
@@ -297,7 +304,9 @@ EOF
->with('Drupal\\user\\Tests\\TestPermissionCallbacks::titleDescription')
->willReturn([new TestPermissionCallbacks(), 'titleDescription']);
- $this->permissionHandler = new PermissionHandler($this->moduleHandler, $this->stringTranslation, $this->callableResolver);
+ $module_extension_list = $this->createMock(ModuleExtensionList::class);
+
+ $this->permissionHandler = new PermissionHandler($this->moduleHandler, $this->stringTranslation, $this->callableResolver, $module_extension_list);
$actual_permissions = $this->permissionHandler->getPermissions();
diff --git a/core/modules/user/user.services.yml b/core/modules/user/user.services.yml
index 28f7a766f06..fb0389dd973 100644
--- a/core/modules/user/user.services.yml
+++ b/core/modules/user/user.services.yml
@@ -48,7 +48,7 @@ services:
Drupal\user\UserAuthInterface: '@user.auth'
user.permissions:
class: Drupal\user\PermissionHandler
- arguments: ['@module_handler', '@string_translation', '@callable_resolver']
+ arguments: ['@module_handler', '@string_translation', '@callable_resolver', '@extension.list.module']
Drupal\user\PermissionHandlerInterface: '@user.permissions'
user.current_user_context:
class: Drupal\user\ContextProvider\CurrentUserContext
diff --git a/core/tests/Drupal/FunctionalTests/Installer/InstallerTest.php b/core/tests/Drupal/FunctionalTests/Installer/InstallerTest.php
index 17e6c47dee0..d70cf621e31 100644
--- a/core/tests/Drupal/FunctionalTests/Installer/InstallerTest.php
+++ b/core/tests/Drupal/FunctionalTests/Installer/InstallerTest.php
@@ -134,6 +134,7 @@ class InstallerTest extends InstallerTestBase {
$database = Database::getConnection();
$module = $database->getProvider();
$module_handler = \Drupal::service('module_handler');
+ $module_extension_list = \Drupal::service('extension.list.module');
// Ensure the update module is not installed.
$this->assertFalse($module_handler->moduleExists('update'), 'The Update module is not installed.');
@@ -148,7 +149,7 @@ class InstallerTest extends InstallerTestBase {
$this->fail("Uninstalled $module module.");
}
catch (ModuleUninstallValidatorException $e) {
- $module_name = $module_handler->getName($module);
+ $module_name = $module_extension_list->getName($module);
$driver = $database->driver();
$this->assertStringContainsString("The module '$module_name' is providing the database driver '$driver'.", $e->getMessage());
}
diff --git a/core/tests/Drupal/KernelTests/Core/Extension/ModuleHandlerTest.php b/core/tests/Drupal/KernelTests/Core/Extension/ModuleHandlerTest.php
index b5b877fc8fe..7284c06bc98 100644
--- a/core/tests/Drupal/KernelTests/Core/Extension/ModuleHandlerTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Extension/ModuleHandlerTest.php
@@ -21,7 +21,17 @@ class ModuleHandlerTest extends KernelTestBase {
$this->expectException(UnknownExtensionException::class);
$this->expectExceptionMessage('The module module_nonsense does not exist.');
$module_handler = $this->container->get('module_handler');
- $module_handler->getName('module_nonsense');
+ $module_handler->getModule('module_nonsense');
+ }
+
+ /**
+ * Tests deprecation of getName() function.
+ *
+ * @group legacy
+ */
+ public function testGetNameDeprecation() {
+ $this->expectDeprecation('Drupal\Core\Extension\ModuleHandler::getName() is deprecated in drupal:10.3.0 and is removed from drupal:12.0.0. Use \Drupal\Core\Extension\ModuleExtensionList::getName($module) instead. See https://www.drupal.org/node/3310017');
+ $this->assertNotNull(\Drupal::service('module_handler')->getName('module_test'));
}
}
diff --git a/core/tests/Drupal/Tests/Core/Menu/MenuLinkDefaultFormTest.php b/core/tests/Drupal/Tests/Core/Menu/MenuLinkDefaultFormTest.php
index 60176e4d1ff..f1ab40a3bfe 100644
--- a/core/tests/Drupal/Tests/Core/Menu/MenuLinkDefaultFormTest.php
+++ b/core/tests/Drupal/Tests/Core/Menu/MenuLinkDefaultFormTest.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace Drupal\Tests\Core\Menu;
use Drupal\Core\Extension\ModuleHandlerInterface;
+use Drupal\Core\Extension\ModuleExtensionList;
use Drupal\Core\Form\FormState;
use Drupal\Core\Menu\Form\MenuLinkDefaultForm;
use Drupal\Core\Menu\MenuLinkDefault;
@@ -16,6 +17,7 @@ use Drupal\Tests\UnitTestCase;
/**
* @coversDefaultClass \Drupal\Core\Menu\Form\MenuLinkDefaultForm
* @group Menu
+ * @runTestsInSeparateProcesses
*/
class MenuLinkDefaultFormTest extends UnitTestCase {
@@ -26,7 +28,8 @@ class MenuLinkDefaultFormTest extends UnitTestCase {
$menu_link_manager = $this->prophesize(MenuLinkManagerInterface::class);
$menu_parent_form_selector = $this->prophesize(MenuParentFormSelectorInterface::class);
$module_handler = $this->prophesize(ModuleHandlerInterface::class);
- $menu_link_form = new MenuLinkDefaultForm($menu_link_manager->reveal(), $menu_parent_form_selector->reveal(), $this->getStringTranslationStub(), $module_handler->reveal());
+ $module_extension_list = $this->prophesize(ModuleExtensionList::class);
+ $menu_link_form = new MenuLinkDefaultForm($menu_link_manager->reveal(), $menu_parent_form_selector->reveal(), $this->getStringTranslationStub(), $module_handler->reveal(), $module_extension_list->reveal());
$static_override = $this->prophesize(StaticMenuLinkOverridesInterface::class);
$menu_link = new MenuLinkDefault([], 'my_plugin_id', [], $static_override->reveal());
diff --git a/core/tests/Drupal/Tests/Core/Plugin/CategorizingPluginManagerTraitTest.php b/core/tests/Drupal/Tests/Core/Plugin/CategorizingPluginManagerTraitTest.php
index 967ac68bb09..6ea9efd4ea2 100644
--- a/core/tests/Drupal/Tests/Core/Plugin/CategorizingPluginManagerTraitTest.php
+++ b/core/tests/Drupal/Tests/Core/Plugin/CategorizingPluginManagerTraitTest.php
@@ -5,6 +5,8 @@ declare(strict_types=1);
namespace Drupal\Tests\Core\Plugin;
use Drupal\Component\Plugin\CategorizingPluginManagerInterface;
+use Drupal\Core\Extension\Exception\UnknownExtensionException;
+use Drupal\Core\Extension\ModuleExtensionList;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Plugin\CategorizingPluginManagerTrait;
use Drupal\Core\Plugin\DefaultPluginManager;
@@ -13,6 +15,7 @@ use Drupal\Tests\UnitTestCase;
/**
* @coversDefaultClass \Drupal\Core\Plugin\CategorizingPluginManagerTrait
* @group Plugin
+ * @runTestsInSeparateProcesses
*/
class CategorizingPluginManagerTraitTest extends UnitTestCase {
@@ -33,12 +36,16 @@ class CategorizingPluginManagerTraitTest extends UnitTestCase {
$module_handler->expects($this->any())
->method('getModuleList')
->willReturn(['node' => []]);
- $module_handler->expects($this->any())
+ $module_extension_list = $this->createMock(ModuleExtensionList::class);
+ $module_extension_list->expects($this->any())
->method('getName')
- ->with('node')
- ->willReturn('Node');
-
- $this->pluginManager = new CategorizingPluginManager($module_handler);
+ ->willReturnCallback(function ($argument) {
+ if ($argument == 'node') {
+ return 'Node';
+ }
+ throw new UnknownExtensionException();
+ });
+ $this->pluginManager = new CategorizingPluginManager($module_handler, $module_extension_list);
$this->pluginManager->setStringTranslation($this->getStringTranslationStub());
}
@@ -112,11 +119,14 @@ class CategorizingPluginManager extends DefaultPluginManager implements Categori
/**
* Replace the constructor so we can instantiate a stub.
*
- * @param \Drupal\Core\Extension\ModuleHandlerInterface|\PHPUnit\Framework\MockObject\MockObject $module_handler
+ * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
* The module handler.
+ * @param \Drupal\Core\Extension\ModuleExtensionList $module_extension_list
+ * The module extension list.
*/
- public function __construct(ModuleHandlerInterface $module_handler) {
+ public function __construct(ModuleHandlerInterface $module_handler, ModuleExtensionList $module_extension_list) {
$this->moduleHandler = $module_handler;
+ $this->moduleExtensionList = $module_extension_list;
}
/**