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