xref: /plugin/combo/vendor/php-webdriver/webdriver/lib/Remote/RemoteTouchScreen.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
1*04fd306cSNickeau<?php
2*04fd306cSNickeau
3*04fd306cSNickeaunamespace Facebook\WebDriver\Remote;
4*04fd306cSNickeau
5*04fd306cSNickeauuse Facebook\WebDriver\Interactions\Touch\WebDriverTouchScreen;
6*04fd306cSNickeauuse Facebook\WebDriver\WebDriverElement;
7*04fd306cSNickeau
8*04fd306cSNickeau/**
9*04fd306cSNickeau * Execute touch commands for RemoteWebDriver.
10*04fd306cSNickeau */
11*04fd306cSNickeauclass RemoteTouchScreen implements WebDriverTouchScreen
12*04fd306cSNickeau{
13*04fd306cSNickeau    /**
14*04fd306cSNickeau     * @var RemoteExecuteMethod
15*04fd306cSNickeau     */
16*04fd306cSNickeau    private $executor;
17*04fd306cSNickeau
18*04fd306cSNickeau    /**
19*04fd306cSNickeau     * @param RemoteExecuteMethod $executor
20*04fd306cSNickeau     */
21*04fd306cSNickeau    public function __construct(RemoteExecuteMethod $executor)
22*04fd306cSNickeau    {
23*04fd306cSNickeau        $this->executor = $executor;
24*04fd306cSNickeau    }
25*04fd306cSNickeau
26*04fd306cSNickeau    /**
27*04fd306cSNickeau     * @param WebDriverElement $element
28*04fd306cSNickeau     *
29*04fd306cSNickeau     * @return RemoteTouchScreen The instance.
30*04fd306cSNickeau     */
31*04fd306cSNickeau    public function tap(WebDriverElement $element)
32*04fd306cSNickeau    {
33*04fd306cSNickeau        $this->executor->execute(
34*04fd306cSNickeau            DriverCommand::TOUCH_SINGLE_TAP,
35*04fd306cSNickeau            ['element' => $element->getID()]
36*04fd306cSNickeau        );
37*04fd306cSNickeau
38*04fd306cSNickeau        return $this;
39*04fd306cSNickeau    }
40*04fd306cSNickeau
41*04fd306cSNickeau    /**
42*04fd306cSNickeau     * @param WebDriverElement $element
43*04fd306cSNickeau     *
44*04fd306cSNickeau     * @return RemoteTouchScreen The instance.
45*04fd306cSNickeau     */
46*04fd306cSNickeau    public function doubleTap(WebDriverElement $element)
47*04fd306cSNickeau    {
48*04fd306cSNickeau        $this->executor->execute(
49*04fd306cSNickeau            DriverCommand::TOUCH_DOUBLE_TAP,
50*04fd306cSNickeau            ['element' => $element->getID()]
51*04fd306cSNickeau        );
52*04fd306cSNickeau
53*04fd306cSNickeau        return $this;
54*04fd306cSNickeau    }
55*04fd306cSNickeau
56*04fd306cSNickeau    /**
57*04fd306cSNickeau     * @param int $x
58*04fd306cSNickeau     * @param int $y
59*04fd306cSNickeau     *
60*04fd306cSNickeau     * @return RemoteTouchScreen The instance.
61*04fd306cSNickeau     */
62*04fd306cSNickeau    public function down($x, $y)
63*04fd306cSNickeau    {
64*04fd306cSNickeau        $this->executor->execute(DriverCommand::TOUCH_DOWN, [
65*04fd306cSNickeau            'x' => $x,
66*04fd306cSNickeau            'y' => $y,
67*04fd306cSNickeau        ]);
68*04fd306cSNickeau
69*04fd306cSNickeau        return $this;
70*04fd306cSNickeau    }
71*04fd306cSNickeau
72*04fd306cSNickeau    /**
73*04fd306cSNickeau     * @param int $xspeed
74*04fd306cSNickeau     * @param int $yspeed
75*04fd306cSNickeau     *
76*04fd306cSNickeau     * @return RemoteTouchScreen The instance.
77*04fd306cSNickeau     */
78*04fd306cSNickeau    public function flick($xspeed, $yspeed)
79*04fd306cSNickeau    {
80*04fd306cSNickeau        $this->executor->execute(DriverCommand::TOUCH_FLICK, [
81*04fd306cSNickeau            'xspeed' => $xspeed,
82*04fd306cSNickeau            'yspeed' => $yspeed,
83*04fd306cSNickeau        ]);
84*04fd306cSNickeau
85*04fd306cSNickeau        return $this;
86*04fd306cSNickeau    }
87*04fd306cSNickeau
88*04fd306cSNickeau    /**
89*04fd306cSNickeau     * @param WebDriverElement $element
90*04fd306cSNickeau     * @param int $xoffset
91*04fd306cSNickeau     * @param int $yoffset
92*04fd306cSNickeau     * @param int $speed
93*04fd306cSNickeau     *
94*04fd306cSNickeau     * @return RemoteTouchScreen The instance.
95*04fd306cSNickeau     */
96*04fd306cSNickeau    public function flickFromElement(WebDriverElement $element, $xoffset, $yoffset, $speed)
97*04fd306cSNickeau    {
98*04fd306cSNickeau        $this->executor->execute(DriverCommand::TOUCH_FLICK, [
99*04fd306cSNickeau            'xoffset' => $xoffset,
100*04fd306cSNickeau            'yoffset' => $yoffset,
101*04fd306cSNickeau            'element' => $element->getID(),
102*04fd306cSNickeau            'speed' => $speed,
103*04fd306cSNickeau        ]);
104*04fd306cSNickeau
105*04fd306cSNickeau        return $this;
106*04fd306cSNickeau    }
107*04fd306cSNickeau
108*04fd306cSNickeau    /**
109*04fd306cSNickeau     * @param WebDriverElement $element
110*04fd306cSNickeau     *
111*04fd306cSNickeau     * @return RemoteTouchScreen The instance.
112*04fd306cSNickeau     */
113*04fd306cSNickeau    public function longPress(WebDriverElement $element)
114*04fd306cSNickeau    {
115*04fd306cSNickeau        $this->executor->execute(
116*04fd306cSNickeau            DriverCommand::TOUCH_LONG_PRESS,
117*04fd306cSNickeau            ['element' => $element->getID()]
118*04fd306cSNickeau        );
119*04fd306cSNickeau
120*04fd306cSNickeau        return $this;
121*04fd306cSNickeau    }
122*04fd306cSNickeau
123*04fd306cSNickeau    /**
124*04fd306cSNickeau     * @param int $x
125*04fd306cSNickeau     * @param int $y
126*04fd306cSNickeau     *
127*04fd306cSNickeau     * @return RemoteTouchScreen The instance.
128*04fd306cSNickeau     */
129*04fd306cSNickeau    public function move($x, $y)
130*04fd306cSNickeau    {
131*04fd306cSNickeau        $this->executor->execute(DriverCommand::TOUCH_MOVE, [
132*04fd306cSNickeau            'x' => $x,
133*04fd306cSNickeau            'y' => $y,
134*04fd306cSNickeau        ]);
135*04fd306cSNickeau
136*04fd306cSNickeau        return $this;
137*04fd306cSNickeau    }
138*04fd306cSNickeau
139*04fd306cSNickeau    /**
140*04fd306cSNickeau     * @param int $xoffset
141*04fd306cSNickeau     * @param int $yoffset
142*04fd306cSNickeau     *
143*04fd306cSNickeau     * @return RemoteTouchScreen The instance.
144*04fd306cSNickeau     */
145*04fd306cSNickeau    public function scroll($xoffset, $yoffset)
146*04fd306cSNickeau    {
147*04fd306cSNickeau        $this->executor->execute(DriverCommand::TOUCH_SCROLL, [
148*04fd306cSNickeau            'xoffset' => $xoffset,
149*04fd306cSNickeau            'yoffset' => $yoffset,
150*04fd306cSNickeau        ]);
151*04fd306cSNickeau
152*04fd306cSNickeau        return $this;
153*04fd306cSNickeau    }
154*04fd306cSNickeau
155*04fd306cSNickeau    /**
156*04fd306cSNickeau     * @param WebDriverElement $element
157*04fd306cSNickeau     * @param int $xoffset
158*04fd306cSNickeau     * @param int $yoffset
159*04fd306cSNickeau     *
160*04fd306cSNickeau     * @return RemoteTouchScreen The instance.
161*04fd306cSNickeau     */
162*04fd306cSNickeau    public function scrollFromElement(WebDriverElement $element, $xoffset, $yoffset)
163*04fd306cSNickeau    {
164*04fd306cSNickeau        $this->executor->execute(DriverCommand::TOUCH_SCROLL, [
165*04fd306cSNickeau            'element' => $element->getID(),
166*04fd306cSNickeau            'xoffset' => $xoffset,
167*04fd306cSNickeau            'yoffset' => $yoffset,
168*04fd306cSNickeau        ]);
169*04fd306cSNickeau
170*04fd306cSNickeau        return $this;
171*04fd306cSNickeau    }
172*04fd306cSNickeau
173*04fd306cSNickeau    /**
174*04fd306cSNickeau     * @param int $x
175*04fd306cSNickeau     * @param int $y
176*04fd306cSNickeau     *
177*04fd306cSNickeau     * @return RemoteTouchScreen The instance.
178*04fd306cSNickeau     */
179*04fd306cSNickeau    public function up($x, $y)
180*04fd306cSNickeau    {
181*04fd306cSNickeau        $this->executor->execute(DriverCommand::TOUCH_UP, [
182*04fd306cSNickeau            'x' => $x,
183*04fd306cSNickeau            'y' => $y,
184*04fd306cSNickeau        ]);
185*04fd306cSNickeau
186*04fd306cSNickeau        return $this;
187*04fd306cSNickeau    }
188*04fd306cSNickeau}
189