diff --git a/core/modules/tour/src/Plugin/tour/tip/TipPluginText.php b/core/modules/tour/src/Plugin/tour/tip/TipPluginText.php index 268741a83d9..b809a64ee41 100644 --- a/core/modules/tour/src/Plugin/tour/tip/TipPluginText.php +++ b/core/modules/tour/src/Plugin/tour/tip/TipPluginText.php @@ -39,6 +39,13 @@ class TipPluginText extends TipPluginBase implements ContainerFactoryPluginInter */ protected $location; + /** + * Unique aria-id. + * + * @var string + */ + protected $ariaId; + /** * Constructs a \Drupal\tour\Plugin\tour\tip\TipPluginText object. * @@ -70,11 +77,10 @@ class TipPluginText extends TipPluginBase implements ContainerFactoryPluginInter * A unique id to be used to generate aria attributes. */ public function getAriaId() { - static $id; - if (!isset($id)) { - $id = Html::getUniqueId($this->get('id')); + if (!$this->ariaId) { + $this->ariaId = Html::getUniqueId($this->get('id')); } - return $id; + return $this->ariaId; } /** diff --git a/core/modules/tour/tests/src/Unit/Plugin/tour/tip/TipPluginTextTest.php b/core/modules/tour/tests/src/Unit/Plugin/tour/tip/TipPluginTextTest.php new file mode 100644 index 00000000000..29ea50e468d --- /dev/null +++ b/core/modules/tour/tests/src/Unit/Plugin/tour/tip/TipPluginTextTest.php @@ -0,0 +1,41 @@ +getRandomGenerator()->word(4, TRUE); + $id_instance_two = $this->getRandomGenerator()->word(4, TRUE); + $config_instance_one = [ + 'id' => $id_instance_one, + ]; + $config_instance_two = [ + 'id' => $id_instance_two, + ]; + $definition = []; + $plugin_id = 'text'; + $token = $this->createMock('\Drupal\Core\Utility\Token'); + $instance_one = new TipPluginText($config_instance_one, $plugin_id, $definition, $token); + $instance_two = new TipPluginText($config_instance_two, $plugin_id, $definition, $token); + $instance_three = new TipPluginText($config_instance_one, $plugin_id, $definition, $token); + + $this->assertEquals($id_instance_one, $instance_one->getAriaId()); + $this->assertEquals($id_instance_two, $instance_two->getAriaId()); + $this->assertNotEquals($instance_one->getAriaId(), $instance_two->getAriaId()); + $this->assertNotEquals($instance_one->getAriaId(), $instance_three->getAriaId()); + } + +}