Changeset 272911 in webkit


Ignore:
Timestamp:
Feb 16, 2021 9:57:28 AM (17 months ago)
Author:
youenn@apple.com
Message:

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):

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r272904 r272911  
     12021-02-16  Youenn Fablet  <youenn@apple.com>
     2
     3        MediaRecorder.stop() does not work correctly when recording has been paused.
     4        https://bugs.webkit.org/show_bug.cgi?id=221916
     5        <rdar://problem/74366154>
     6
     7        Reviewed by Eric Carlson.
     8
     9        * web-platform-tests/mediacapture-record/MediaRecorder-pause-resume-expected.txt:
     10        * web-platform-tests/mediacapture-record/MediaRecorder-pause-resume.html:
     11
    1122021-02-16  Antoine Quint  <graouts@webkit.org>
    213
  • trunk/LayoutTests/imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-pause-resume-expected.txt

    r268130 r272911  
    11
    22PASS MediaRecorder handles pause() and resume() calls appropriately in state and events
     3PASS MediaRecorder handles stop() in paused state appropriately
    34
  • trunk/LayoutTests/imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-pause-resume.html

    r263928 r272911  
    6565            "Should have gotten expected events");
    6666    }, "MediaRecorder handles pause() and resume() calls appropriately in state and events");
     67
     68    promise_test(async () => {
     69        let video = createVideoStream();
     70        let recorder = new MediaRecorder(video);
     71        let events = recordEvents(recorder,
     72            ["start", "stop", "dataavailable", "pause", "resume", "error"]);
     73
     74        recorder.start();
     75        assert_equals(recorder.state, "recording", "MediaRecorder has been started successfully");
     76        await new Promise(r => recorder.onstart = r);
     77
     78        recorder.pause();
     79        assert_equals(recorder.state, "paused", "MediaRecorder should be paused immediately following pause()");
     80        let event = await new Promise(r => recorder.onpause = r);
     81        assert_equals(event.type, "pause", "the event type should be pause");
     82        assert_true(event.isTrusted, "isTrusted should be true when the event is created by C++");
     83
     84        recorder.stop();
     85        assert_equals(recorder.state, "inactive", "MediaRecorder should be inactive after being stopped");
     86        await new Promise(r => recorder.onstop = r);
     87
     88        recorder.start();
     89        assert_equals(recorder.state, "recording", "MediaRecorder has been started successfully");
     90        await new Promise(r => recorder.onstart = r);
     91
     92        assert_array_equals(events, ["start", "pause", "dataavailable", "stop", "start"],
     93            "Should have gotten expected events");
     94    }, "MediaRecorder handles stop() in paused state appropriately");
    6795</script>
    6896</body>
  • trunk/Source/WebCore/ChangeLog

    r272909 r272911  
     12021-02-16  Youenn Fablet  <youenn@apple.com>
     2
     3        MediaRecorder.stop() does not work correctly when recording has been paused.
     4        https://bugs.webkit.org/show_bug.cgi?id=221916
     5        <rdar://problem/74366154>
     6
     7        Reviewed by Eric Carlson.
     8
     9        Proceed with stop steps in case of paused state, and not only in case of recording state.
     10        Covered by added WPT test.
     11
     12        * Modules/mediarecorder/MediaRecorder.cpp:
     13        (WebCore::MediaRecorder::stopRecordingInternal):
     14
    1152021-02-16  Sam Weinig  <weinig@apple.com>
    216
  • trunk/Source/WebCore/Modules/mediarecorder/MediaRecorder.cpp

    r272200 r272911  
    314314void MediaRecorder::stopRecordingInternal(CompletionHandler<void()>&& completionHandler)
    315315{
    316     if (state() != RecordingState::Recording) {
     316    if (state() == RecordingState::Inactive) {
    317317        completionHandler();
    318318        return;
Note: See TracChangeset for help on using the changeset viewer.