Add coordinate space to event streams and streamline tests
[WebKit-https.git] / LayoutTests / fast / events / touch / ios / long-press-then-drag-down-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 getDragScript(startX, startY, endX, endY)
22         {
23             return `
24             (function() {
25             var eventStream = {
26             events : [
27                 {
28                 interpolate : "linear",
29                 timestep: 0.1,
30                 coordinateSpace : "global",
31                 startEvent : {
32                     inputType : "hand",
33                     timeOffset : 0,
34                     touches : [
35                         {
36                         inputType : "finger",
37                         phase : "began",
38                         id : 1,
39                         x : ${startX},
40                         y : ${startY},
41                         pressure : 0
42                         }
43                     ]
44                 },
45                 endEvent : {
46                     inputType : "hand",
47                     timeOffset : 0.5,
48                     touches : [
49                         {
50                         inputType : "finger",
51                         phase : "moved",
52                         id : 1,
53                         x : ${endX},
54                         y : ${endY},
55                         pressure : 0
56                         }
57                     ]
58                 }
59             }]};
60              
61             uiController.sendEventStream(JSON.stringify(eventStream), function() {});
62                 uiController.uiScriptComplete();
63             })();`
64         }
65
66         function runTest()
67         {
68             if (!testRunner.runUIScript)
69                 return;
70
71             var output = '';
72             var target = document.getElementById('target');
73             
74             if (testRunner.runUIScript) {
75                 testRunner.runUIScript(getInitalPressScript(), function(result) {
76                     if (document.getSelection().toString() == "Ut")
77                         output += 'PASS: Correct Selection';
78                     else
79                         output += 'FAIL: failed to select a word as a result of a long press';
80                     output += '<br>';
81
82                     testRunner.runUIScript(getDragScript(72, 120, 72, 140), function(result) {
83                         if (document.getSelection().toString() == "Ut enim ad minim veniam, q")
84                             output += 'PASS: Correct Selection';
85                         else
86                             output += 'FAIL: failed to select additional line after a drag.'
87                         output += '<br>';
88                                           
89                         testRunner.runUIScript(getDragScript(72, 140, 72, 160), function(result) {
90                             if (document.getSelection().toString() == "Ut enim ad minim veniam, quis nostrud exercitati")
91                                 output += 'PASS: Correct Selection';
92                             else
93                                 output += 'FAIL: failed to select additional line after a drag.'
94                             output += '<br>';
95
96                             testRunner.runUIScript(getDragScript(72, 160, 72, 140), function(result) {
97                                 if (document.getSelection().toString() == "Ut enim ad minim veniam, q")
98                                     output += 'PASS: Correct Selection';
99                                 else
100                                     output += 'FAIL: failed to deselect line after a drag.'
101                                 output += '<br>';
102
103                                 testRunner.runUIScript(getDragScript(72, 140, 72, 115), function(result) {
104                                     if (document.getSelection().toString() == "Ut")
105                                         output += 'PASS: Correct Selection';
106                                     else
107                                         output += 'FAIL: failed to deselect line after a drag.'
108                                     output += '<br>';
109                             
110                                     testRunner.runUIScript(getDragScript(72, 115, 72, 80), function(result) {
111                                         if (document.getSelection().toString() == "U")
112                                             output += 'PASS: Correct Selection';
113                                         else
114                                             output += 'FAIL: failed to reduce selection to a single character by dragging up.'
115                                         output += '<br>';
116                                         output += result;
117                                         document.getElementById('target').innerHTML = output;
118                                         testRunner.notifyDone();
119                                     });
120                                 });
121                             });
122                         });
123                     });
124                 });
125             }
126         }
127
128         window.addEventListener('load', runTest, false);
129     </script>
130     <style>
131         #target {
132             height: 400px;
133             width: 200px;
134             background-color: silver;
135         }
136     </style>
137     <meta name="viewport" content="initial-scale=1">
138 </head>
139 <body>
140 <div id="target">
141     <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>
142
143     This test requires UIScriptController to run.
144 </div>
145 </body>
146 </html>