diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 5eedb46..1da793b 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,21 @@
+2019-10-11  Peng Liu  <peng.liu6@apple.com>
+
+        Layout Test media/W3C/audio/events/event_progress.html is flaky
+        https://bugs.webkit.org/show_bug.cgi?id=181966
+        <rdar://problem/51449034>
+
+        Reviewed by Alexey Proskuryakov.
+
+        Use the option {once: true} in addEventListener instead of a variable to avoid
+        executing the event handler more than once.
+
+        * media/W3C/audio/events/event_order_loadstart_progress.html:
+        * media/W3C/audio/events/event_progress.html:
+        * media/W3C/audio/events/event_progress_manual.html:
+        * media/W3C/video/events/event_order_loadstart_progress.html:
+        * media/W3C/video/events/event_progress.html:
+        * media/W3C/video/events/event_progress_manual.html:
+
 2019-10-11  Dean Jackson  <dino@apple.com>
 
         Layout Test fast/events/touch/ios/tap-with-passive-listener-inside-active-listener.html is a Flaky Failure
diff --git a/LayoutTests/media/W3C/audio/events/event_order_loadstart_progress.html b/LayoutTests/media/W3C/audio/events/event_order_loadstart_progress.html
index 608ea5b..a65963f 100644
--- a/LayoutTests/media/W3C/audio/events/event_order_loadstart_progress.html
+++ b/LayoutTests/media/W3C/audio/events/event_order_loadstart_progress.html
@@ -17,17 +17,13 @@
   found_loadstart = true;
 });
 
-var firstProgressEvent = true;
 a.addEventListener("progress", function() {
-  if (!firstProgressEvent) return;
-  firstProgressEvent = false;
-
   t.step(function() {
    assert_true(found_loadstart);
   });
   t.done();
   a.pause();
-});
+}, { once: true });
 a.src = getAudioURI();
   </script>
  </body>
diff --git a/LayoutTests/media/W3C/audio/events/event_progress.html b/LayoutTests/media/W3C/audio/events/event_progress.html
index e04cfc2..2f7c830 100644
--- a/LayoutTests/media/W3C/audio/events/event_progress.html
+++ b/LayoutTests/media/W3C/audio/events/event_progress.html
@@ -12,17 +12,13 @@
   <script>
 var t = async_test("setting src attribute on autoplay video should trigger progress event", {timeout:30000});
 var a = document.getElementById("a");
-var firstProgressEvent = true;
-
 a.addEventListener("progress", function() {
-  if (!firstProgressEvent) return;
-  firstProgressEvent = false;
   t.step(function() {
    assert_true(true);
   });
   t.done();
   a.pause();
-});
+}, { once: true });
 a.src = getAudioURI();
   </script>
  </body>
diff --git a/LayoutTests/media/W3C/audio/events/event_progress_manual.html b/LayoutTests/media/W3C/audio/events/event_progress_manual.html
index bac3757..8b7d3bf 100644
--- a/LayoutTests/media/W3C/audio/events/event_progress_manual.html
+++ b/LayoutTests/media/W3C/audio/events/event_progress_manual.html
@@ -12,17 +12,12 @@
   <script>
 var t = async_test("setting src attribute on non-autoplay video should trigger progress event", {timeout:30000});
 var a = document.getElementById("a");
-
-var firstProgressEvent = true;
 a.addEventListener("progress", function() {
-  if (!firstProgressEvent) return;
-  firstProgressEvent = false;
-
   t.step(function() {
    assert_true(true);
   });
   t.done();
-});
+}, { once: true});
 a.src = getAudioURI();
   </script>
  </body>
diff --git a/LayoutTests/media/W3C/video/events/event_order_loadstart_progress.html b/LayoutTests/media/W3C/video/events/event_order_loadstart_progress.html
index 5f44ba8..75b9c85 100644
--- a/LayoutTests/media/W3C/video/events/event_order_loadstart_progress.html
+++ b/LayoutTests/media/W3C/video/events/event_order_loadstart_progress.html
@@ -17,16 +17,13 @@
   found_loadstart = true;
 });
 
-var firstProgressEvent = true;
 v.addEventListener("progress", function() {
-  if (!firstProgressEvent) return;
-  firstProgressEvent = false;
   t.step(function() {
    assert_true(found_loadstart);
   });
   t.done();
   v.pause();
-});
+}, { once: true });
 v.src = getVideoURI();
   </script>
  </body>
diff --git a/LayoutTests/media/W3C/video/events/event_progress.html b/LayoutTests/media/W3C/video/events/event_progress.html
index 9d5312f..6a823f7 100644
--- a/LayoutTests/media/W3C/video/events/event_progress.html
+++ b/LayoutTests/media/W3C/video/events/event_progress.html
@@ -12,18 +12,13 @@
   <script>
 var t = async_test("setting src attribute on autoplay video should trigger progress event", {timeout:30000});
 var v = document.getElementById("v");
-
-var firstProgressEvent = true;
 v.addEventListener("progress", function() {
-  if (!firstProgressEvent) return;
-  firstProgressEvent = false;
-
   t.step(function() {
    assert_true(true);
   });
   t.done();
   v.pause();
-});
+}, { once: true });
 v.src = getVideoURI();
   </script>
  </body>
diff --git a/LayoutTests/media/W3C/video/events/event_progress_manual.html b/LayoutTests/media/W3C/video/events/event_progress_manual.html
index 157f5b3..2c03f1c 100644
--- a/LayoutTests/media/W3C/video/events/event_progress_manual.html
+++ b/LayoutTests/media/W3C/video/events/event_progress_manual.html
@@ -12,17 +12,12 @@
   <script>
 var t = async_test("setting src attribute on non-autoplay video should trigger progress event", {timeout:30000});
 var v = document.getElementById("v");
-
-var firstProgressEvent = true;
 v.addEventListener("progress", function() {
-  if (!firstProgressEvent) return;
-  firstProgressEvent = false;
-
   t.step(function() {
    assert_true(true);
   });
   t.done();
-});
+}, { once: true });
 v.src = getVideoURI();
   </script>
  </body>
