diff -u b/core/lib/Drupal/Core/Menu/MenuLinkTree.php b/core/lib/Drupal/Core/Menu/MenuLinkTree.php --- b/core/lib/Drupal/Core/Menu/MenuLinkTree.php +++ b/core/lib/Drupal/Core/Menu/MenuLinkTree.php @@ -253,7 +253,7 @@ elseif ($data->hasChildren) { $element['is_collapsed'] = TRUE; } - // Set a class if the link is in the active trail. + // Set a helper variable to indicate whether link is in active trail. if ($data->inActiveTrail) { $element['is_active_trail'] = TRUE; } only in patch2: unchanged: --- a/core/modules/system/tests/src/Unit/Menu/MenuLinkTreeTest.php +++ b/core/modules/system/tests/src/Unit/Menu/MenuLinkTreeTest.php @@ -141,13 +141,25 @@ public function providerTestBuildCacheability() { ]; $get_built_element = function(MenuLinkTreeElement $element, array $classes) { - return [ - 'attributes' => new Attribute(['class' => array_merge(['menu-item'], $classes)]), + $return = [ + 'attributes' => new Attribute(), 'title' => $element->link->getTitle(), 'url' => new Url($element->link->getRouteName(), $element->link->getRouteParameters(), ['set_active_class' => TRUE]), 'below' => [], 'original_link' => $element->link, ]; + + if ($element->hasChildren && !empty($element->subtree)) { + $return['is_expanded'] = TRUE; + } + elseif ($element->hasChildren) { + $return['is_collapsed'] = TRUE; + } + if ($ekement->inActiveTrail) { + $return['is_active_trail'] = TRUE; + } + + return $return; }; // The three access scenarios described in this method's documentation.