touch_action_helpers.js 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. // Some common helpers
  2. function touchActionSetup(testDriver) {
  3. add_completion_callback(subtestDone);
  4. document.body.addEventListener('touchend', testDriver, { passive: true });
  5. }
  6. function touchScrollRight(aSelector = '#target0', aX = 20, aY = 20) {
  7. var target = document.querySelector(aSelector);
  8. return ok(synthesizeNativeTouchDrag(target, aX + 40, aY, -40, 0), "Synthesized horizontal drag");
  9. }
  10. function touchScrollDown(aSelector = '#target0', aX = 20, aY = 20) {
  11. var target = document.querySelector(aSelector);
  12. return ok(synthesizeNativeTouchDrag(target, aX, aY + 40, 0, -40), "Synthesized vertical drag");
  13. }
  14. function tapComplete() {
  15. var button = document.getElementById('btnComplete');
  16. return button.click();
  17. }
  18. // The main body functions to simulate the input events required for the named test
  19. function* pointerevent_touch_action_auto_css_touch_manual(testDriver) {
  20. touchActionSetup(testDriver);
  21. yield touchScrollRight();
  22. yield waitForApzFlushedRepaints(testDriver);
  23. yield touchScrollDown();
  24. }
  25. function* pointerevent_touch_action_button_test_touch_manual(testDriver) {
  26. touchActionSetup(testDriver);
  27. yield touchScrollDown();
  28. yield waitForApzFlushedRepaints(testDriver);
  29. yield setTimeout(testDriver, 2 * scrollReturnInterval);
  30. yield touchScrollRight();
  31. yield waitForApzFlushedRepaints(testDriver);
  32. yield setTimeout(testDriver, 2 * scrollReturnInterval);
  33. yield touchScrollDown('#target0 > button');
  34. yield waitForApzFlushedRepaints(testDriver);
  35. yield touchScrollRight('#target0 > button');
  36. yield waitForApzFlushedRepaints(testDriver);
  37. yield tapComplete();
  38. }
  39. function* pointerevent_touch_action_inherit_child_auto_child_none_touch_manual(testDriver) {
  40. touchActionSetup(testDriver);
  41. yield touchScrollDown('#target0 > div div');
  42. yield waitForApzFlushedRepaints(testDriver);
  43. yield touchScrollRight('#target0 > div div');
  44. yield waitForApzFlushedRepaints(testDriver);
  45. yield tapComplete();
  46. }
  47. function* pointerevent_touch_action_inherit_child_none_touch_manual(testDriver) {
  48. touchActionSetup(testDriver);
  49. yield touchScrollDown('#target0 > div');
  50. yield waitForApzFlushedRepaints(testDriver);
  51. yield touchScrollRight('#target0 > div');
  52. yield waitForApzFlushedRepaints(testDriver);
  53. yield tapComplete();
  54. }
  55. function* pointerevent_touch_action_inherit_child_pan_x_child_pan_x_touch_manual(testDriver) {
  56. touchActionSetup(testDriver);
  57. yield touchScrollDown('#target0 > div div');
  58. yield waitForApzFlushedRepaints(testDriver);
  59. yield touchScrollRight('#target0 > div div');
  60. yield waitForApzFlushedRepaints(testDriver);
  61. yield tapComplete();
  62. }
  63. function* pointerevent_touch_action_inherit_child_pan_x_child_pan_y_touch_manual(testDriver) {
  64. touchActionSetup(testDriver);
  65. yield touchScrollDown('#target0 > div div');
  66. yield waitForApzFlushedRepaints(testDriver);
  67. yield touchScrollRight('#target0 > div div');
  68. yield waitForApzFlushedRepaints(testDriver);
  69. yield tapComplete();
  70. }
  71. function* pointerevent_touch_action_inherit_highest_parent_none_touch_manual(testDriver) {
  72. touchActionSetup(testDriver);
  73. yield touchScrollDown('#target0 > div');
  74. yield waitForApzFlushedRepaints(testDriver);
  75. yield touchScrollRight('#target0 > div');
  76. }
  77. function* pointerevent_touch_action_inherit_parent_none_touch_manual(testDriver) {
  78. touchActionSetup(testDriver);
  79. yield touchScrollDown();
  80. yield waitForApzFlushedRepaints(testDriver);
  81. yield touchScrollRight();
  82. yield waitForApzFlushedRepaints(testDriver);
  83. yield tapComplete();
  84. }
  85. function* pointerevent_touch_action_none_css_touch_manual(testDriver) {
  86. touchActionSetup(testDriver);
  87. yield touchScrollDown();
  88. yield waitForApzFlushedRepaints(testDriver);
  89. yield touchScrollRight();
  90. yield waitForApzFlushedRepaints(testDriver);
  91. yield tapComplete();
  92. }
  93. function* pointerevent_touch_action_pan_x_css_touch_manual(testDriver) {
  94. touchActionSetup(testDriver);
  95. yield touchScrollDown();
  96. yield waitForApzFlushedRepaints(testDriver);
  97. yield touchScrollRight();
  98. yield waitForApzFlushedRepaints(testDriver);
  99. yield tapComplete();
  100. }
  101. function* pointerevent_touch_action_pan_x_pan_y_pan_y_touch_manual(testDriver) {
  102. touchActionSetup(testDriver);
  103. yield touchScrollDown('#target0 > div div');
  104. yield waitForApzFlushedRepaints(testDriver);
  105. yield touchScrollRight('#target0 > div div');
  106. yield waitForApzFlushedRepaints(testDriver);
  107. yield tapComplete();
  108. }
  109. function* pointerevent_touch_action_pan_x_pan_y_touch_manual(testDriver) {
  110. touchActionSetup(testDriver);
  111. yield touchScrollDown();
  112. yield waitForApzFlushedRepaints(testDriver);
  113. yield touchScrollRight();
  114. }
  115. function* pointerevent_touch_action_pan_y_css_touch_manual(testDriver) {
  116. touchActionSetup(testDriver);
  117. yield touchScrollDown();
  118. yield waitForApzFlushedRepaints(testDriver);
  119. yield touchScrollRight();
  120. yield waitForApzFlushedRepaints(testDriver);
  121. yield tapComplete();
  122. }
  123. function* pointerevent_touch_action_span_test_touch_manual(testDriver) {
  124. touchActionSetup(testDriver);
  125. yield touchScrollDown();
  126. yield waitForApzFlushedRepaints(testDriver);
  127. yield setTimeout(testDriver, 2 * scrollReturnInterval);
  128. yield touchScrollRight();
  129. yield waitForApzFlushedRepaints(testDriver);
  130. yield setTimeout(testDriver, 2 * scrollReturnInterval);
  131. yield touchScrollDown('#testspan');
  132. yield waitForApzFlushedRepaints(testDriver);
  133. yield touchScrollRight('#testspan');
  134. yield waitForApzFlushedRepaints(testDriver);
  135. yield tapComplete();
  136. }
  137. function* pointerevent_touch_action_svg_test_touch_manual(testDriver) {
  138. touchActionSetup(testDriver);
  139. yield touchScrollDown();
  140. yield waitForApzFlushedRepaints(testDriver);
  141. yield setTimeout(testDriver, 2 * scrollReturnInterval);
  142. yield touchScrollRight();
  143. yield waitForApzFlushedRepaints(testDriver);
  144. yield setTimeout(testDriver, 2 * scrollReturnInterval);
  145. yield touchScrollDown('#target0', 250, 250);
  146. yield waitForApzFlushedRepaints(testDriver);
  147. yield touchScrollRight('#target0', 250, 250);
  148. yield waitForApzFlushedRepaints(testDriver);
  149. yield tapComplete();
  150. }
  151. function* pointerevent_touch_action_table_test_touch_manual(testDriver) {
  152. touchActionSetup(testDriver);
  153. yield touchScrollDown('#row1');
  154. yield waitForApzFlushedRepaints(testDriver);
  155. yield setTimeout(testDriver, 2 * scrollReturnInterval);
  156. yield touchScrollRight('#row1');
  157. yield waitForApzFlushedRepaints(testDriver);
  158. yield setTimeout(testDriver, 2 * scrollReturnInterval);
  159. yield touchScrollDown('#cell3');
  160. yield waitForApzFlushedRepaints(testDriver);
  161. yield touchScrollRight('#cell3');
  162. yield waitForApzFlushedRepaints(testDriver);
  163. yield tapComplete();
  164. }
  165. // This the stuff that runs the appropriate body function above
  166. var test = eval(_ACTIVE_TEST_NAME.replace(/-/g, '_'));
  167. waitUntilApzStable().then(runContinuation(test));