Use testdriver Action API in WPT pointerevent touch tests

In order to run the web-platform-tests automatically, we will use
testdriver Action API in all the wpt to simulate inputs. Here we are
changing some pointerevent touch input tests which are doing scrolling.

Bug: 606367
Change-Id: Ibdabcbb973ac641174ca6faadccd737fa8c678b4
Reviewed-on: https://chromium-review.googlesource.com/c/1461504
Reviewed-by: Navid Zolghadr <nzolghadr@chromium.org>
Commit-Queue: Lan Wei <lanwei@chromium.org>
Cr-Commit-Position: refs/heads/master@{#632251}
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_change-touch-action-onpointerdown_touch-manual.html b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_change-touch-action-onpointerdown_touch.html
similarity index 95%
rename from third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_change-touch-action-onpointerdown_touch-manual.html
rename to third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_change-touch-action-onpointerdown_touch.html
index 04d56cb7a..72f1e6d3 100644
--- a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_change-touch-action-onpointerdown_touch-manual.html
+++ b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_change-touch-action-onpointerdown_touch.html
@@ -6,6 +6,9 @@
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
         <script src="/resources/testharnessreport.js"></script>
+        <script src="/resources/testdriver.js"></script>
+        <script src="/resources/testdriver-actions.js"></script>
+        <script src="/resources/testdriver-vendor.js"></script>
         <script src="pointerevent_support.js"></script>
         <style>
             #target0 {
@@ -124,6 +127,9 @@
                 on_event(target0, 'pointerup', function(event) {
                     firstTouchCompleted = true;
                 });
+
+                // Inject touch inputs.
+                touchScrollInTarget(target0, 'down');
             }
         </script>
         <h1>touch-action: auto to none</h1>
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointercancel_touch-manual.html b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointercancel_touch.html
similarity index 93%
rename from third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointercancel_touch-manual.html
rename to third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointercancel_touch.html
index 70a65ee..b41c501 100644
--- a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointercancel_touch-manual.html
+++ b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointercancel_touch.html
@@ -5,6 +5,9 @@
         <meta name="viewport" content="width=device-width">
         <script src="/resources/testharness.js"></script>
         <script src="/resources/testharnessreport.js"></script>
+        <script src="/resources/testdriver.js"></script>
+        <script src="/resources/testdriver-actions.js"></script>
+        <script src="/resources/testdriver-vendor.js"></script>
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
@@ -66,6 +69,9 @@
                     });
                     test_pointerEvent.done();
                 });
+
+                // Inject touch inputs.
+                touchScrollInTarget(target0, 'down');
             }
         </script>
         <h1>Pointer Events pointercancel Tests</h1>
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointerleave_after_pointercancel_touch-manual.html b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointerleave_after_pointercancel_touch.html
similarity index 91%
rename from third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointerleave_after_pointercancel_touch-manual.html
rename to third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointerleave_after_pointercancel_touch.html
index 56be265..73806f5 100644
--- a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointerleave_after_pointercancel_touch-manual.html
+++ b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointerleave_after_pointercancel_touch.html
@@ -6,6 +6,9 @@
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
         <script src="/resources/testharnessreport.js"></script>
+        <script src="/resources/testdriver.js"></script>
+        <script src="/resources/testdriver-actions.js"></script>
+        <script src="/resources/testdriver-vendor.js"></script>
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
     </head>
@@ -54,6 +57,9 @@
                         }
                     }
                 });
+
+                // Inject touch inputs.
+                touchScrollInTarget(target0, 'down');
             }
 
         </script>
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointerout_after_pointercancel_touch-manual.html b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointerout_after_pointercancel_touch.html
similarity index 91%
rename from third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointerout_after_pointercancel_touch-manual.html
rename to third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointerout_after_pointercancel_touch.html
index 1888591..67559cb 100644
--- a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointerout_after_pointercancel_touch-manual.html
+++ b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointerout_after_pointercancel_touch.html
@@ -6,6 +6,9 @@
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
         <script src="/resources/testharnessreport.js"></script>
+        <script src="/resources/testdriver.js"></script>
+        <script src="/resources/testdriver-actions.js"></script>
+        <script src="/resources/testdriver-vendor.js"></script>
         <!-- Additional helper script for common checks across event types -->
         <script type="text/javascript" src="pointerevent_support.js"></script>
     </head>
@@ -55,6 +58,9 @@
                         }
                     }
                 });
+
+                // Inject touch inputs.
+                touchScrollInTarget(target0, 'down');
             }
 
         </script>
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_releasepointercapture_onpointercancel_touch-manual.html b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_releasepointercapture_onpointercancel_touch.html
similarity index 92%
rename from third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_releasepointercapture_onpointercancel_touch-manual.html
rename to third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_releasepointercapture_onpointercancel_touch.html
index 49784004..8133dadc 100644
--- a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_releasepointercapture_onpointercancel_touch-manual.html
+++ b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_releasepointercapture_onpointercancel_touch.html
@@ -6,6 +6,9 @@
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
         <script src="/resources/testharnessreport.js"></script>
+        <script src="/resources/testdriver.js"></script>
+        <script src="/resources/testdriver-actions.js"></script>
+        <script src="/resources/testdriver-vendor.js"></script>
         <script src="pointerevent_support.js"></script>
     </head>
     <body class="scrollable">
@@ -64,6 +67,9 @@
                     event_log.push('pointercancel@target0');
                     pointercancelGot = true;
                 });
+
+                // Inject touch inputs.
+                touchScrollInTarget(target0, 'down');
             }
         </script>
         <h1>Pointer Events Capture Test</h1>
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_support.js b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_support.js
index 5c35e016..0d5b6b040 100644
--- a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_support.js
+++ b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_support.js
@@ -252,3 +252,35 @@
 function checkPointerEventType(event) {
     assert_equals(event.pointerType, expectedPointerType, "pointerType should be the same as the requested device.");
 }
+
+function touchScrollInTarget(target, direction) {
+    var x_delta = 0;
+    var y_delta = 0;
+    if (direction == "down") {
+        x_delta = 0;
+        y_delta = -10;
+    } else if (direction == "up") {
+        x_delta = 0;
+        y_delta = 10;
+    } else if (direction == "right") {
+        x_delta = -10;
+        y_delta = 0;
+    } else if (direction == "left") {
+        x_delta = 10;
+        y_delta = 0;
+    } else {
+        throw("scroll direction '" + direction + "' is not expected, direction should be 'down', 'up', 'left' or 'right'");
+    }
+    return new test_driver.Actions()
+                   .addPointer("pointer1", "touch")
+                   .pointerMove(0, 0, {origin: target})
+                   .pointerDown()
+                   .pointerMove(x_delta, y_delta, {origin: target})
+                   .pointerMove(2 * x_delta, 2 * y_delta, {origin: target})
+                   .pointerMove(3 * x_delta, 3 * y_delta, {origin: target})
+                   .pointerMove(4 * x_delta, 4 * y_delta, {origin: target})
+                   .pointerMove(5 * x_delta, 5 * y_delta, {origin: target})
+                   .pointerMove(6 * x_delta, 6 * y_delta, {origin: target})
+                   .pointerUp()
+                   .send();
+}
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-auto-css_touch-manual.html b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-auto-css_touch.html
similarity index 93%
rename from third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-auto-css_touch-manual.html
rename to third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-auto-css_touch.html
index f5e9d12..ccacde4 100644
--- a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-auto-css_touch-manual.html
+++ b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-auto-css_touch.html
@@ -6,6 +6,9 @@
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
         <script src="/resources/testharnessreport.js"></script>
+        <script src="/resources/testdriver.js"></script>
+        <script src="/resources/testdriver-actions.js"></script>
+        <script src="/resources/testdriver-vendor.js"></script>
         <script src="pointerevent_support.js"></script>
         <style>
             #target0 {
@@ -118,6 +121,10 @@
                         updateDescriptionComplete();
                     }
                 });
+
+                // Inject touch inputs.
+                touchScrollInTarget(target0, 'down').then(function() {
+                    return touchScrollInTarget(target0, 'right'); });
             }
         </script>
         <h1>touch-action: auto</h1>
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch-manual.html b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch.html
similarity index 93%
rename from third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch-manual.html
rename to third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch.html
index d87d2b3..d09e6c5 100644
--- a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch-manual.html
+++ b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch.html
@@ -6,6 +6,9 @@
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
         <script src="/resources/testharnessreport.js"></script>
+        <script src="/resources/testdriver.js"></script>
+        <script src="/resources/testdriver-actions.js"></script>
+        <script src="/resources/testdriver-vendor.js"></script>
         <script src="pointerevent_support.js"></script>
         <style>
             #divParent {
@@ -118,6 +121,10 @@
                         updateDescriptionComplete();
                     }
                 });
+
+                // Inject touch inputs.
+                touchScrollInTarget(scrollTarget, 'down').then(function() {
+                    return touchScrollInTarget(scrollTarget, 'right'); });
             }
 
             function enableScrolling() {
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-pan-x-pan-y_touch-manual.html b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-pan-x-pan-y_touch.html
similarity index 93%
rename from third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-pan-x-pan-y_touch-manual.html
rename to third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-pan-x-pan-y_touch.html
index 0c900ff..d5d49453 100644
--- a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-pan-x-pan-y_touch-manual.html
+++ b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-pan-x-pan-y_touch.html
@@ -6,6 +6,9 @@
         <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
         <script src="/resources/testharness.js"></script>
         <script src="/resources/testharnessreport.js"></script>
+        <script src="/resources/testdriver.js"></script>
+        <script src="/resources/testdriver-actions.js"></script>
+        <script src="/resources/testdriver-vendor.js"></script>
         <script src="pointerevent_support.js"></script>
         <style>
             #target0 {
@@ -115,6 +118,10 @@
                         updateDescriptionComplete();
                     }
                 });
+
+                // Inject touch inputs.
+                touchScrollInTarget(target0, 'down').then(function() {
+                    return touchScrollInTarget(target0, 'right'); });
             }
         </script>
         <h1>touch-action: pan-x pan-y</h1>
diff --git a/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_change-touch-action-onpointerdown_touch-manual-automation.js b/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_change-touch-action-onpointerdown_touch-manual-automation.js
deleted file mode 100644
index fe24736..0000000
--- a/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_change-touch-action-onpointerdown_touch-manual-automation.js
+++ /dev/null
@@ -1,6 +0,0 @@
-importAutomationScript('/pointerevents/pointerevent_common_input.js');
-
-function inject_input() {
-  return touchScrollInTarget('#target0', 'down');
-}
-
diff --git a/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_pointercancel_touch-manual-automation.js b/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_pointercancel_touch-manual-automation.js
deleted file mode 100644
index c46cb0a..0000000
--- a/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_pointercancel_touch-manual-automation.js
+++ /dev/null
@@ -1,7 +0,0 @@
-importAutomationScript('/pointerevents/pointerevent_common_input.js');
-
-function inject_input() {
-  return touchScrollInTarget('#target0', 'down');
-}
-
-
diff --git a/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_pointerleave_after_pointercancel_touch-manual-automation.js b/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_pointerleave_after_pointercancel_touch-manual-automation.js
deleted file mode 100644
index c46cb0a..0000000
--- a/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_pointerleave_after_pointercancel_touch-manual-automation.js
+++ /dev/null
@@ -1,7 +0,0 @@
-importAutomationScript('/pointerevents/pointerevent_common_input.js');
-
-function inject_input() {
-  return touchScrollInTarget('#target0', 'down');
-}
-
-
diff --git a/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_pointerout_after_pointercancel_touch-manual-automation.js b/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_pointerout_after_pointercancel_touch-manual-automation.js
deleted file mode 100644
index fe24736..0000000
--- a/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_pointerout_after_pointercancel_touch-manual-automation.js
+++ /dev/null
@@ -1,6 +0,0 @@
-importAutomationScript('/pointerevents/pointerevent_common_input.js');
-
-function inject_input() {
-  return touchScrollInTarget('#target0', 'down');
-}
-
diff --git a/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_releasepointercapture_onpointercancel_touch-manual-automation.js b/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_releasepointercapture_onpointercancel_touch-manual-automation.js
deleted file mode 100644
index fe24736..0000000
--- a/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_releasepointercapture_onpointercancel_touch-manual-automation.js
+++ /dev/null
@@ -1,6 +0,0 @@
-importAutomationScript('/pointerevents/pointerevent_common_input.js');
-
-function inject_input() {
-  return touchScrollInTarget('#target0', 'down');
-}
-
diff --git a/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_touch-action-auto-css_touch-manual-automation.js b/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_touch-action-auto-css_touch-manual-automation.js
deleted file mode 100644
index f3e2b84a..0000000
--- a/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_touch-action-auto-css_touch-manual-automation.js
+++ /dev/null
@@ -1,8 +0,0 @@
-importAutomationScript('/pointerevents/pointerevent_common_input.js');
-
-function inject_input() {
-  return touchScrollInTarget('#target0', 'down').then(function() {
-    return touchScrollInTarget('#target0', 'right');
-  });
-}
-
diff --git a/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch-manual-automation.js b/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch-manual-automation.js
deleted file mode 100644
index 1c006c4..0000000
--- a/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch-manual-automation.js
+++ /dev/null
@@ -1,7 +0,0 @@
-importAutomationScript('/pointerevents/pointerevent_common_input.js');
-
-function inject_input() {
-  return touchScrollInTarget('#scrollTarget', 'down').then(function() {
-    return touchScrollInTarget('#scrollTarget', 'right');
-  });
-}
diff --git a/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_touch-action-pan-x-pan-y_touch-manual-automation.js b/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_touch-action-pan-x-pan-y_touch-manual-automation.js
deleted file mode 100644
index 4a2a9a4..0000000
--- a/third_party/blink/web_tests/external/wpt_automation/pointerevents/pointerevent_touch-action-pan-x-pan-y_touch-manual-automation.js
+++ /dev/null
@@ -1,7 +0,0 @@
-importAutomationScript('/pointerevents/pointerevent_common_input.js');
-
-function inject_input() {
-  return touchScrollInTarget('#target0', 'down').then(function() {
-    return touchScrollInTarget('#target0', 'right');
-  });
-}
diff --git a/third_party/blink/web_tests/resources/testdriver-vendor.js b/third_party/blink/web_tests/resources/testdriver-vendor.js
index a806a721..7a7dc03 100644
--- a/third_party/blink/web_tests/resources/testdriver-vendor.js
+++ b/third_party/blink/web_tests/resources/testdriver-vendor.js
@@ -84,6 +84,7 @@
     for (let i = 0; i < actions.length; i++) {
       var last_x_position = 0;
       var last_y_position = 0;
+      var first_pointer_down = false;
       for (let j = 0; j < actions[i].actions.length; j++) {
         if ('origin' in actions[i].actions[j]) {
           if (actions[i].actions[j].origin == "viewport") {
@@ -126,6 +127,16 @@
           actions[i].actions[j].x = last_x_position;
           actions[i].actions[j].y = last_y_position;
         }
+
+        if ('parameters' in actions[i] && actions[i].parameters.pointerType == "touch") {
+          if (actions[i].actions[j].type == "pointerMove" && !first_pointer_down) {
+            actions[i].actions.splice(j--, 1);
+          } else if (actions[i].actions[j].type == "pointerDown") {
+            first_pointer_down = true;
+          } else if (actions[i].actions[j].type == "pointerUp") {
+            first_pointer_down = false;
+          }
+        }
       }
     }