1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeaunamespace Facebook\WebDriver; 4*04fd306cSNickeau 5*04fd306cSNickeauuse Facebook\WebDriver\Support\Events\EventFiringWebDriver; 6*04fd306cSNickeau 7*04fd306cSNickeauclass WebDriverDispatcher 8*04fd306cSNickeau{ 9*04fd306cSNickeau /** 10*04fd306cSNickeau * @var array 11*04fd306cSNickeau */ 12*04fd306cSNickeau protected $listeners = []; 13*04fd306cSNickeau /** 14*04fd306cSNickeau * @var EventFiringWebDriver 15*04fd306cSNickeau */ 16*04fd306cSNickeau protected $driver; 17*04fd306cSNickeau 18*04fd306cSNickeau /** 19*04fd306cSNickeau * this is needed so that EventFiringWebElement can pass the driver to the 20*04fd306cSNickeau * exception handling 21*04fd306cSNickeau * 22*04fd306cSNickeau * @param EventFiringWebDriver $driver 23*04fd306cSNickeau * @return $this 24*04fd306cSNickeau */ 25*04fd306cSNickeau public function setDefaultDriver(EventFiringWebDriver $driver) 26*04fd306cSNickeau { 27*04fd306cSNickeau $this->driver = $driver; 28*04fd306cSNickeau 29*04fd306cSNickeau return $this; 30*04fd306cSNickeau } 31*04fd306cSNickeau 32*04fd306cSNickeau /** 33*04fd306cSNickeau * @return null|EventFiringWebDriver 34*04fd306cSNickeau */ 35*04fd306cSNickeau public function getDefaultDriver() 36*04fd306cSNickeau { 37*04fd306cSNickeau return $this->driver; 38*04fd306cSNickeau } 39*04fd306cSNickeau 40*04fd306cSNickeau /** 41*04fd306cSNickeau * @param WebDriverEventListener $listener 42*04fd306cSNickeau * @return $this 43*04fd306cSNickeau */ 44*04fd306cSNickeau public function register(WebDriverEventListener $listener) 45*04fd306cSNickeau { 46*04fd306cSNickeau $this->listeners[] = $listener; 47*04fd306cSNickeau 48*04fd306cSNickeau return $this; 49*04fd306cSNickeau } 50*04fd306cSNickeau 51*04fd306cSNickeau /** 52*04fd306cSNickeau * @param WebDriverEventListener $listener 53*04fd306cSNickeau * @return $this 54*04fd306cSNickeau */ 55*04fd306cSNickeau public function unregister(WebDriverEventListener $listener) 56*04fd306cSNickeau { 57*04fd306cSNickeau $key = array_search($listener, $this->listeners, true); 58*04fd306cSNickeau if ($key !== false) { 59*04fd306cSNickeau unset($this->listeners[$key]); 60*04fd306cSNickeau } 61*04fd306cSNickeau 62*04fd306cSNickeau return $this; 63*04fd306cSNickeau } 64*04fd306cSNickeau 65*04fd306cSNickeau /** 66*04fd306cSNickeau * @param mixed $method 67*04fd306cSNickeau * @param mixed $arguments 68*04fd306cSNickeau * @return $this 69*04fd306cSNickeau */ 70*04fd306cSNickeau public function dispatch($method, $arguments) 71*04fd306cSNickeau { 72*04fd306cSNickeau foreach ($this->listeners as $listener) { 73*04fd306cSNickeau call_user_func_array([$listener, $method], $arguments); 74*04fd306cSNickeau } 75*04fd306cSNickeau 76*04fd306cSNickeau return $this; 77*04fd306cSNickeau } 78*04fd306cSNickeau} 79