WebDriverDispatcher.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. // Copyright 2004-present Facebook. All Rights Reserved.
  3. //
  4. // Licensed under the Apache License, Version 2.0 (the "License");
  5. // you may not use this file except in compliance with the License.
  6. // You may obtain a copy of the License at
  7. //
  8. // http://www.apache.org/licenses/LICENSE-2.0
  9. //
  10. // Unless required by applicable law or agreed to in writing, software
  11. // distributed under the License is distributed on an "AS IS" BASIS,
  12. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. // See the License for the specific language governing permissions and
  14. // limitations under the License.
  15. namespace Facebook\WebDriver;
  16. use Facebook\WebDriver\Support\Events\EventFiringWebDriver;
  17. class WebDriverDispatcher
  18. {
  19. /**
  20. * @var array
  21. */
  22. protected $listeners = [];
  23. /**
  24. * @var EventFiringWebDriver
  25. */
  26. protected $driver = null;
  27. /**
  28. * this is needed so that EventFiringWebElement can pass the driver to the
  29. * exception handling
  30. *
  31. * @param EventFiringWebDriver $driver
  32. * @return $this
  33. */
  34. public function setDefaultDriver(EventFiringWebDriver $driver)
  35. {
  36. $this->driver = $driver;
  37. return $this;
  38. }
  39. /**
  40. * @return null|EventFiringWebDriver
  41. */
  42. public function getDefaultDriver()
  43. {
  44. return $this->driver;
  45. }
  46. /**
  47. * @param WebDriverEventListener $listener
  48. * @return $this
  49. */
  50. public function register(WebDriverEventListener $listener)
  51. {
  52. $this->listeners[] = $listener;
  53. return $this;
  54. }
  55. /**
  56. * @param WebDriverEventListener $listener
  57. * @return $this
  58. */
  59. public function unregister(WebDriverEventListener $listener)
  60. {
  61. $key = array_search($listener, $this->listeners, true);
  62. if ($key !== false) {
  63. unset($this->listeners[$key]);
  64. }
  65. return $this;
  66. }
  67. /**
  68. * @param mixed $method
  69. * @param mixed $arguments
  70. * @return $this
  71. */
  72. public function dispatch($method, $arguments)
  73. {
  74. foreach ($this->listeners as $listener) {
  75. call_user_func_array([$listener, $method], $arguments);
  76. }
  77. return $this;
  78. }
  79. }