Title: [273457] branches/safari-611-branch
Revision
273457
Author
alanc...@apple.com
Date
2021-02-24 16:39:49 -0800 (Wed, 24 Feb 2021)

Log Message

Cherry-pick r272911. rdar://problem/74501076

    MediaRecorder.stop() does not work correctly when recording has been paused.
    https://bugs.webkit.org/show_bug.cgi?id=221916
    <rdar://problem/74366154>

    Reviewed by Eric Carlson.

    LayoutTests/imported/w3c:

    * web-platform-tests/mediacapture-record/MediaRecorder-pause-resume-expected.txt:
    * web-platform-tests/mediacapture-record/MediaRecorder-pause-resume.html:

    Source/WebCore:

    Proceed with stop steps in case of paused state, and not only in case of recording state.
    Covered by added WPT test.

    * Modules/mediarecorder/MediaRecorder.cpp:
    (WebCore::MediaRecorder::stopRecordingInternal):

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@272911 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Diff

Modified: branches/safari-611-branch/LayoutTests/imported/w3c/ChangeLog (273456 => 273457)


--- branches/safari-611-branch/LayoutTests/imported/w3c/ChangeLog	2021-02-25 00:39:45 UTC (rev 273456)
+++ branches/safari-611-branch/LayoutTests/imported/w3c/ChangeLog	2021-02-25 00:39:49 UTC (rev 273457)
@@ -1,3 +1,39 @@
+2021-02-24  Russell Epstein  <repst...@apple.com>
+
+        Cherry-pick r272911. rdar://problem/74501076
+
+    MediaRecorder.stop() does not work correctly when recording has been paused.
+    https://bugs.webkit.org/show_bug.cgi?id=221916
+    <rdar://problem/74366154>
+    
+    Reviewed by Eric Carlson.
+    
+    LayoutTests/imported/w3c:
+    
+    * web-platform-tests/mediacapture-record/MediaRecorder-pause-resume-expected.txt:
+    * web-platform-tests/mediacapture-record/MediaRecorder-pause-resume.html:
+    
+    Source/WebCore:
+    
+    Proceed with stop steps in case of paused state, and not only in case of recording state.
+    Covered by added WPT test.
+    
+    * Modules/mediarecorder/MediaRecorder.cpp:
+    (WebCore::MediaRecorder::stopRecordingInternal):
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@272911 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-02-16  Youenn Fablet  <you...@apple.com>
+
+            MediaRecorder.stop() does not work correctly when recording has been paused.
+            https://bugs.webkit.org/show_bug.cgi?id=221916
+            <rdar://problem/74366154>
+
+            Reviewed by Eric Carlson.
+
+            * web-platform-tests/mediacapture-record/MediaRecorder-pause-resume-expected.txt:
+            * web-platform-tests/mediacapture-record/MediaRecorder-pause-resume.html:
+
 2021-02-17  Ruben Turcios  <rubent...@apple.com>
 
         Cherry-pick r272755. rdar://problem/74409916

Modified: branches/safari-611-branch/LayoutTests/imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-pause-resume-expected.txt (273456 => 273457)


--- branches/safari-611-branch/LayoutTests/imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-pause-resume-expected.txt	2021-02-25 00:39:45 UTC (rev 273456)
+++ branches/safari-611-branch/LayoutTests/imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-pause-resume-expected.txt	2021-02-25 00:39:49 UTC (rev 273457)
@@ -1,3 +1,4 @@
 
 PASS MediaRecorder handles pause() and resume() calls appropriately in state and events
+PASS MediaRecorder handles stop() in paused state appropriately
 

Modified: branches/safari-611-branch/LayoutTests/imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-pause-resume.html (273456 => 273457)


--- branches/safari-611-branch/LayoutTests/imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-pause-resume.html	2021-02-25 00:39:45 UTC (rev 273456)
+++ branches/safari-611-branch/LayoutTests/imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-pause-resume.html	2021-02-25 00:39:49 UTC (rev 273457)
@@ -64,6 +64,34 @@
         assert_array_equals(events, ["start", "pause", "resume", "dataavailable", "stop"],
             "Should have gotten expected events");
     }, "MediaRecorder handles pause() and resume() calls appropriately in state and events");
+
+    promise_test(async () => {
+        let video = createVideoStream();
+        let recorder = new MediaRecorder(video);
+        let events = recordEvents(recorder,
+            ["start", "stop", "dataavailable", "pause", "resume", "error"]);
+
+        recorder.start();
+        assert_equals(recorder.state, "recording", "MediaRecorder has been started successfully");
+        await new Promise(r => recorder._onstart_ = r);
+
+        recorder.pause();
+        assert_equals(recorder.state, "paused", "MediaRecorder should be paused immediately following pause()");
+        let event = await new Promise(r => recorder._onpause_ = r);
+        assert_equals(event.type, "pause", "the event type should be pause");
+        assert_true(event.isTrusted, "isTrusted should be true when the event is created by C++");
+
+        recorder.stop();
+        assert_equals(recorder.state, "inactive", "MediaRecorder should be inactive after being stopped");
+        await new Promise(r => recorder._onstop_ = r);
+
+        recorder.start();
+        assert_equals(recorder.state, "recording", "MediaRecorder has been started successfully");
+        await new Promise(r => recorder._onstart_ = r);
+
+        assert_array_equals(events, ["start", "pause", "dataavailable", "stop", "start"],
+            "Should have gotten expected events");
+    }, "MediaRecorder handles stop() in paused state appropriately");
 </script>
 </body>
 </html>

Modified: branches/safari-611-branch/Source/WebCore/ChangeLog (273456 => 273457)


--- branches/safari-611-branch/Source/WebCore/ChangeLog	2021-02-25 00:39:45 UTC (rev 273456)
+++ branches/safari-611-branch/Source/WebCore/ChangeLog	2021-02-25 00:39:49 UTC (rev 273457)
@@ -1,5 +1,44 @@
 2021-02-24  Russell Epstein  <repst...@apple.com>
 
+        Cherry-pick r272911. rdar://problem/74501076
+
+    MediaRecorder.stop() does not work correctly when recording has been paused.
+    https://bugs.webkit.org/show_bug.cgi?id=221916
+    <rdar://problem/74366154>
+    
+    Reviewed by Eric Carlson.
+    
+    LayoutTests/imported/w3c:
+    
+    * web-platform-tests/mediacapture-record/MediaRecorder-pause-resume-expected.txt:
+    * web-platform-tests/mediacapture-record/MediaRecorder-pause-resume.html:
+    
+    Source/WebCore:
+    
+    Proceed with stop steps in case of paused state, and not only in case of recording state.
+    Covered by added WPT test.
+    
+    * Modules/mediarecorder/MediaRecorder.cpp:
+    (WebCore::MediaRecorder::stopRecordingInternal):
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@272911 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-02-16  Youenn Fablet  <you...@apple.com>
+
+            MediaRecorder.stop() does not work correctly when recording has been paused.
+            https://bugs.webkit.org/show_bug.cgi?id=221916
+            <rdar://problem/74366154>
+
+            Reviewed by Eric Carlson.
+
+            Proceed with stop steps in case of paused state, and not only in case of recording state.
+            Covered by added WPT test.
+
+            * Modules/mediarecorder/MediaRecorder.cpp:
+            (WebCore::MediaRecorder::stopRecordingInternal):
+
+2021-02-24  Russell Epstein  <repst...@apple.com>
+
         Cherry-pick r272544. rdar://problem/74409562
 
     [Cocoa] Encrypted media segments should generate a parser error if no encrypted media handler is present.

Modified: branches/safari-611-branch/Source/WebCore/Modules/mediarecorder/MediaRecorder.cpp (273456 => 273457)


--- branches/safari-611-branch/Source/WebCore/Modules/mediarecorder/MediaRecorder.cpp	2021-02-25 00:39:45 UTC (rev 273456)
+++ branches/safari-611-branch/Source/WebCore/Modules/mediarecorder/MediaRecorder.cpp	2021-02-25 00:39:49 UTC (rev 273457)
@@ -313,7 +313,7 @@
 
 void MediaRecorder::stopRecordingInternal()
 {
-    if (state() != RecordingState::Recording)
+    if (state() == RecordingState::Inactive) {
         return;
 
     for (auto& track : m_tracks)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to