7152adf80203fc06a693967e243e258a21d9f28b
[WebKit-https.git] / LayoutTests / fast / events / touch / ios / long-press-then-drag-up-to-change-selected-text.html
1 <!DOCTYPE html>
2
3 <html>
4 <head>
5     <script>
6         if (window.testRunner) {
7             testRunner.dumpAsText();
8             testRunner.waitUntilDone();
9         }
10
11         function getInitalPressScript()
12         {
13             return `
14             (function() {
15                 uiController.longPressAtPoint(65, 100, function() {
16                         uiController.uiScriptComplete();
17                 });
18             })();`
19         }
20     
21         function getDragUpOneScript()
22         {
23             return `
24             (function() {
25             var eventStream = {
26             events : [
27                 {
28                 interpolate : "linear",
29                 timestep: 0.1,
30                 startEvent : {
31                     inputType : "hand",
32                     timeOffset : 0,
33                     touches : [
34                         {
35                         inputType : "finger",
36                         phase : "began",
37                         id : 1,
38                         x : 56,
39                         y : 109,
40                         pressure : 0
41                         }
42                     ]
43                 },
44                 endEvent : {
45                     inputType : "hand",
46                     timeOffset : 0.5,
47                     touches : [
48                         {
49                         inputType : "finger",
50                         phase : "moved",
51                         id : 1,
52                         x : 56,
53                         y : 103,
54                         pressure : 0
55                         }
56                     ]
57                 }
58             }]};
59              
60             uiController.sendEventStream(JSON.stringify(eventStream), function() {});
61                 uiController.uiScriptComplete();
62             })();`
63         }
64     
65         function getDragUpTwoScript()
66         {
67             return `
68             (function() {
69              var eventStream = {
70              events : [
71                  {
72                  interpolate : "linear",
73                  timestep: 0.1,
74                  startEvent : {
75                      inputType : "hand",
76                      timeOffset : 0,
77                      touches : [
78                          {
79                          inputType : "finger",
80                          phase : "began",
81                          id : 1,
82                          x : 56,
83                          y : 103,
84                          pressure : 0
85                          }
86                      ]
87                  },
88                  endEvent : {
89                      inputType : "hand",
90                      timeOffset : 0.5,
91                      touches : [
92                          {
93                          inputType : "finger",
94                          phase : "moved",
95                          id : 1,
96                          x : 56,
97                          y : 84,
98                          pressure : 0
99                          }
100                      ]
101                  }
102              }]};
103              
104              uiController.sendEventStream(JSON.stringify(eventStream), function() {});
105                  uiController.uiScriptComplete();
106              })();`
107         }
108         function getDragDownOneScript()
109         {
110             return `
111             (function() {
112              var eventStream = {
113              events : [
114                  {
115                  interpolate : "linear",
116                  timestep: 0.1,
117                  startEvent : {
118                      inputType : "hand",
119                      timeOffset : 0,
120                      touches : [
121                          {
122                          inputType : "finger",
123                          phase : "began",
124                          id : 1,
125                          x : 56,
126                          y : 84,
127                          pressure : 0
128                          }
129                      ]
130                  },
131                  endEvent : {
132                      inputType : "hand",
133                      timeOffset : 0.5,
134                      touches : [
135                          {
136                          inputType : "finger",
137                          phase : "moved",
138                          id : 1,
139                          x : 56,
140                          y : 103,
141                          pressure : 0
142                          }
143                      ]
144                  }
145              }]};
146              
147              uiController.sendEventStream(JSON.stringify(eventStream), function() {});
148                  uiController.uiScriptComplete();
149              })();`
150         }
151         function getDragDownTwoScript()
152         {
153             return `
154             (function() {
155              var eventStream = {
156              events : [
157                  {
158                  interpolate : "linear",
159                  timestep: 0.1,
160                  startEvent : {
161                      inputType : "hand",
162                      timeOffset : 0,
163                      touches : [
164                          {
165                          inputType : "finger",
166                          phase : "began",
167                          id : 1,
168                          x : 56,
169                          y : 103,
170                          pressure : 0
171                          }
172                      ]
173                  },
174                  endEvent : {
175                      inputType : "hand",
176                      timeOffset : 0.5,
177                      touches : [
178                          {
179                          inputType : "finger",
180                          phase : "moved",
181                          id : 1,
182                          x : 56,
183                          y : 112,
184                          pressure : 0
185                          }
186                      ]
187                  }
188              }]};
189              
190              uiController.sendEventStream(JSON.stringify(eventStream), function() {});
191                  uiController.uiScriptComplete();
192              })();`
193         }
194         function getDragDownPastScript()
195         {
196             return `
197             (function() {
198              var eventStream = {
199              events : [
200                  {
201                  interpolate : "linear",
202                  timestep: 0.1,
203                  startEvent : {
204                      inputType : "hand",
205                      timeOffset : 0,
206                      touches : [
207                          {
208                          inputType : "finger",
209                          phase : "began",
210                          id : 1,
211                          x : 56,
212                          y : 112,
213                          pressure : 0
214                          }
215                      ]
216                  },
217                  endEvent : {
218                      inputType : "hand",
219                      timeOffset : 0.5,
220                      touches : [
221                          {
222                          inputType : "finger",
223                          phase : "moved",
224                          id : 1,
225                          x : 56,
226                          y : 140,
227                          pressure : 0
228                          }
229                      ]
230                  }
231              }]};
232              
233              uiController.sendEventStream(JSON.stringify(eventStream), function() {});
234                  uiController.uiScriptComplete();
235              })();`
236         }
237
238         function runTest()
239         {
240             if (!testRunner.runUIScript)
241                 return;
242
243             var output = '';
244             var target = document.getElementById('target');
245             
246             if (testRunner.runUIScript) {
247                 testRunner.runUIScript(getInitalPressScript(), function(result) {
248                     if (document.getSelection().toString() == "Ut")
249                         output += 'PASS: Correct Selection';
250                     else
251                         output += 'FAIL: failed to select a word as a result of a long press';
252                     output += '<br>';
253
254                     testRunner.runUIScript(getDragUpOneScript(), function(result) {
255                         if (document.getSelection().toString() == "e et dolore magna aliqua. Ut")
256                             output += 'PASS: Correct Selection';
257                         else
258                             output += 'FAIL: failed to select additional line after a drag.' + document.getSelection().toString()
259                         output += '<br>';
260                                           
261                         testRunner.runUIScript(getDragUpTwoScript(), function(result) {
262                             if (document.getSelection().toString() == "mod tempor incididunt ut labore et dolore magna aliqua. Ut")
263                                 output += 'PASS: Correct Selection';
264                             else
265                                 output += 'FAIL: failed to select additional line after a drag.' + document.getSelection().toString()
266                             output += '<br>';
267
268                             testRunner.runUIScript(getDragDownOneScript(), function(result) {
269                                 if (document.getSelection().toString() == "e et dolore magna aliqua. Ut")
270                                     output += 'PASS: Correct Selection';
271                                 else
272                                     output += 'FAIL: failed to deselect line after a drag.' + document.getSelection().toString()
273                                 output += '<br>';
274
275                                 testRunner.runUIScript(getDragDownTwoScript(), function(result) {
276                                     if (document.getSelection().toString() == "Ut")
277                                         output += 'PASS: Correct Selection';
278                                     else
279                                         output += 'FAIL: failed to deselect line after a drag.' + document.getSelection().toString()
280                                     output += '<br>';
281                             
282                                     testRunner.runUIScript(getDragDownPastScript(), function(result) {
283                                         if (document.getSelection().toString() == "t")
284                                             output += 'PASS: Correct Selection';
285                                         else
286                                             output += 'FAIL: failed to reduce selection to a single character by dragging up.'
287                                         output += '<br>';
288                                         output += result;
289                                         document.getElementById('target').innerHTML = output;
290                                         //testRunner.notifyDone();
291                                     });
292                                 });
293                             });
294                         });
295                     });
296                 });
297             }
298         }
299
300         window.addEventListener('load', runTest, false);
301     </script>
302     <style>
303         #target {
304             height: 400px;
305             width: 200px;
306             background-color: silver;
307         }
308     </style>
309     <meta name="viewport" content="initial-scale=1">
310 </head>
311 <body>
312 <div id="target">
313     <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
314
315     This test requires UIScriptController to run.
316 </div>
317 </body>
318 </html>