54 lines
1.5 KiB
PHP
54 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace Facebook\WebDriver\Interactions\Internal;
|
|
|
|
use Facebook\WebDriver\Internal\WebDriverLocatable;
|
|
use Facebook\WebDriver\WebDriverAction;
|
|
use Facebook\WebDriver\WebDriverKeyboard;
|
|
use Facebook\WebDriver\WebDriverKeys;
|
|
use Facebook\WebDriver\WebDriverMouse;
|
|
|
|
abstract class WebDriverSingleKeyAction extends WebDriverKeysRelatedAction implements WebDriverAction
|
|
{
|
|
const MODIFIER_KEYS = [
|
|
WebDriverKeys::SHIFT,
|
|
WebDriverKeys::LEFT_SHIFT,
|
|
WebDriverKeys::RIGHT_SHIFT,
|
|
WebDriverKeys::CONTROL,
|
|
WebDriverKeys::LEFT_CONTROL,
|
|
WebDriverKeys::RIGHT_CONTROL,
|
|
WebDriverKeys::ALT,
|
|
WebDriverKeys::LEFT_ALT,
|
|
WebDriverKeys::RIGHT_ALT,
|
|
WebDriverKeys::META,
|
|
WebDriverKeys::RIGHT_META,
|
|
WebDriverKeys::COMMAND,
|
|
];
|
|
|
|
/** @var string */
|
|
protected $key;
|
|
|
|
/**
|
|
* @param string $key
|
|
* @todo Remove default $key value in next major version (BC)
|
|
*/
|
|
public function __construct(
|
|
WebDriverKeyboard $keyboard,
|
|
WebDriverMouse $mouse,
|
|
WebDriverLocatable $location_provider = null,
|
|
$key = ''
|
|
) {
|
|
parent::__construct($keyboard, $mouse, $location_provider);
|
|
|
|
if (!in_array($key, self::MODIFIER_KEYS, true)) {
|
|
throw new \InvalidArgumentException(
|
|
sprintf(
|
|
'keyDown / keyUp actions can only be used for modifier keys, but "%s" was given',
|
|
$key
|
|
)
|
|
);
|
|
}
|
|
$this->key = $key;
|
|
}
|
|
}
|