1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test.js"></script>
<script src="../resources/common.js"></script>
<script src="../resources/picker-common.js"></script>
</head>
<body>
<select id="menu">
<option>foo</option>
<option selected>bar</option>
<option>baz</option>
</select>
<select id="menu2">
<option>1</option>
<option selected>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
<option>11</option>
<option>12</option>
<option>13</option>
<option>14</option>
<option>15</option>
<option>16</option>
<option>17</option>
<option>18</option>
<option>19</option>
<option>20</option>
<option>21</option>
<option>22</option>
<option>23</option>
<option>24</option>
<option>25</option>
<option>26</option>
<option>27</option>
<option>28</option>
<option>29</option>
</select>
<script>
var menuElement = document.getElementById('menu');
var menuElement2 = document.getElementById('menu2');
var picker = null;
eventSender.clearTouchPoints();
openPicker(menuElement, function () {
picker = window.internals.pagePopupWindow.global.picker;
shouldBeEqualToString('picker._selectElement.value', '1');
shouldBeEqualToString('menuElement.value', 'bar');
var position = elementCenterPosition(picker._selectElement.children[0]);
eventSender.addTouchPoint(position[0], position[1]);
eventSender.touchStart();
shouldBeEqualToString('picker._selectElement.value', '0');
position = elementCenterPosition(picker._selectElement.children[2]);
eventSender.updateTouchPoint(0, position[0], position[1]);
eventSender.touchMove();
shouldBeEqualToString('picker._selectElement.value', '2');
eventSender.releaseTouchPoint(0);
eventSender.touchEnd();
shouldBeNull('window.internals.pagePopupWindow');
shouldBeEqualToString('menuElement.value', 'baz');
test2();
}, function () {
testFailed('picker didn\'t open')
finishJSTest();
});
function test2() {
openPicker(menuElement2, function () {
picker = window.internals.pagePopupWindow.global.picker;
shouldBeEqualToString('picker._selectElement.value', '1');
shouldBeEqualToString('menuElement2.value', '2');
var position = elementCenterPosition(picker._selectElement.children[2]);
eventSender.addTouchPoint(position[0], position[1]);
eventSender.touchStart();
shouldBeEqualToString('picker._selectElement.value', '2');
position = elementCenterPosition(picker._selectElement.children[3]);
eventSender.updateTouchPoint(0, position[0], position[1]);
eventSender.touchMove();
shouldBeEqualToString('picker._selectElement.value', '3');
// Moving touch up should scroll and end touch select mode.
position = elementCenterPosition(picker._selectElement.children[0]);
eventSender.updateTouchPoint(0, position[0], position[1]);
eventSender.touchMove();
eventSender.gestureScrollBegin(position[0], position[1]);
eventSender.gestureScrollUpdate(0, -130);
setTimeout(test2AfterScrollEvent, 1000);
}, function () {
testFailed('picker didn\'t open')
finishJSTest();
});
}
function test2AfterScrollEvent() {
// touchmove event fires before the scroll event so the selection will change.
shouldBeEqualToString('picker._selectElement.value', '0');
eventSender.releaseTouchPoint(0);
eventSender.touchEnd();
eventSender.gestureScrollEnd(0, 0);
shouldNotBe('window.internals.pagePopupWindow', 'null');
shouldBeEqualToString('menuElement2.value', '2');
finishJSTest();
}
</script>
</body>
</html>
|