Loading core/lib/Drupal/Core/Extension/ThemeHandler.php +10 −3 Original line number Diff line number Diff line Loading @@ -67,11 +67,18 @@ public function getDefault() { public function listInfo() { if (!isset($this->list)) { $this->list = []; $installed_themes = $this->configFactory->get('core.extension')->get('theme'); $installed_themes = array_keys($this->configFactory->get('core.extension')->get('theme')); if (!empty($installed_themes)) { $list = $this->themeList->getList(); foreach (array_keys($installed_themes) as $theme_name) { $this->addTheme($list[$theme_name]); foreach ($installed_themes as $theme) { // Do not add installed themes that cannot be found by the // extension.list.theme service. If a theme does go missing from the // file system any call to ::getTheme() will result in an exception // and an error being logged. Ignoring the problem here allows the // theme system to fix itself while updating. if (isset($list[$theme])) { $this->addTheme($list[$theme]); } } } } Loading core/tests/Drupal/Tests/Core/Extension/ThemeHandlerTest.php +11 −1 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ protected function setUp(): void { $this->configFactory = $this->getConfigFactoryStub([ 'core.extension' => [ 'module' => [], 'theme' => [], 'theme' => ['stark' => 'stark'], 'disabled' => [ 'theme' => [], ], Loading Loading @@ -108,6 +108,16 @@ public function testThemeLibrariesEmpty(): void { } } /** * Test that a missing theme doesn't break ThemeHandler::listInfo(). * * @covers ::listInfo */ public function testMissingTheme(): void { $themes = $this->themeHandler->listInfo(); $this->assertSame([], $themes); } } /** Loading Loading
core/lib/Drupal/Core/Extension/ThemeHandler.php +10 −3 Original line number Diff line number Diff line Loading @@ -67,11 +67,18 @@ public function getDefault() { public function listInfo() { if (!isset($this->list)) { $this->list = []; $installed_themes = $this->configFactory->get('core.extension')->get('theme'); $installed_themes = array_keys($this->configFactory->get('core.extension')->get('theme')); if (!empty($installed_themes)) { $list = $this->themeList->getList(); foreach (array_keys($installed_themes) as $theme_name) { $this->addTheme($list[$theme_name]); foreach ($installed_themes as $theme) { // Do not add installed themes that cannot be found by the // extension.list.theme service. If a theme does go missing from the // file system any call to ::getTheme() will result in an exception // and an error being logged. Ignoring the problem here allows the // theme system to fix itself while updating. if (isset($list[$theme])) { $this->addTheme($list[$theme]); } } } } Loading
core/tests/Drupal/Tests/Core/Extension/ThemeHandlerTest.php +11 −1 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ protected function setUp(): void { $this->configFactory = $this->getConfigFactoryStub([ 'core.extension' => [ 'module' => [], 'theme' => [], 'theme' => ['stark' => 'stark'], 'disabled' => [ 'theme' => [], ], Loading Loading @@ -108,6 +108,16 @@ public function testThemeLibrariesEmpty(): void { } } /** * Test that a missing theme doesn't break ThemeHandler::listInfo(). * * @covers ::listInfo */ public function testMissingTheme(): void { $themes = $this->themeHandler->listInfo(); $this->assertSame([], $themes); } } /** Loading