<!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>