Diff
Modified: trunk/LayoutTests/ChangeLog (238901 => 238902)
--- trunk/LayoutTests/ChangeLog 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/LayoutTests/ChangeLog 2018-12-05 19:21:23 UTC (rev 238902)
@@ -1,3 +1,24 @@
+2018-12-05 Commit Queue <[email protected]>
+
+ Unreviewed, rolling out r238844, r238846, and r238874.
+ https://bugs.webkit.org/show_bug.cgi?id=192414
+
+ The layout tests added with this change are flaky. (Requested
+ by ryanhaddad on #webkit).
+
+ Reverted changesets:
+
+ "Implement non-timeslice mode encoding for MediaRecorder"
+ https://bugs.webkit.org/show_bug.cgi?id=192069
+ https://trac.webkit.org/changeset/238844
+
+ "Fix the build"
+ https://trac.webkit.org/changeset/238846
+
+ "Fix MediaRecorder flaky tests"
+ https://bugs.webkit.org/show_bug.cgi?id=192371
+ https://trac.webkit.org/changeset/238874
+
2018-12-05 Per Arne Vollan <[email protected]>
Layout Test http/tests/misc/resource-timing-resolution.html is a flaky failure
Deleted: trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-audio-only-dataavailable-expected.txt (238901 => 238902)
--- trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-audio-only-dataavailable-expected.txt 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-audio-only-dataavailable-expected.txt 2018-12-05 19:21:23 UTC (rev 238902)
@@ -1,3 +0,0 @@
-
-PASS MediaRecorder can successfully record the audio for a audio-only stream
-
Deleted: trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-audio-only-dataavailable.html (238901 => 238902)
--- trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-audio-only-dataavailable.html 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-audio-only-dataavailable.html 2018-12-05 19:21:23 UTC (rev 238902)
@@ -1,45 +0,0 @@
-<!doctype html>
-<html>
-<head>
- <title>MediaRecorder can successfully record the audio for a audio-only stream</title>
- <link rel="help" href=""
- <script src=""
- <script src=""
-</head>
-<body>
-<audio id="player">
-</audio>
-<script>
-
- const ac = new webkitAudioContext();
- const osc = ac.createOscillator();
- const dest = ac.createMediaStreamDestination();
- const audio = dest.stream;
- osc.connect(dest);
- const recorder = new MediaRecorder(audio);
- recorder._ondataavailable_ = (blobEvent) => {
- assert_true(blobEvent instanceof BlobEvent, 'the type of event should be BlobEvent');
- assert_equals(blobEvent.type, 'dataavailable', 'the event type should be dataavailable');
- assert_true(blobEvent.isTrusted, 'isTrusted should be true when the event is created by C++');
- assert_true(blobEvent.data instanceof Blob, 'the type of data should be Blob');
- assert_true(blobEvent.data.size > 0, 'the blob should contain some buffers');
- const player = document.getElementById("player");
- player.src = ""
- player._oncanplay_ = () => {
- assert_greater_than(player.duration, 0, 'the duration should be greater than 0');
- done();
- };
- player.load();
- };
-
- recorder.start();
- osc.start();
- assert_equals(recorder.state, 'recording', 'MediaRecorder has been started successfully');
- setTimeout(() => {
- recorder.stop();
- osc.stop();
- }, 500);
-
-</script>
-</body>
-</html>
Deleted: trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable-expected.txt (238901 => 238902)
--- trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable-expected.txt 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable-expected.txt 2018-12-05 19:21:23 UTC (rev 238902)
@@ -1,4 +0,0 @@
-
-
-PASS MediaRecorder can successfully record the video for a audio-video stream
-
Deleted: trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable.html (238901 => 238902)
--- trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable.html 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable.html 2018-12-05 19:21:23 UTC (rev 238902)
@@ -1,115 +0,0 @@
-<!doctype html>
-<html>
-<head>
- <title>MediaRecorder can successfully record the video for a audio-video stream</title>
- <link rel="help" href=""
- <script src=""
- <script src=""
- <script src=""
- <link rel="stylesheet" href=""
-</head>
-<body>
-<div>
- <video id="player" controls="true">
- </video>
-</div>
-<div>
- <canvas id="canvas" width="200" height="200">
- </canvas>
- <canvas id="frame" width="200" height="200" style="visibility:visible; display:block">
- </canvas>
-</div>
-<script>
- var context;
- var drawStartTime;
-
- function createVideoStream() {
- const canvas = document.getElementById("canvas");
- context = canvas.getContext('2d');
- return canvas.captureStream();
- }
-
- function doRedImageDraw() {
- if (context) {
- context.fillStyle = "#ff0000";
- context.fillRect(0, 0, 200, 200);
- if (Date.now() - drawStartTime < 2000) {
- window.requestAnimationFrame(doRedImageDraw);
- } else {
- drawStartTime = Date.now();
- doGreenImageDraw();
- }
- }
- }
-
- function doGreenImageDraw() {
- if (context) {
- context.fillStyle = "#00ff00";
- context.fillRect(0, 0, 200, 200);
- if (Date.now() - drawStartTime < 10000) {
- window.requestAnimationFrame(doGreenImageDraw);
- }
- }
- }
-
- const ac = new webkitAudioContext();
- const osc = ac.createOscillator();
- const dest = ac.createMediaStreamDestination();
- const audio = dest.stream;
- osc.connect(dest);
-
- const video = createVideoStream();
- assert_equals(video.getAudioTracks().length, 0, "video mediastream starts with no audio track");
- assert_equals(audio.getAudioTracks().length, 1, "audio mediastream starts with one audio track");
- video.addTrack(audio.getAudioTracks()[0]);
- assert_equals(video.getAudioTracks().length, 1, "video mediastream starts with one audio track");
- const recorder = new MediaRecorder(video);
- let mode = 0;
-
- recorder._ondataavailable_ = (blobEvent) => {
- assert_true(blobEvent instanceof BlobEvent, 'the type of event should be BlobEvent');
- assert_equals(blobEvent.type, 'dataavailable', 'the event type should be dataavailable');
- assert_true(blobEvent.isTrusted, 'isTrusted should be true when the event is created by C++');
- assert_true(blobEvent.data instanceof Blob, 'the type of data should be Blob');
- assert_true(blobEvent.data.size > 0, 'the blob should contain some buffers');
- player.src = ""
- const resFrame = document.getElementById("frame");
- const resContext = resFrame.getContext('2d');
- player._oncanplay_ = () => {
- assert_greater_than(player.duration, 0.1, 'the duration should be greater than 100ms');
- player.play();
- };
- player._onplay_ = () => {
- if (mode === 2)
- return;
- player.pause();
- player.currentTime = 1;
- };
- player._onseeked_ = () => {
- resContext.drawImage(player, 0, 0);
- if (!mode) {
- _assertPixelApprox(resFrame, 20, 20, 255, 0, 0, 255, "20, 20", "255, 0, 0, 255", 50);
- _assertPixelApprox(resFrame, 50, 50, 255, 0, 0, 255, "50, 50", "255, 0, 0, 255", 50);
- mode = 1;
- player.currentTime = 3;
- } else if (mode === 1) {
- _assertPixelApprox(resFrame, 21, 21, 0, 255, 0, 255, "21, 21", "0, 255, 0, 255", 50);
- _assertPixelApprox(resFrame, 51, 51, 0, 255, 0, 255, "51, 51", "0, 255, 0, 255", 50);
- mode =2;
- done();
- }
- };
- player.load();
- };
- recorder.start();
- assert_equals(recorder.state, 'recording', 'MediaRecorder has been started successfully');
- drawStartTime = Date.now();
- doRedImageDraw();
- osc.start();
- setTimeout(() => {
- recorder.stop();
- }, 4000);
-
-</script>
-</body>
-</html>
Deleted: trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-video-only-dataavailable-expected.txt (238901 => 238902)
--- trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-video-only-dataavailable-expected.txt 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-video-only-dataavailable-expected.txt 2018-12-05 19:21:23 UTC (rev 238902)
@@ -1,4 +0,0 @@
-
-
-PASS MediaRecorder can successfully record the video for a video-only stream
-
Deleted: trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-video-only-dataavailable.html (238901 => 238902)
--- trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-video-only-dataavailable.html 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-AV-video-only-dataavailable.html 2018-12-05 19:21:23 UTC (rev 238902)
@@ -1,103 +0,0 @@
-<!doctype html>
-<html>
-<head>
- <title>MediaRecorder can successfully record the video for a video-only stream</title>
- <link rel="help" href=""
- <script src=""
- <script src=""
- <script src=""
- <link rel="stylesheet" href=""
-</head>
-<body>
-<div>
- <video id="player" controls=true>
- </video>
-</div>
-<div>
- <canvas id="canvas" width="200" height="200">
- </canvas>
- <canvas id="frame" width="200" height="200" style="visibility:visible; display:block">
- </canvas>
-</div>
-<script>
- var context;
- var drawStartTime;
-
- function createVideoStream() {
- const canvas = document.getElementById("canvas");
- context = canvas.getContext('2d');
- return canvas.captureStream();
- }
-
- function doRedImageDraw() {
- if (context) {
- context.fillStyle = "#ff0000";
- context.fillRect(0, 0, 200, 200);
- if (Date.now() - drawStartTime < 2000) {
- window.requestAnimationFrame(doRedImageDraw);
- } else {
- drawStartTime = Date.now();
- doGreenImageDraw();
- }
- }
- }
-
- function doGreenImageDraw() {
- if (context) {
- context.fillStyle = "#00ff00";
- context.fillRect(0, 0, 200, 200);
- if (Date.now() - drawStartTime < 10000) {
- window.requestAnimationFrame(doGreenImageDraw);
- }
- }
- }
-
- const video = createVideoStream();
- const recorder = new MediaRecorder(video);
- let mode = 0;
- recorder._ondataavailable_ = (blobEvent) => {
- assert_true(blobEvent instanceof BlobEvent, 'the type of event should be BlobEvent');
- assert_equals(blobEvent.type, 'dataavailable', 'the event type should be dataavailable');
- assert_true(blobEvent.isTrusted, 'isTrusted should be true when the event is created by C++');
- assert_true(blobEvent.data instanceof Blob, 'the type of data should be Blob');
- assert_true(blobEvent.data.size > 0, 'the blob should contain some buffers');
- player.src = ""
- const resFrame = document.getElementById("frame");
- const resContext = resFrame.getContext('2d');
- player._oncanplay_ = () => {
- assert_greater_than(player.duration, 0.1, 'the duration should be greater than 100ms');
- player.play();
- };
- player._onplay_ = () => {
- if (mode === 2)
- return;
- player.pause();
- player.currentTime = 1;
- };
- player._onseeked_ = () => {
- resContext.drawImage(player, 0, 0);
- if (!mode) {
- _assertPixelApprox(resFrame, 20, 20, 255, 0, 0, 255, "20,2 0", "255, 0, 0, 255", 50);
- _assertPixelApprox(resFrame, 50, 50, 255, 0, 0, 255, "50, 50", "255, 0, 0, 255", 50);
- mode = 1;
- player.currentTime = 3;
- } else if (mode === 1){
- _assertPixelApprox(resFrame, 21, 21, 0, 255, 0, 255, "21, 21", "0, 255, 0, 255", 50);
- _assertPixelApprox(resFrame, 51, 51, 0, 255, 0, 255, "51, 51", "0, 255, 0, 255", 50);
- mode = 2;
- done();
- }
- };
- player.load();
- };
- recorder.start();
- assert_equals(recorder.state, 'recording', 'MediaRecorder has been started successfully');
- drawStartTime = Date.now();
- doRedImageDraw();
- setTimeout(() => {
- recorder.stop();
- }, 4000);
-
-</script>
-</body>
-</html>
Modified: trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-dataavailable.html (238901 => 238902)
--- trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-dataavailable.html 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-dataavailable.html 2018-12-05 19:21:23 UTC (rev 238902)
@@ -12,9 +12,6 @@
<script>
var context;
- if (window.internals)
- internals.setCustomPrivateRecorderCreator();
-
function createVideoStream() {
const canvas = document.getElementById("canvas");
context = canvas.getContext('2d');
@@ -47,7 +44,7 @@
drawSomethingOnCanvas();
setTimeout(() => {
recorder.stop();
- }, 1000)
+ }, 2000)
}, 'MediaRecorder will fire a dataavailable event with a blob data for a video-only stream when stop() is called');
async_test(t => {
@@ -68,7 +65,7 @@
setTimeout(() => {
recorder.stop();
osc.stop();
- }, 1000);
+ }, 2000);
}, 'MediaRecorder will fire a dataavailable event with a blob data for a audio-only stream when stop() is called');
async_test(t => {
@@ -96,7 +93,7 @@
setTimeout(() => {
recorder.stop();
osc.stop();
- }, 1000);
+ }, 2000);
}, 'MediaRecorder will fire a dataavailable event with a blob data for a video-audio stream when stop() is called');
</script>
Modified: trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-mock-dataavailable.html (238901 => 238902)
--- trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-mock-dataavailable.html 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/LayoutTests/http/wpt/mediarecorder/MediaRecorder-mock-dataavailable.html 2018-12-05 19:21:23 UTC (rev 238902)
@@ -12,9 +12,6 @@
<script>
var context;
- if (window.internals)
- internals.setCustomPrivateRecorderCreator();
-
function createVideoStream() {
const canvas = document.getElementById("canvas");
context = canvas.getContext('2d');
@@ -44,7 +41,7 @@
drawSomethingOnCanvas();
setTimeout(() => {
recorder.stop();
- }, 1000);
+ }, 2000);
}, 'MediaRecorder will fire a dataavailable event which only contains video buffers for a video-only stream when stop() is called');
async_test(t => {
@@ -70,7 +67,7 @@
setTimeout(() => {
recorder.stop();
osc.stop();
- }, 1000);
+ }, 2000);
}, 'MediaRecorder will fire a dataavailable event which only contains audio buffers for a audio-only stream when stop() is called');
async_test(t => {
@@ -103,7 +100,7 @@
setTimeout(() => {
recorder.stop();
osc.stop();
- }, 1000);
+ }, 2000);
}, 'MediaRecorder will fire a dataavailable event which only contains both video and audio buffers when stop() is called');
</script>
Modified: trunk/LayoutTests/platform/gtk/TestExpectations (238901 => 238902)
--- trunk/LayoutTests/platform/gtk/TestExpectations 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/LayoutTests/platform/gtk/TestExpectations 2018-12-05 19:21:23 UTC (rev 238902)
@@ -599,9 +599,6 @@
imported/w3c/web-platform-tests/webrtc/ [ Skip ]
http/tests/webrtc [ Skip ]
-
-http/wpt/mediarecorder [ Skip ]
-
# The MediaStream implementation is also still not completed
webkit.org/b/79203 fast/mediastream/mock-media-source-webaudio.html [ Timeout ]
webkit.org/b/79203 fast/mediastream/getUserMedia-webaudio.html [ Failure ]
Modified: trunk/LayoutTests/platform/wpe/TestExpectations (238901 => 238902)
--- trunk/LayoutTests/platform/wpe/TestExpectations 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/LayoutTests/platform/wpe/TestExpectations 2018-12-05 19:21:23 UTC (rev 238902)
@@ -494,8 +494,6 @@
http/tests/websocket [ Skip ]
http/tests/xmlhttprequest [ Skip ]
-http/wpt/mediarecorder [ Skip ]
-
# Service-workers tests that fail, time out or crash.
webkit.org/b/175419 http/tests/workers/service/controller-change.html [ Skip ]
webkit.org/b/175419 http/tests/workers/service/no-page-cache-when-controlled.html [ Skip ]
Modified: trunk/Source/WebCore/ChangeLog (238901 => 238902)
--- trunk/Source/WebCore/ChangeLog 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/Source/WebCore/ChangeLog 2018-12-05 19:21:23 UTC (rev 238902)
@@ -1,3 +1,24 @@
+2018-12-05 Commit Queue <[email protected]>
+
+ Unreviewed, rolling out r238844, r238846, and r238874.
+ https://bugs.webkit.org/show_bug.cgi?id=192414
+
+ The layout tests added with this change are flaky. (Requested
+ by ryanhaddad on #webkit).
+
+ Reverted changesets:
+
+ "Implement non-timeslice mode encoding for MediaRecorder"
+ https://bugs.webkit.org/show_bug.cgi?id=192069
+ https://trac.webkit.org/changeset/238844
+
+ "Fix the build"
+ https://trac.webkit.org/changeset/238846
+
+ "Fix MediaRecorder flaky tests"
+ https://bugs.webkit.org/show_bug.cgi?id=192371
+ https://trac.webkit.org/changeset/238874
+
2018-12-05 Frederic Wang <[email protected]>
Minor refactoring of the scrolling code
Modified: trunk/Source/WebCore/Modules/mediarecorder/MediaRecorder.cpp (238901 => 238902)
--- trunk/Source/WebCore/Modules/mediarecorder/MediaRecorder.cpp 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/Source/WebCore/Modules/mediarecorder/MediaRecorder.cpp 2018-12-05 19:21:23 UTC (rev 238902)
@@ -33,48 +33,22 @@
#include "Document.h"
#include "EventNames.h"
#include "MediaRecorderErrorEvent.h"
-#include "MediaRecorderPrivate.h"
-#include "SharedBuffer.h"
+#include "MediaRecorderPrivateMock.h"
-#if PLATFORM(COCOA)
-#include "MediaRecorderPrivateAVFImpl.h"
-#endif
-
namespace WebCore {
-creatorFunction MediaRecorder::m_customCreator = nullptr;
-
-ExceptionOr<Ref<MediaRecorder>> MediaRecorder::create(Document& document, Ref<MediaStream>&& stream, Options&& options)
+Ref<MediaRecorder> MediaRecorder::create(Document& document, Ref<MediaStream>&& stream, Options&& options)
{
- auto privateInstance = MediaRecorder::getPrivateImpl(stream->privateStream());
- if (!privateInstance)
- return Exception { NotSupportedError, "The MediaRecorder is unsupported on this platform"_s };
- auto recorder = adoptRef(*new MediaRecorder(document, WTFMove(stream), WTFMove(privateInstance), WTFMove(options)));
+ auto recorder = adoptRef(*new MediaRecorder(document, WTFMove(stream), WTFMove(options)));
recorder->suspendIfNeeded();
- return WTFMove(recorder);
+ return recorder;
}
-void MediaRecorder::setCustomPrivateRecorderCreator(creatorFunction creator)
-{
- m_customCreator = creator;
-}
-
-std::unique_ptr<MediaRecorderPrivate> MediaRecorder::getPrivateImpl(const MediaStreamPrivate& stream)
-{
- if (m_customCreator)
- return m_customCreator();
-
-#if PLATFORM(COCOA)
- return MediaRecorderPrivateAVFImpl::create(stream);
-#endif
- return nullptr;
-}
-
-MediaRecorder::MediaRecorder(Document& document, Ref<MediaStream>&& stream, std::unique_ptr<MediaRecorderPrivate>&& privateImpl, Options&& option)
+MediaRecorder::MediaRecorder(Document& document, Ref<MediaStream>&& stream, Options&& option)
: ActiveDOMObject(&document)
, m_options(WTFMove(option))
, m_stream(WTFMove(stream))
- , m_private(WTFMove(privateImpl))
+ , m_private(makeUniqueRef<MediaRecorderPrivateMock>()) // FIXME: we will need to decide which MediaRecorderPrivate instance to create based on the mock enabled feature flag
{
m_tracks = WTF::map(m_stream->getTracks(), [] (auto&& track) -> Ref<MediaStreamTrackPrivate> {
return track->privateTrack();
@@ -121,7 +95,7 @@
{
if (state() == RecordingState::Inactive)
return Exception { InvalidStateError, "The MediaRecorder's state cannot be inactive"_s };
-
+
scheduleDeferredTask([this] {
if (!m_isActive || state() == RecordingState::Inactive)
return;
@@ -128,7 +102,7 @@
stopRecordingInternal();
ASSERT(m_state == RecordingState::Inactive);
- dispatchEvent(BlobEvent::create(eventNames().dataavailableEvent, Event::CanBubble::No, Event::IsCancelable::No, createRecordingDataBlob()));
+ dispatchEvent(BlobEvent::create(eventNames().dataavailableEvent, Event::CanBubble::No, Event::IsCancelable::No, m_private->fetchData()));
if (!m_isActive)
return;
dispatchEvent(Event::create(eventNames().stopEvent, Event::CanBubble::No, Event::IsCancelable::No));
@@ -145,17 +119,8 @@
track->removeObserver(*this);
m_state = RecordingState::Inactive;
- m_private->stopRecording();
}
-Ref<Blob> MediaRecorder::createRecordingDataBlob()
-{
- auto data = ""
- if (!data)
- return Blob::create();
- return Blob::create(*data, m_private->mimeType());
-}
-
void MediaRecorder::didAddOrRemoveTrack()
{
scheduleDeferredTask([this] {
@@ -199,7 +164,6 @@
auto* scriptExecutionContext = this->scriptExecutionContext();
if (!scriptExecutionContext)
return;
-
scriptExecutionContext->postTask([protectedThis = makeRef(*this), function = WTFMove(function)] (auto&) {
function();
});
Modified: trunk/Source/WebCore/Modules/mediarecorder/MediaRecorder.h (238901 => 238902)
--- trunk/Source/WebCore/Modules/mediarecorder/MediaRecorder.h 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/Source/WebCore/Modules/mediarecorder/MediaRecorder.h 2018-12-05 19:21:23 UTC (rev 238902)
@@ -34,12 +34,9 @@
namespace WebCore {
-class Blob;
class Document;
class MediaRecorderPrivate;
-typedef std::unique_ptr<MediaRecorderPrivate>(*creatorFunction)();
-
class MediaRecorder final
: public ActiveDOMObject
, public RefCounted<MediaRecorder>
@@ -59,10 +56,8 @@
~MediaRecorder();
- static ExceptionOr<Ref<MediaRecorder>> create(Document&, Ref<MediaStream>&&, Options&& = { });
+ static Ref<MediaRecorder> create(Document&, Ref<MediaStream>&&, Options&& = { });
- WEBCORE_EXPORT static void setCustomPrivateRecorderCreator(creatorFunction);
-
RecordingState state() const { return m_state; }
using RefCounted::ref;
@@ -72,12 +67,8 @@
ExceptionOr<void> stopRecording();
private:
- MediaRecorder(Document&, Ref<MediaStream>&&, std::unique_ptr<MediaRecorderPrivate>&&, Options&& = { });
+ MediaRecorder(Document&, Ref<MediaStream>&&, Options&& = { });
- static std::unique_ptr<MediaRecorderPrivate> getPrivateImpl(const MediaStreamPrivate&);
-
- Ref<Blob> createRecordingDataBlob();
-
// EventTarget
void refEventTarget() final { ref(); }
void derefEventTarget() final { deref(); }
@@ -105,17 +96,15 @@
void scheduleDeferredTask(Function<void()>&&);
void setNewRecordingState(RecordingState, Ref<Event>&&);
- static creatorFunction m_customCreator;
-
Options m_options;
Ref<MediaStream> m_stream;
- std::unique_ptr<MediaRecorderPrivate> m_private;
+ UniqueRef<MediaRecorderPrivate> m_private;
RecordingState m_state { RecordingState::Inactive };
Vector<Ref<MediaStreamTrackPrivate>> m_tracks;
bool m_isActive { true };
};
-
+
} // namespace WebCore
#endif // ENABLE(MEDIA_STREAM)
Modified: trunk/Source/WebCore/Modules/mediarecorder/MediaRecorder.idl (238901 => 238902)
--- trunk/Source/WebCore/Modules/mediarecorder/MediaRecorder.idl 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/Source/WebCore/Modules/mediarecorder/MediaRecorder.idl 2018-12-05 19:21:23 UTC (rev 238902)
@@ -29,7 +29,6 @@
Conditional=MEDIA_STREAM,
Constructor(MediaStream stream, optional MediaRecorderOptions options),
ConstructorCallWith=Document,
- ConstructorMayThrowException,
EnabledAtRuntime=MediaRecorder,
Exposed=Window
] interface MediaRecorder : EventTarget {
Modified: trunk/Source/WebCore/SourcesCocoa.txt (238901 => 238902)
--- trunk/Source/WebCore/SourcesCocoa.txt 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/Source/WebCore/SourcesCocoa.txt 2018-12-05 19:21:23 UTC (rev 238902)
@@ -480,9 +480,6 @@
platform/mac/WebPlaybackControlsManager.mm
platform/mac/WidgetMac.mm
-platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp
-platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm
-
platform/mediasession/mac/MediaSessionInterruptionProviderMac.mm
platform/mediastream/ios/AVAudioSessionCaptureDevice.mm
Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (238901 => 238902)
--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2018-12-05 19:21:23 UTC (rev 238902)
@@ -1392,8 +1392,6 @@
4D3B00AB215D69A70076B983 /* MediaRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D3B00A9215D69A70076B983 /* MediaRecorder.h */; };
4D3B00AF215D6A690076B983 /* BlobEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D3B00AD215D6A690076B983 /* BlobEvent.h */; };
4D3B5016217E58B700665DB1 /* MediaRecorderPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D3B5014217E58B700665DB1 /* MediaRecorderPrivate.h */; };
- 4D73F946218BC5FA003A3ED6 /* MediaRecorderPrivateAVFImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D73F944218BC5FA003A3ED6 /* MediaRecorderPrivateAVFImpl.h */; };
- 4D73F94E218C4A87003A3ED6 /* MediaRecorderPrivateWriterCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D73F94C218C4A87003A3ED6 /* MediaRecorderPrivateWriterCocoa.h */; };
4DB7130D216ECB4D0096A4DD /* MediaRecorderErrorEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DB7130C216EC2BD0096A4DD /* MediaRecorderErrorEvent.h */; };
4E1959220A39DABA00220FE5 /* MediaFeatureNames.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E1959200A39DABA00220FE5 /* MediaFeatureNames.h */; settings = {ATTRIBUTES = (Private, ); }; };
4E19592A0A39DACC00220FE5 /* MediaQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E1959240A39DACC00220FE5 /* MediaQuery.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -7939,10 +7937,6 @@
4D3B00A9215D69A70076B983 /* MediaRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaRecorder.h; sourceTree = "<group>"; };
4D3B00AD215D6A690076B983 /* BlobEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlobEvent.h; sourceTree = "<group>"; };
4D3B5014217E58B700665DB1 /* MediaRecorderPrivate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MediaRecorderPrivate.h; sourceTree = "<group>"; };
- 4D73F944218BC5FA003A3ED6 /* MediaRecorderPrivateAVFImpl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MediaRecorderPrivateAVFImpl.h; sourceTree = "<group>"; };
- 4D73F945218BC5FA003A3ED6 /* MediaRecorderPrivateAVFImpl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MediaRecorderPrivateAVFImpl.cpp; sourceTree = "<group>"; };
- 4D73F94C218C4A87003A3ED6 /* MediaRecorderPrivateWriterCocoa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MediaRecorderPrivateWriterCocoa.h; sourceTree = "<group>"; };
- 4D73F94D218C4A87003A3ED6 /* MediaRecorderPrivateWriterCocoa.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; path = MediaRecorderPrivateWriterCocoa.mm; sourceTree = "<group>"; wrapsLines = 0; };
4D7EB3F4217C6AE600D64888 /* BlobEvent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = BlobEvent.cpp; sourceTree = "<group>"; };
4D9F6B642182532B0092A9C5 /* MediaRecorderPrivateMock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MediaRecorderPrivateMock.h; sourceTree = "<group>"; };
4D9F6B652182532B0092A9C5 /* MediaRecorderPrivateMock.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MediaRecorderPrivateMock.cpp; sourceTree = "<group>"; };
@@ -18165,10 +18159,7 @@
4D3B5012217E58A300665DB1 /* mediarecorder */ = {
isa = PBXGroup;
children = (
- 4D3C05D421AF480900F2890A /* cocoa */,
4D3B5014217E58B700665DB1 /* MediaRecorderPrivate.h */,
- 4D73F945218BC5FA003A3ED6 /* MediaRecorderPrivateAVFImpl.cpp */,
- 4D73F944218BC5FA003A3ED6 /* MediaRecorderPrivateAVFImpl.h */,
4D9F6B652182532B0092A9C5 /* MediaRecorderPrivateMock.cpp */,
4D9F6B642182532B0092A9C5 /* MediaRecorderPrivateMock.h */,
);
@@ -18175,15 +18166,6 @@
path = mediarecorder;
sourceTree = "<group>";
};
- 4D3C05D421AF480900F2890A /* cocoa */ = {
- isa = PBXGroup;
- children = (
- 4D73F94C218C4A87003A3ED6 /* MediaRecorderPrivateWriterCocoa.h */,
- 4D73F94D218C4A87003A3ED6 /* MediaRecorderPrivateWriterCocoa.mm */,
- );
- path = cocoa;
- sourceTree = "<group>";
- };
510310421BA8C64C003329C0 /* client */ = {
isa = PBXGroup;
children = (
@@ -30151,8 +30133,6 @@
4D3B00AB215D69A70076B983 /* MediaRecorder.h in Headers */,
4DB7130D216ECB4D0096A4DD /* MediaRecorderErrorEvent.h in Headers */,
4D3B5016217E58B700665DB1 /* MediaRecorderPrivate.h in Headers */,
- 4D73F946218BC5FA003A3ED6 /* MediaRecorderPrivateAVFImpl.h in Headers */,
- 4D73F94E218C4A87003A3ED6 /* MediaRecorderPrivateWriterCocoa.h in Headers */,
C90843D01B18E47D00B68564 /* MediaRemoteControls.h in Headers */,
CD8ACA8F1D23971900ECC59E /* MediaRemoteSoftLink.h in Headers */,
CEEFCD7A19DB31F7003876D7 /* MediaResourceLoader.h in Headers */,
Modified: trunk/Source/WebCore/platform/mediarecorder/MediaRecorderPrivate.h (238901 => 238902)
--- trunk/Source/WebCore/platform/mediarecorder/MediaRecorderPrivate.h 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/Source/WebCore/platform/mediarecorder/MediaRecorderPrivate.h 2018-12-05 19:21:23 UTC (rev 238902)
@@ -35,10 +35,10 @@
namespace WebCore {
class AudioStreamDescription;
+class Blob;
+class PlatformAudioData;
class MediaSample;
class MediaStreamTrackPrivate;
-class PlatformAudioData;
-class SharedBuffer;
class MediaRecorderPrivate {
public:
@@ -45,10 +45,8 @@
virtual void sampleBufferUpdated(MediaStreamTrackPrivate&, MediaSample&) = 0;
virtual void audioSamplesAvailable(MediaStreamTrackPrivate&, const WTF::MediaTime&, const PlatformAudioData&, const AudioStreamDescription&, size_t) = 0;
- virtual RefPtr<SharedBuffer> fetchData() = 0;
- virtual const String& mimeType() = 0;
+ virtual Ref<Blob> fetchData() = 0;
virtual ~MediaRecorderPrivate() = default;
- virtual void stopRecording() { }
};
} // namespace WebCore
Deleted: trunk/Source/WebCore/platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp (238901 => 238902)
--- trunk/Source/WebCore/platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/Source/WebCore/platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp 2018-12-05 19:21:23 UTC (rev 238902)
@@ -1,123 +0,0 @@
-/*
- * Copyright (C) 2018 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-#include "config.h"
-#include "MediaRecorderPrivateAVFImpl.h"
-
-#if ENABLE(MEDIA_STREAM)
-
-#include "AudioStreamDescription.h"
-#include "MediaSample.h"
-#include "MediaStreamPrivate.h"
-#include "SharedBuffer.h"
-#include "WebAudioBufferList.h"
-
-namespace WebCore {
-
-std::unique_ptr<MediaRecorderPrivateAVFImpl> MediaRecorderPrivateAVFImpl::create(const MediaStreamPrivate& stream)
-{
- auto instance = std::unique_ptr<MediaRecorderPrivateAVFImpl>(new MediaRecorderPrivateAVFImpl(stream));
- if (!instance->m_isWriterReady)
- return nullptr;
- return instance;
-}
-
-MediaRecorderPrivateAVFImpl::MediaRecorderPrivateAVFImpl(const MediaStreamPrivate& stream)
-{
- if (!m_writer.setupWriter())
- return;
- auto tracks = stream.tracks();
- bool videoSelected = false;
- bool audioSelected = false;
- for (auto& track : tracks) {
- if (!track->enabled() || track->ended())
- continue;
- switch (track->type()) {
- case RealtimeMediaSource::Type::Video: {
- auto& settings = track->settings();
- if (videoSelected || !settings.supportsWidth() || !settings.supportsHeight())
- break;
- // FIXME: we will need to implement support for multiple video tracks, currently we only choose the first track as the recorded track.
- // FIXME: we would better to throw an exception to _javascript_ if setVideoInput failed
- if (!m_writer.setVideoInput(settings.width(), settings.height()))
- return;
- m_recordedVideoTrackID = track->id();
- videoSelected = true;
- break;
- }
- case RealtimeMediaSource::Type::Audio: {
- if (audioSelected)
- break;
- // FIXME: we will need to implement support for multiple audio tracks, currently we only choose the first track as the recorded track.
- // FIXME: we would better to throw an exception to _javascript_ if setAudioInput failed
- if (!m_writer.setAudioInput())
- return;
- m_recordedAudioTrackID = track->id();
- audioSelected = true;
- break;
- }
- case RealtimeMediaSource::Type::None:
- break;
- }
- }
- m_isWriterReady = true;
-}
-
-void MediaRecorderPrivateAVFImpl::sampleBufferUpdated(MediaStreamTrackPrivate& track, MediaSample& sampleBuffer)
-{
- if (track.id() != m_recordedVideoTrackID)
- return;
- m_writer.appendVideoSampleBuffer(sampleBuffer.platformSample().sample.cmSampleBuffer);
-}
-
-void MediaRecorderPrivateAVFImpl::audioSamplesAvailable(MediaStreamTrackPrivate& track, const WTF::MediaTime& mediaTime, const PlatformAudioData& data, const AudioStreamDescription& description, size_t sampleCount)
-{
- if (track.id() != m_recordedAudioTrackID)
- return;
- ASSERT(is<WebAudioBufferList>(data));
- ASSERT(description.platformDescription().type == PlatformDescription::CAAudioStreamBasicType);
- m_writer.appendAudioSampleBuffer(data, description, mediaTime, sampleCount);
-}
-
-void MediaRecorderPrivateAVFImpl::stopRecording()
-{
- m_writer.stopRecording();
-}
-
-RefPtr<SharedBuffer> MediaRecorderPrivateAVFImpl::fetchData()
-{
- return m_writer.fetchData();
-}
-
-const String& MediaRecorderPrivateAVFImpl::mimeType()
-{
- static NeverDestroyed<const String> mp4MimeType(MAKE_STATIC_STRING_IMPL("video/mp4"));
- // FIXME: we will need to support more MIME types.
- return mp4MimeType;
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(MEDIA_STREAM)
Deleted: trunk/Source/WebCore/platform/mediarecorder/MediaRecorderPrivateAVFImpl.h (238901 => 238902)
--- trunk/Source/WebCore/platform/mediarecorder/MediaRecorderPrivateAVFImpl.h 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/Source/WebCore/platform/mediarecorder/MediaRecorderPrivateAVFImpl.h 2018-12-05 19:21:23 UTC (rev 238902)
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2018 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#if ENABLE(MEDIA_STREAM)
-
-#include "MediaRecorderPrivate.h"
-#include "MediaRecorderPrivateWriterCocoa.h"
-
-namespace WebCore {
-
-class MediaStreamPrivate;
-
-class MediaRecorderPrivateAVFImpl final : public MediaRecorderPrivate {
-public:
- static std::unique_ptr<MediaRecorderPrivateAVFImpl> create(const MediaStreamPrivate&);
-
-private:
- explicit MediaRecorderPrivateAVFImpl(const MediaStreamPrivate&);
-
- void sampleBufferUpdated(MediaStreamTrackPrivate&, MediaSample&) final;
- void audioSamplesAvailable(MediaStreamTrackPrivate&, const WTF::MediaTime&, const PlatformAudioData&, const AudioStreamDescription&, size_t) final;
- RefPtr<SharedBuffer> fetchData() final;
- const String& mimeType() final;
- void stopRecording();
-
- String m_recordedVideoTrackID;
- String m_recordedAudioTrackID;
-
- MediaRecorderPrivateWriter m_writer;
-
- bool m_isWriterReady { false };
-};
-
-} // namespace WebCore
-
-#endif // ENABLE(MEDIA_STREAM)
Modified: trunk/Source/WebCore/platform/mediarecorder/MediaRecorderPrivateMock.cpp (238901 => 238902)
--- trunk/Source/WebCore/platform/mediarecorder/MediaRecorderPrivateMock.cpp 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/Source/WebCore/platform/mediarecorder/MediaRecorderPrivateMock.cpp 2018-12-05 19:21:23 UTC (rev 238902)
@@ -28,8 +28,8 @@
#if ENABLE(MEDIA_STREAM)
+#include "Blob.h"
#include "MediaStreamTrackPrivate.h"
-#include "SharedBuffer.h"
namespace WebCore {
@@ -56,21 +56,15 @@
m_buffer.append("\r\n---------\r\n");
}
-RefPtr<SharedBuffer> MediaRecorderPrivateMock::fetchData()
+Ref<Blob> MediaRecorderPrivateMock::fetchData()
{
auto locker = holdLock(m_bufferLock);
Vector<uint8_t> value(m_buffer.length());
memcpy(value.data(), m_buffer.characters8(), m_buffer.length());
m_buffer.clear();
- return SharedBuffer::create(WTFMove(value));
+ return Blob::create(WTFMove(value), "text/plain");
}
-const String& MediaRecorderPrivateMock::mimeType()
-{
- static NeverDestroyed<const String> textPlainMimeType(MAKE_STATIC_STRING_IMPL("text/plain"));
- return textPlainMimeType;
-}
-
} // namespace WebCore
#endif // ENABLE(MEDIA_STREAM)
Modified: trunk/Source/WebCore/platform/mediarecorder/MediaRecorderPrivateMock.h (238901 => 238902)
--- trunk/Source/WebCore/platform/mediarecorder/MediaRecorderPrivateMock.h 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/Source/WebCore/platform/mediarecorder/MediaRecorderPrivateMock.h 2018-12-05 19:21:23 UTC (rev 238902)
@@ -32,14 +32,14 @@
namespace WebCore {
+class Blob;
class MediaStreamTrackPrivate;
-class WEBCORE_EXPORT MediaRecorderPrivateMock final : public MediaRecorderPrivate {
+class MediaRecorderPrivateMock final : public MediaRecorderPrivate {
private:
void sampleBufferUpdated(MediaStreamTrackPrivate&, MediaSample&) final;
void audioSamplesAvailable(MediaStreamTrackPrivate&, const WTF::MediaTime&, const PlatformAudioData&, const AudioStreamDescription&, size_t) final;
- RefPtr<SharedBuffer> fetchData() final;
- const String& mimeType() final;
+ Ref<Blob> fetchData() final;
void generateMockString(MediaStreamTrackPrivate&);
Modified: trunk/Source/WebCore/testing/Internals.cpp (238901 => 238902)
--- trunk/Source/WebCore/testing/Internals.cpp 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/Source/WebCore/testing/Internals.cpp 2018-12-05 19:21:23 UTC (rev 238902)
@@ -228,8 +228,6 @@
#endif
#if ENABLE(MEDIA_STREAM)
-#include "MediaRecorder.h"
-#include "MediaRecorderPrivateMock.h"
#include "MediaStream.h"
#include "MockRealtimeMediaSourceCenter.h"
#endif
@@ -519,10 +517,6 @@
page.setFullscreenControlsHidden(false);
MediaEngineConfigurationFactory::disableMock();
-
-#if ENABLE(MEDIA_STREAM)
- WebCore::MediaRecorder::setCustomPrivateRecorderCreator(nullptr);
-#endif
}
Internals::Internals(Document& document)
@@ -1479,16 +1473,6 @@
WebCore::DeprecatedGlobalSettings::setMockCaptureDevicesEnabled(enabled);
}
-static std::unique_ptr<MediaRecorderPrivate> createRecorderMockSource()
-{
- return std::unique_ptr<MediaRecorderPrivateMock>(new MediaRecorderPrivateMock);
-}
-
-void Internals::setCustomPrivateRecorderCreator()
-{
- WebCore::MediaRecorder::setCustomPrivateRecorderCreator(createRecorderMockSource);
-}
-
#endif
ExceptionOr<Ref<DOMRect>> Internals::absoluteCaretBounds()
Modified: trunk/Source/WebCore/testing/Internals.h (238901 => 238902)
--- trunk/Source/WebCore/testing/Internals.h 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/Source/WebCore/testing/Internals.h 2018-12-05 19:21:23 UTC (rev 238902)
@@ -507,7 +507,6 @@
#if ENABLE(MEDIA_STREAM)
void setMockMediaCaptureDevicesEnabled(bool);
- void setCustomPrivateRecorderCreator();
#endif
#if ENABLE(WEB_RTC)
Modified: trunk/Source/WebCore/testing/Internals.idl (238901 => 238902)
--- trunk/Source/WebCore/testing/Internals.idl 2018-12-05 19:19:00 UTC (rev 238901)
+++ trunk/Source/WebCore/testing/Internals.idl 2018-12-05 19:21:23 UTC (rev 238902)
@@ -575,7 +575,6 @@
[Conditional=WIRELESS_PLAYBACK_TARGET] void setMockMediaPlaybackTargetPickerEnabled(boolean enabled);
[Conditional=WIRELESS_PLAYBACK_TARGET, MayThrowException] void setMockMediaPlaybackTargetPickerState(DOMString deviceName, DOMString deviceState);
[Conditional=MEDIA_STREAM] void setMockMediaCaptureDevicesEnabled(boolean enabled);
- [Conditional=MEDIA_STREAM] void setCustomPrivateRecorderCreator();
[Conditional=WEB_RTC] void emulateRTCPeerConnectionPlatformEvent(RTCPeerConnection connection, DOMString action);
[Conditional=WEB_RTC] void useMockRTCPeerConnectionFactory(DOMString testCase);