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