diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 9b9d60a..602b281 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,5 +1,24 @@
 2019-05-19  Antoine Quint  <graouts@apple.com>
 
+        [Pointer Events] The pointerup, pointerout and pointerleave events may be fired twice
+        https://bugs.webkit.org/show_bug.cgi?id=198028
+        <rdar://problem/50769425>
+
+        Reviewed by Dean Jackson.
+
+        Add a new test that checks that we're firing a "pointermove" event when the touch pressure
+        changes, even when the touch is stationary, and that a single "pointerup" event is fired
+        as the touch ends and the pressure changes. The relevant code change is done in WebKitAdditions.
+
+        * pointerevents/ios/pressure-change-expected.txt: Added.
+        * pointerevents/ios/pressure-change.html: Added.
+        * pointerevents/utils.js:
+        (prototype._handlePointerEvent):
+        (prototype.stationary):
+        (prototype._action):
+
+2019-05-19  Antoine Quint  <graouts@apple.com>
+
         [Pointer Events] A pointer should be marked as primary for all of its events
         https://bugs.webkit.org/show_bug.cgi?id=197909
         <rdar://problem/50801608>
diff --git a/LayoutTests/pointerevents/ios/pressure-change-expected.txt b/LayoutTests/pointerevents/ios/pressure-change-expected.txt
new file mode 100644
index 0000000..c0c3c98
--- /dev/null
+++ b/LayoutTests/pointerevents/ios/pressure-change-expected.txt
@@ -0,0 +1,3 @@
+
+PASS Pointer events are fired as pressure changes. 
+
diff --git a/LayoutTests/pointerevents/ios/pressure-change.html b/LayoutTests/pointerevents/ios/pressure-change.html
new file mode 100644
index 0000000..c36ce14
--- /dev/null
+++ b/LayoutTests/pointerevents/ios/pressure-change.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset=utf-8>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+</head>
+<body>
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script>
+<script src="../utils.js"></script>
+<script>
+
+'use strict';
+
+target_test((target, test) => {
+    target.style.touchAction = "none";
+    const eventTracker = new EventTracker(target, ["pointerdown", "pointermove", "pointerup"]);
+
+    const one = ui.finger();
+    ui.sequence([
+        one.begin({ x: 10, y: 10 }),
+        one.stationary({ pressure: 500 }),
+        one.end(),
+    ]).then(() => {
+        eventTracker.assertMatchesEvents([
+            { id: 1, type: "pointerdown", x: 10, y: 10, pressure: 0 },
+            { id: 1, type: "pointermove", x: 10, y: 10, pressure: 1 },
+            { id: 1, type: "pointerup", x: 10, y: 10, pressure: 0 }
+        ]);
+        test.done();
+    });
+}, "Pointer events are fired as pressure changes.");
+
+</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/LayoutTests/pointerevents/utils.js b/LayoutTests/pointerevents/utils.js
index b144edc..31c271e 100644
--- a/LayoutTests/pointerevents/utils.js
+++ b/LayoutTests/pointerevents/utils.js
@@ -67,6 +67,7 @@
             type: event.type,
             x: event.clientX,
             y: event.clientY,
+            pressure: event.pressure,
             isPrimary: event.isPrimary,
             isTrusted: event.isTrusted
         });
@@ -237,14 +238,14 @@
 
     stationary(options)
     {
-        return this._action("stationary", options.x || 0, options.y || 0);
+        return this._action("stationary", options.x || this._lastX, options.y || this._lastY, options.pressure || 0);
     }
 
-    _action(phase, x, y)
+    _action(phase, x, y, pressure = 0)
     {
         this._lastX = x;
         this._lastY = y;
-        return { inputType: "finger", id: this.id, phase, x, y };
+        return { inputType: "finger", id: this.id, phase, x, y, pressure };
     }
 
 }
