summaryrefslogtreecommitdiffstats
path: root/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-touch-operations.html
blob: f90c3f7a327326c773928cd5759b2061be62c945 (plain)
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>