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)