xref: /plugin/combo/vendor/php-webdriver/webdriver/lib/Interactions/Internal/WebDriverSingleKeyAction.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
1*04fd306cSNickeau<?php
2*04fd306cSNickeau
3*04fd306cSNickeaunamespace Facebook\WebDriver\Interactions\Internal;
4*04fd306cSNickeau
5*04fd306cSNickeauuse Facebook\WebDriver\Internal\WebDriverLocatable;
6*04fd306cSNickeauuse Facebook\WebDriver\WebDriverAction;
7*04fd306cSNickeauuse Facebook\WebDriver\WebDriverKeyboard;
8*04fd306cSNickeauuse Facebook\WebDriver\WebDriverKeys;
9*04fd306cSNickeauuse Facebook\WebDriver\WebDriverMouse;
10*04fd306cSNickeau
11*04fd306cSNickeauabstract class WebDriverSingleKeyAction extends WebDriverKeysRelatedAction implements WebDriverAction
12*04fd306cSNickeau{
13*04fd306cSNickeau    const MODIFIER_KEYS = [
14*04fd306cSNickeau        WebDriverKeys::SHIFT,
15*04fd306cSNickeau        WebDriverKeys::LEFT_SHIFT,
16*04fd306cSNickeau        WebDriverKeys::RIGHT_SHIFT,
17*04fd306cSNickeau        WebDriverKeys::CONTROL,
18*04fd306cSNickeau        WebDriverKeys::LEFT_CONTROL,
19*04fd306cSNickeau        WebDriverKeys::RIGHT_CONTROL,
20*04fd306cSNickeau        WebDriverKeys::ALT,
21*04fd306cSNickeau        WebDriverKeys::LEFT_ALT,
22*04fd306cSNickeau        WebDriverKeys::RIGHT_ALT,
23*04fd306cSNickeau        WebDriverKeys::META,
24*04fd306cSNickeau        WebDriverKeys::RIGHT_META,
25*04fd306cSNickeau        WebDriverKeys::COMMAND,
26*04fd306cSNickeau    ];
27*04fd306cSNickeau
28*04fd306cSNickeau    /** @var string */
29*04fd306cSNickeau    protected $key;
30*04fd306cSNickeau
31*04fd306cSNickeau    /**
32*04fd306cSNickeau     * @param string $key
33*04fd306cSNickeau     * @todo Remove default $key value in next major version (BC)
34*04fd306cSNickeau     */
35*04fd306cSNickeau    public function __construct(
36*04fd306cSNickeau        WebDriverKeyboard $keyboard,
37*04fd306cSNickeau        WebDriverMouse $mouse,
38*04fd306cSNickeau        WebDriverLocatable $location_provider = null,
39*04fd306cSNickeau        $key = ''
40*04fd306cSNickeau    ) {
41*04fd306cSNickeau        parent::__construct($keyboard, $mouse, $location_provider);
42*04fd306cSNickeau
43*04fd306cSNickeau        if (!in_array($key, self::MODIFIER_KEYS, true)) {
44*04fd306cSNickeau            throw new \InvalidArgumentException(
45*04fd306cSNickeau                sprintf(
46*04fd306cSNickeau                    'keyDown / keyUp actions can only be used for modifier keys, but "%s" was given',
47*04fd306cSNickeau                    $key
48*04fd306cSNickeau                )
49*04fd306cSNickeau            );
50*04fd306cSNickeau        }
51*04fd306cSNickeau        $this->key = $key;
52*04fd306cSNickeau    }
53*04fd306cSNickeau}
54