diff --git a/core/modules/contextual/src/Element/ContextualLinks.php b/core/modules/contextual/src/Element/ContextualLinks.php
index 62e8966afae..e5b58fb35bb 100644
--- a/core/modules/contextual/src/Element/ContextualLinks.php
+++ b/core/modules/contextual/src/Element/ContextualLinks.php
@@ -78,7 +78,7 @@ class ContextualLinks extends RenderElement {
$class = Html::getClass($class);
$links[$class] = [
'title' => $item['title'],
- 'url' => Url::fromRoute(isset($item['route_name']) ? $item['route_name'] : '', isset($item['route_parameters']) ? $item['route_parameters'] : []),
+ 'url' => Url::fromRoute(isset($item['route_name']) ? $item['route_name'] : '', isset($item['route_parameters']) ? $item['route_parameters'] : [], $item['localized_options']),
];
}
$element['#links'] = $links;
diff --git a/core/modules/contextual/src/Tests/ContextualDynamicContextTest.php b/core/modules/contextual/src/Tests/ContextualDynamicContextTest.php
index 90b73d7006d..00ade5a5ac9 100644
--- a/core/modules/contextual/src/Tests/ContextualDynamicContextTest.php
+++ b/core/modules/contextual/src/Tests/ContextualDynamicContextTest.php
@@ -137,7 +137,7 @@ class ContextualDynamicContextTest extends WebTestBase {
// Get a page where contextual links are directly rendered.
$this->drupalGet(Url::fromRoute('menu_test.contextual_test'));
$this->assertEscaped("");
- $this->assertLink('Edit menu - contextual');
+ $this->assertRaw('
');
}
/**
diff --git a/core/modules/system/tests/modules/menu_test/menu_test.links.contextual.yml b/core/modules/system/tests/modules/menu_test/menu_test.links.contextual.yml
index 9a8d8adca84..2849592433d 100644
--- a/core/modules/system/tests/modules/menu_test/menu_test.links.contextual.yml
+++ b/core/modules/system/tests/modules/menu_test/menu_test.links.contextual.yml
@@ -8,6 +8,11 @@ menu_test.contextual_hidden_manage_edit:
title: 'Edit menu - contextual'
group: menu_test_menu
route_name: menu_test.contextual_hidden_manage_edit
+ options:
+ attributes:
+ class: ['use-ajax']
+ data-dialog-type: 'modal'
+ data-is-something: TRUE
menu_test.hidden_block_configure:
title: 'Configure block'
diff --git a/core/tests/Drupal/Tests/Core/Menu/ContextualLinkManagerTest.php b/core/tests/Drupal/Tests/Core/Menu/ContextualLinkManagerTest.php
index bebc935bb57..ddc0fbd4154 100644
--- a/core/tests/Drupal/Tests/Core/Menu/ContextualLinkManagerTest.php
+++ b/core/tests/Drupal/Tests/Core/Menu/ContextualLinkManagerTest.php
@@ -278,20 +278,7 @@ class ContextualLinkManagerTest extends UnitTestCase {
// Set up mocking of the plugin factory.
$map = [];
foreach ($definitions as $plugin_id => $definition) {
- $plugin = $this->getMock('Drupal\Core\Menu\ContextualLinkInterface');
- $plugin->expects($this->any())
- ->method('getRouteName')
- ->will($this->returnValue($definition['route_name']));
- $plugin->expects($this->any())
- ->method('getTitle')
- ->will($this->returnValue($definition['title']));
- $plugin->expects($this->any())
- ->method('getWeight')
- ->will($this->returnValue($definition['weight']));
- $plugin->expects($this->any())
- ->method('getOptions')
- ->will($this->returnValue($definition['options']));
- $map[] = [$plugin_id, [], $plugin];
+ $map[] = [$plugin_id, [], new ContextualLinkDefault([], $plugin_id, $definition)];
}
$this->factory->expects($this->any())
->method('createInstance')
@@ -308,6 +295,7 @@ class ContextualLinkManagerTest extends UnitTestCase {
$this->assertEquals($definition['weight'], $result[$plugin_id]['weight']);
$this->assertEquals($definition['title'], $result[$plugin_id]['title']);
$this->assertEquals($definition['route_name'], $result[$plugin_id]['route_name']);
+ $this->assertEquals($definition['options'], $result[$plugin_id]['localized_options']);
}
}