WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-224447-20210413111521.patch (text/plain), 27.99 KB, created by
youenn fablet
on 2021-04-13 02:15:23 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
youenn fablet
Created:
2021-04-13 02:15:23 PDT
Size:
27.99 KB
patch
obsolete
>Subversion Revision: 275871 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 05a674c747e3c7d673027c1a4e04ea63ec89e4c1..d6944ac595b5b20fc32b916a2d7eec0283c7276e 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,35 @@ >+2021-04-13 Youenn Fablet <youenn@apple.com> >+ >+ Update RTCScriptTransform constructor up to spec >+ https://bugs.webkit.org/show_bug.cgi?id=224447 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Remove built-in support for message ports in RTCRtpScriptTransform/RTCRtpScriptTransformer. >+ Instead pass a transfer object to RTCRtpScriptTransform constructor used jointly with options to enable the same behavior. >+ This aligns with the change made in https://github.com/w3c/webrtc-encoded-transform/pull/96. >+ >+ Covered by updated tests. >+ >+ * Modules/mediastream/RTCRtpScriptTransform.cpp: >+ (WebCore::RTCRtpScriptTransform::create): >+ (WebCore::RTCRtpScriptTransform::RTCRtpScriptTransform): >+ * Modules/mediastream/RTCRtpScriptTransform.h: >+ * Modules/mediastream/RTCRtpScriptTransform.idl: >+ * Modules/mediastream/RTCRtpScriptTransformer.cpp: >+ (WebCore::RTCRtpScriptTransformer::create): >+ (WebCore::RTCRtpScriptTransformer::RTCRtpScriptTransformer): >+ (WebCore::RTCRtpScriptTransformer::options): >+ * Modules/mediastream/RTCRtpScriptTransformer.h: >+ (WebCore::RTCRtpScriptTransformer::port): Deleted. >+ * Modules/mediastream/RTCRtpScriptTransformer.idl: >+ * workers/DedicatedWorkerGlobalScope.cpp: >+ (WebCore::DedicatedWorkerGlobalScope::createRTCRtpScriptTransformer): >+ * workers/DedicatedWorkerGlobalScope.h: >+ * workers/Worker.cpp: >+ (WebCore::Worker::createRTCRtpScriptTransformer): >+ * workers/Worker.h: >+ > 2021-04-13 Philippe Normand <pnormand@igalia.com> > > [GStreamer] CaptureDevice monitor used from UIProcess >diff --git a/Source/WebCore/Modules/mediastream/RTCRtpScriptTransform.cpp b/Source/WebCore/Modules/mediastream/RTCRtpScriptTransform.cpp >index 6e5e6816bead198dc35d4510b5e16b9ad7db486e..8ff988a42c2d07176471e3d66389165d4bf2492a 100644 >--- a/Source/WebCore/Modules/mediastream/RTCRtpScriptTransform.cpp >+++ b/Source/WebCore/Modules/mediastream/RTCRtpScriptTransform.cpp >@@ -42,7 +42,7 @@ namespace WebCore { > > WTF_MAKE_ISO_ALLOCATED_IMPL(RTCRtpScriptTransform); > >-ExceptionOr<Ref<RTCRtpScriptTransform>> RTCRtpScriptTransform::create(JSC::JSGlobalObject& state, Worker& worker, JSC::JSValue options) >+ExceptionOr<Ref<RTCRtpScriptTransform>> RTCRtpScriptTransform::create(JSC::JSGlobalObject& state, Worker& worker, JSC::JSValue options, Vector<JSC::Strong<JSC::JSObject>>&& transfer) > { > if (!worker.scriptExecutionContext()) > return Exception { InvalidStateError, "Worker frame is detached"_s }; >@@ -51,26 +51,26 @@ ExceptionOr<Ref<RTCRtpScriptTransform>> RTCRtpScriptTransform::create(JSC::JSGlo > if (!context) > return Exception { InvalidStateError, "Invalid context"_s }; > >- auto serializedOptions = SerializedScriptValue::create(state, options); >- if (!serializedOptions) >- return Exception { ExistingExceptionError }; >+ Vector<RefPtr<MessagePort>> transferredPorts; >+ auto serializedOptions = SerializedScriptValue::create(state, options, WTFMove(transfer), transferredPorts); >+ if (serializedOptions.hasException()) >+ return serializedOptions.releaseException(); > >- auto messageChannel = MessageChannel::create(*worker.scriptExecutionContext()); >- auto transformMessagePort = messageChannel->port1(); >- auto transformerMessagePort = messageChannel->port2(); >+ auto channels = MessagePort::disentanglePorts(WTFMove(transferredPorts)); >+ if (channels.hasException()) >+ return channels.releaseException(); > >- auto transform = adoptRef(*new RTCRtpScriptTransform(*context, makeRef(worker), makeRef(*transformMessagePort))); >+ auto transform = adoptRef(*new RTCRtpScriptTransform(*context, makeRef(worker))); > transform->suspendIfNeeded(); > >- worker.createRTCRtpScriptTransformer(transform, serializedOptions.releaseNonNull(), transformerMessagePort->disentangle()); >+ worker.createRTCRtpScriptTransformer(transform, { serializedOptions.releaseReturnValue(), channels.releaseReturnValue() }); > > return transform; > } > >-RTCRtpScriptTransform::RTCRtpScriptTransform(ScriptExecutionContext& context, Ref<Worker>&& worker, Ref<MessagePort>&& port) >+RTCRtpScriptTransform::RTCRtpScriptTransform(ScriptExecutionContext& context, Ref<Worker>&& worker) > : ActiveDOMObject(&context) > , m_worker(WTFMove(worker)) >- , m_port(WTFMove(port)) > { > } > >diff --git a/Source/WebCore/Modules/mediastream/RTCRtpScriptTransform.h b/Source/WebCore/Modules/mediastream/RTCRtpScriptTransform.h >index 3ed4a8409cbad81e36f7b3e92323fbcd55ab4ead..71664e2c7c6fe8c6960a4b853d7e1735a35cf225 100644 >--- a/Source/WebCore/Modules/mediastream/RTCRtpScriptTransform.h >+++ b/Source/WebCore/Modules/mediastream/RTCRtpScriptTransform.h >@@ -29,7 +29,6 @@ > > #include "ActiveDOMObject.h" > #include "EventTarget.h" >-#include "MessagePort.h" > #include "RTCRtpScriptTransformer.h" > #include <JavaScriptCore/JSCJSValue.h> > #include <wtf/Lock.h> >@@ -47,11 +46,9 @@ class RTCRtpScriptTransform final > , public EventTargetWithInlineData { > WTF_MAKE_ISO_ALLOCATED(RTCRtpScriptTransform); > public: >- static ExceptionOr<Ref<RTCRtpScriptTransform>> create(JSC::JSGlobalObject&, Worker&, JSC::JSValue); >+ static ExceptionOr<Ref<RTCRtpScriptTransform>> create(JSC::JSGlobalObject&, Worker&, JSC::JSValue, Vector<JSC::Strong<JSC::JSObject>>&&); > ~RTCRtpScriptTransform(); > >- MessagePort& port() { return m_port.get(); } >- > void setTransformer(RTCRtpScriptTransformer&); > > bool isAttached() const { return m_isAttached; } >@@ -64,14 +61,14 @@ public: > using ThreadSafeRefCounted::deref; > > private: >- RTCRtpScriptTransform(ScriptExecutionContext&, Ref<Worker>&&, Ref<MessagePort>&&); >+ RTCRtpScriptTransform(ScriptExecutionContext&, Ref<Worker>&&); > > void initializeTransformer(RTCRtpTransformBackend&); > bool setupTransformer(Ref<RTCRtpTransformBackend>&&); > void clear(RTCRtpScriptTransformer::ClearCallback); > > // ActiveDOMObject >- const char* activeDOMObjectName() const { return "RTCRtpScriptTransform"; } >+ const char* activeDOMObjectName() const final { return "RTCRtpScriptTransform"; } > > // EventTarget > EventTargetInterface eventTargetInterface() const final { return RTCRtpScriptTransformEventTargetInterfaceType; } >@@ -80,7 +77,6 @@ private: > void derefEventTarget() final { deref(); } > > Ref<Worker> m_worker; >- Ref<MessagePort> m_port; > > bool m_isAttached { false }; > RefPtr<RTCRtpTransformBackend> m_backend; >diff --git a/Source/WebCore/Modules/mediastream/RTCRtpScriptTransform.idl b/Source/WebCore/Modules/mediastream/RTCRtpScriptTransform.idl >index cf44722e7321dbe66483811a48e911b5cfcf6276..63f415cc00c453447a5486080ffe06b76708da01 100644 >--- a/Source/WebCore/Modules/mediastream/RTCRtpScriptTransform.idl >+++ b/Source/WebCore/Modules/mediastream/RTCRtpScriptTransform.idl >@@ -30,7 +30,5 @@ > Exposed=Window, > JSGenerateToNativeObject, > ] interface RTCRtpScriptTransform : EventTarget { >- [CallWith=GlobalObject] constructor(Worker worker, any options); >- >- readonly attribute MessagePort port; >+ [CallWith=GlobalObject] constructor(Worker worker, any options, optional sequence<object> transfer); > }; >diff --git a/Source/WebCore/Modules/mediastream/RTCRtpScriptTransformer.cpp b/Source/WebCore/Modules/mediastream/RTCRtpScriptTransformer.cpp >index 9ed00a0611b9c862352f105109396d3fd41e281f..94eb96579c2fddc265684a5bc2df62575da4cade 100644 >--- a/Source/WebCore/Modules/mediastream/RTCRtpScriptTransformer.cpp >+++ b/Source/WebCore/Modules/mediastream/RTCRtpScriptTransformer.cpp >@@ -31,6 +31,7 @@ > #include "DedicatedWorkerGlobalScope.h" > #include "JSRTCEncodedAudioFrame.h" > #include "JSRTCEncodedVideoFrame.h" >+#include "MessageWithMessagePorts.h" > #include "RTCRtpTransformableFrame.h" > #include "ReadableStream.h" > #include "ReadableStreamSource.h" >@@ -40,7 +41,7 @@ > > namespace WebCore { > >-ExceptionOr<Ref<RTCRtpScriptTransformer>> RTCRtpScriptTransformer::create(ScriptExecutionContext& context, Ref<SerializedScriptValue>&& options, Ref<MessagePort>&& port) >+ExceptionOr<Ref<RTCRtpScriptTransformer>> RTCRtpScriptTransformer::create(ScriptExecutionContext& context, MessageWithMessagePorts&& options) > { > if (!context.globalObject()) > return Exception { InvalidStateError }; >@@ -51,16 +52,19 @@ ExceptionOr<Ref<RTCRtpScriptTransformer>> RTCRtpScriptTransformer::create(Script > auto readable = ReadableStream::create(globalObject, readableSource.copyRef()); > if (readable.hasException()) > return readable.releaseException(); >+ if (!options.message) >+ return Exception { InvalidStateError }; > >- auto transformer = adoptRef(*new RTCRtpScriptTransformer(context, WTFMove(options), WTFMove(port), readable.releaseReturnValue(), WTFMove(readableSource))); >+ auto ports = MessagePort::entanglePorts(context, WTFMove(options.transferredPorts)); >+ auto transformer = adoptRef(*new RTCRtpScriptTransformer(context, options.message.releaseNonNull(), WTFMove(ports), readable.releaseReturnValue(), WTFMove(readableSource))); > transformer->suspendIfNeeded(); > return transformer; > } > >-RTCRtpScriptTransformer::RTCRtpScriptTransformer(ScriptExecutionContext& context, Ref<SerializedScriptValue>&& options, Ref<MessagePort>&& port, Ref<ReadableStream>&& readable, Ref<SimpleReadableStreamSource>&& readableSource) >+RTCRtpScriptTransformer::RTCRtpScriptTransformer(ScriptExecutionContext& context, Ref<SerializedScriptValue>&& options, Vector<RefPtr<MessagePort>>&& ports, Ref<ReadableStream>&& readable, Ref<SimpleReadableStreamSource>&& readableSource) > : ActiveDOMObject(&context) > , m_options(WTFMove(options)) >- , m_port(WTFMove(port)) >+ , m_ports(WTFMove(ports)) > , m_readableSource(WTFMove(readableSource)) > , m_readable(WTFMove(readable)) > { >@@ -152,7 +156,7 @@ ExceptionOr<void> RTCRtpScriptTransformer::requestKeyFrame() > > JSC::JSValue RTCRtpScriptTransformer::options(JSC::JSGlobalObject& globalObject) > { >- return m_options->deserialize(globalObject, &globalObject); >+ return m_options->deserialize(globalObject, &globalObject, m_ports); > } > > } // namespace WebCore >diff --git a/Source/WebCore/Modules/mediastream/RTCRtpScriptTransformer.h b/Source/WebCore/Modules/mediastream/RTCRtpScriptTransformer.h >index 69af3446d475169f74dee37879ae855016129005..6d39e2102fa5c29274861aa5476a96e2a8ef7975 100644 >--- a/Source/WebCore/Modules/mediastream/RTCRtpScriptTransformer.h >+++ b/Source/WebCore/Modules/mediastream/RTCRtpScriptTransformer.h >@@ -44,12 +44,14 @@ class SerializedScriptValue; > class SimpleReadableStreamSource; > class WritableStream; > >+struct MessageWithMessagePorts; >+ > class RTCRtpScriptTransformer > : public RefCounted<RTCRtpScriptTransformer> > , public ActiveDOMObject > , public CanMakeWeakPtr<RTCRtpScriptTransformer> { > public: >- static ExceptionOr<Ref<RTCRtpScriptTransformer>> create(ScriptExecutionContext&, Ref<SerializedScriptValue>&&, Ref<MessagePort>&&); >+ static ExceptionOr<Ref<RTCRtpScriptTransformer>> create(ScriptExecutionContext&, MessageWithMessagePorts&&); > ~RTCRtpScriptTransformer(); > > ReadableStream& readable(); >@@ -57,7 +59,6 @@ public: > JSC::JSValue options(JSC::JSGlobalObject&); > > ExceptionOr<void> requestKeyFrame(); >- MessagePort& port() { return m_port.get(); } > > void startPendingActivity() { m_pendingActivity = makePendingActivity(*this); } > void start(Ref<RTCRtpTransformBackend>&&); >@@ -66,15 +67,16 @@ public: > void clear(ClearCallback); > > private: >- RTCRtpScriptTransformer(ScriptExecutionContext&, Ref<SerializedScriptValue>&&, Ref<MessagePort>&&, Ref<ReadableStream>&&, Ref<SimpleReadableStreamSource>&&); >+ RTCRtpScriptTransformer(ScriptExecutionContext&, Ref<SerializedScriptValue>&&, Vector<RefPtr<MessagePort>>&&, Ref<ReadableStream>&&, Ref<SimpleReadableStreamSource>&&); > > // ActiveDOMObject >- const char* activeDOMObjectName() const { return "RTCRtpScriptTransformer"; } >+ const char* activeDOMObjectName() const final { return "RTCRtpScriptTransformer"; } > void stop() final { stopPendingActivity(); } >+ > void stopPendingActivity() { auto pendingActivity = WTFMove(m_pendingActivity); } > > Ref<SerializedScriptValue> m_options; >- Ref<MessagePort> m_port; >+ Vector<RefPtr<MessagePort>> m_ports; > > Ref<SimpleReadableStreamSource> m_readableSource; > Ref<ReadableStream> m_readable; >diff --git a/Source/WebCore/Modules/mediastream/RTCRtpScriptTransformer.idl b/Source/WebCore/Modules/mediastream/RTCRtpScriptTransformer.idl >index 122756d44ae8b1244e418e2c26d2eb7f8e4ae572..b7f02331b61cec854fb78747cba7aa8c4602349e 100644 >--- a/Source/WebCore/Modules/mediastream/RTCRtpScriptTransformer.idl >+++ b/Source/WebCore/Modules/mediastream/RTCRtpScriptTransformer.idl >@@ -34,6 +34,5 @@ > readonly attribute WritableStream writable; > [CallWith=GlobalObject, CachedAttribute] readonly attribute any options; > >- readonly attribute MessagePort port; > undefined requestKeyFrame(); > }; >diff --git a/Source/WebCore/workers/DedicatedWorkerGlobalScope.cpp b/Source/WebCore/workers/DedicatedWorkerGlobalScope.cpp >index d4cec4f4f83b63b8d8bf5af195612f13d6a1c388..a5158cdfe4e26f46c093179a7abf8f11de7b2a31 100644 >--- a/Source/WebCore/workers/DedicatedWorkerGlobalScope.cpp >+++ b/Source/WebCore/workers/DedicatedWorkerGlobalScope.cpp >@@ -122,9 +122,9 @@ void DedicatedWorkerGlobalScope::cancelAnimationFrame(CallbackId callbackId) > #endif > > #if ENABLE(WEB_RTC) >-RefPtr<RTCRtpScriptTransformer> DedicatedWorkerGlobalScope::createRTCRtpScriptTransformer(Ref<SerializedScriptValue>&& options, TransferredMessagePort&& port) >+RefPtr<RTCRtpScriptTransformer> DedicatedWorkerGlobalScope::createRTCRtpScriptTransformer(MessageWithMessagePorts&& options) > { >- auto transformerOrException = RTCRtpScriptTransformer::create(*this, WTFMove(options), MessagePort::entangle(*this, WTFMove(port))); >+ auto transformerOrException = RTCRtpScriptTransformer::create(*this, WTFMove(options)); > if (transformerOrException.hasException()) > return nullptr; > auto transformer = transformerOrException.releaseReturnValue(); >diff --git a/Source/WebCore/workers/DedicatedWorkerGlobalScope.h b/Source/WebCore/workers/DedicatedWorkerGlobalScope.h >index e3ccd0004a5391d5dd6fbec390465afbbc9e1b5c..049c14496f6989ece0349dafa05a2ffd94bf952c 100644 >--- a/Source/WebCore/workers/DedicatedWorkerGlobalScope.h >+++ b/Source/WebCore/workers/DedicatedWorkerGlobalScope.h >@@ -76,7 +76,7 @@ public: > #endif > > #if ENABLE(WEB_RTC) >- RefPtr<RTCRtpScriptTransformer> createRTCRtpScriptTransformer(Ref<SerializedScriptValue>&&, TransferredMessagePort&&); >+ RefPtr<RTCRtpScriptTransformer> createRTCRtpScriptTransformer(MessageWithMessagePorts&&); > #endif > > FetchOptions::Destination destination() const final { return FetchOptions::Destination::Worker; } >diff --git a/Source/WebCore/workers/Worker.cpp b/Source/WebCore/workers/Worker.cpp >index f97e9518c846d1fa77fc88b45c5cdc2be6c24b78..6a4f9227c40f9854693a6622cba76a4965a167c5 100644 >--- a/Source/WebCore/workers/Worker.cpp >+++ b/Source/WebCore/workers/Worker.cpp >@@ -249,13 +249,13 @@ void Worker::dispatchEvent(Event& event) > } > > #if ENABLE(WEB_RTC) >-void Worker::createRTCRtpScriptTransformer(RTCRtpScriptTransform& transform, Ref<SerializedScriptValue>&& options, TransferredMessagePort&& port) >+void Worker::createRTCRtpScriptTransformer(RTCRtpScriptTransform& transform, MessageWithMessagePorts&& options) > { > if (!scriptExecutionContext()) > return; > >- m_contextProxy.postTaskToWorkerGlobalScope([transform = makeRef(transform), options = WTFMove(options), port = WTFMove(port)](auto& context) mutable { >- if (auto transformer = downcast<DedicatedWorkerGlobalScope>(context).createRTCRtpScriptTransformer(WTFMove(options), WTFMove(port))) >+ m_contextProxy.postTaskToWorkerGlobalScope([transform = makeRef(transform), options = WTFMove(options)](auto& context) mutable { >+ if (auto transformer = downcast<DedicatedWorkerGlobalScope>(context).createRTCRtpScriptTransformer(WTFMove(options))) > transform->setTransformer(*transformer); > callOnMainThread([transform = WTFMove(transform)] { }); > }); >diff --git a/Source/WebCore/workers/Worker.h b/Source/WebCore/workers/Worker.h >index acb96eab6c19a2bedde794591c2c0457456bdaeb..539568f5913b4b5c286e73604e65321249975bc9 100644 >--- a/Source/WebCore/workers/Worker.h >+++ b/Source/WebCore/workers/Worker.h >@@ -77,7 +77,7 @@ public: > void dispatchEvent(Event&) final; > > #if ENABLE(WEB_RTC) >- void createRTCRtpScriptTransformer(RTCRtpScriptTransform&, Ref<SerializedScriptValue>&&, TransferredMessagePort&&); >+ void createRTCRtpScriptTransformer(RTCRtpScriptTransform&, MessageWithMessagePorts&&); > void postTaskToWorkerGlobalScope(Function<void(ScriptExecutionContext&)>&&); > #endif > >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 7c2c1433cade9b670981d6bbe71ed1892f75b3de..6bc4efd5f3e89d34ef9e1103a147778271fafe03 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,21 @@ >+2021-04-13 Youenn Fablet <youenn@apple.com> >+ >+ Update RTCScriptTransform constructor up to spec >+ https://bugs.webkit.org/show_bug.cgi?id=224447 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * http/wpt/webrtc/audio-script-transform.html: >+ * http/wpt/webrtc/context-transform.js: >+ (MockRTCRtpTransformer): >+ (MockRTCRtpTransformer.prototype.start): >+ (MockRTCRtpTransformer.prototype.process): >+ * http/wpt/webrtc/metadata-transform-worker.js: >+ * http/wpt/webrtc/script-transform.js: >+ * http/wpt/webrtc/video-script-transform.html: >+ * http/wpt/webrtc/webrtc-transform.html: >+ * http/wpt/webrtc/write-twice-transform.js: >+ > 2021-04-13 Antoine Quint <graouts@webkit.org> > > calc() simplification for a multiplication should apply the multiplication to each value of an addition >diff --git a/LayoutTests/http/wpt/webrtc/audio-script-transform.html b/LayoutTests/http/wpt/webrtc/audio-script-transform.html >index 5706d2ff743fd46e8168bdd21398602e050fdd7e..5846641da197753e441cf63d0fc38d6115f65f33 100644 >--- a/LayoutTests/http/wpt/webrtc/audio-script-transform.html >+++ b/LayoutTests/http/wpt/webrtc/audio-script-transform.html >@@ -32,9 +32,13 @@ promise_test(async (test) => { > > const localStream = await navigator.mediaDevices.getUserMedia({audio: true}); > >+ const senderChannel = new MessageChannel; >+ const receiverChannel = new MessageChannel; > let sender, receiver; >- senderTransform = new RTCRtpScriptTransform(worker, {name:'MockRTCRtpTransform', mediaType:'audio', side:'sender'}); >- receiverTransform = new RTCRtpScriptTransform(worker, {name:'MockRTCRtpTransform', mediaType:'audio', side:'receiver'}); >+ senderTransform = new RTCRtpScriptTransform(worker, {name:'MockRTCRtpTransform', mediaType:'audio', side:'sender', port:senderChannel.port2}, [senderChannel.port2]); >+ receiverTransform = new RTCRtpScriptTransform(worker, {name:'MockRTCRtpTransform', mediaType:'audio', side:'receiver', port:receiverChannel.port2}, [receiverChannel.port2]); >+ senderTransform.port = senderChannel.port1; >+ receiverTransform.port = receiverChannel.port1; > > promise1 = waitForMessage(senderTransform.port, "started audio sender"); > promise2 = waitForMessage(receiverTransform.port, "started audio receiver"); >diff --git a/LayoutTests/http/wpt/webrtc/context-transform.js b/LayoutTests/http/wpt/webrtc/context-transform.js >index dff1a2571d150590ae9bdaef75b23ff714348b3f..ba4ad72736347c934c1f5ea247624bafaea3f978 100644 >--- a/LayoutTests/http/wpt/webrtc/context-transform.js >+++ b/LayoutTests/http/wpt/webrtc/context-transform.js >@@ -2,7 +2,7 @@ class MockRTCRtpTransformer { > constructor(transformer) { > this.askKeyFrame = false; > this.context = transformer; >- this.context.port.onmessage = (event) => { >+ this.context.options.port.onmessage = (event) => { > if (event.data === "startKeyFrames") > this.askKeyFrame = true; > else if (event.data === "endKeyFrames") >@@ -15,7 +15,7 @@ class MockRTCRtpTransformer { > this.reader = this.context.readable.getReader(); > this.writer = this.context.writable.getWriter(); > this.process(); >- this.context.port.postMessage("started " + this.context.options.mediaType + " " + this.context.options.side); >+ this.context.options.port.postMessage("started " + this.context.options.mediaType + " " + this.context.options.side); > } > > process() >@@ -28,7 +28,7 @@ class MockRTCRtpTransformer { > > if (this.context.options.mediaType === "video") { > if (chunk.value instanceof RTCEncodedVideoFrame) >- this.context.port.postMessage("video frame " + chunk.value.type); >+ this.context.options.port.postMessage("video frame " + chunk.value.type); > > if (this.askKeyFrame) > this.context.requestKeyFrame(); >diff --git a/LayoutTests/http/wpt/webrtc/metadata-transform-worker.js b/LayoutTests/http/wpt/webrtc/metadata-transform-worker.js >index c4b3d44c735f7b2bece5a1e59d4b30225d46fa4e..03ba1f4ee6e0976a68d607de9824d2fd23daacd0 100644 >--- a/LayoutTests/http/wpt/webrtc/metadata-transform-worker.js >+++ b/LayoutTests/http/wpt/webrtc/metadata-transform-worker.js >@@ -1,6 +1,5 @@ > onrtctransform = (event) => { > const transformer = event.transformer; >- transformer.port.onmessage = (event) => transformer.port.postMessage(event.data); > > transformer.reader = transformer.readable.getReader(); > transformer.writer = transformer.writable.getWriter(); >diff --git a/LayoutTests/http/wpt/webrtc/script-transform.js b/LayoutTests/http/wpt/webrtc/script-transform.js >index 901e676818c1a8292ee0de7acec03ad3cd93de69..5ea99cd2bf732cf0582a2aef1199a149738269ec 100644 >--- a/LayoutTests/http/wpt/webrtc/script-transform.js >+++ b/LayoutTests/http/wpt/webrtc/script-transform.js >@@ -1,6 +1,6 @@ > onrtctransform = (event) => { > const transformer = event.transformer; >- transformer.port.onmessage = (event) => transformer.port.postMessage(event.data); >+ transformer.options.port.onmessage = (event) => transformer.options.port.postMessage(event.data); > > self.postMessage("started"); > transformer.reader = transformer.readable.getReader(); >diff --git a/LayoutTests/http/wpt/webrtc/video-script-transform.html b/LayoutTests/http/wpt/webrtc/video-script-transform.html >index 4f52aab7b92025ef886e3d2ce47e21b5118049bc..61eb58a1c84ae21c7068d25e84927488d65dd8d0 100644 >--- a/LayoutTests/http/wpt/webrtc/video-script-transform.html >+++ b/LayoutTests/http/wpt/webrtc/video-script-transform.html >@@ -32,9 +32,13 @@ promise_test(async (test) => { > > const localStream = await navigator.mediaDevices.getUserMedia({video: true}); > >+ const senderChannel = new MessageChannel; >+ const receiverChannel = new MessageChannel; > let sender, receiver; >- senderTransform = new RTCRtpScriptTransform(worker, {name:'MockRTCRtpTransform', mediaType:'video', side:'sender'}); >- receiverTransform = new RTCRtpScriptTransform(worker, {name:'MockRTCRtpTransform', mediaType:'video', side:'receiver'}); >+ senderTransform = new RTCRtpScriptTransform(worker, {name:'MockRTCRtpTransform', mediaType:'video', side:'sender', port:senderChannel.port2}, [senderChannel.port2]); >+ receiverTransform = new RTCRtpScriptTransform(worker, {name:'MockRTCRtpTransform', mediaType:'video', side:'receiver', port:receiverChannel.port2}, [receiverChannel.port2]); >+ senderTransform.port = senderChannel.port1; >+ receiverTransform.port = receiverChannel.port1; > > promise1 = waitForMessage(senderTransform.port, "started video sender"); > promise2 = waitForMessage(receiverTransform.port, "started video receiver"); >diff --git a/LayoutTests/http/wpt/webrtc/webrtc-transform.html b/LayoutTests/http/wpt/webrtc/webrtc-transform.html >index 7e393d9e54aed839705ec11eb3382778090e1f32..612d294ca5fdf531fd12912ed928b5ada31f2cfc 100644 >--- a/LayoutTests/http/wpt/webrtc/webrtc-transform.html >+++ b/LayoutTests/http/wpt/webrtc/webrtc-transform.html >@@ -24,7 +24,9 @@ promise_test(async (test) => { > const data = await new Promise(resolve => worker.onmessage = (event) => resolve(event.data)); > assert_equals(data, "registered"); > >- const transform = new RTCRtpScriptTransform(worker, 'MockRTCRtpTransform'); >+ const channel = new MessageChannel; >+ const transform = new RTCRtpScriptTransform(worker, {name:'MockRTCRtpTransform', port: channel.port2}, [channel.port2]); >+ transform.port = channel.port1; > const promise = new Promise(resolve => transform.port.onmessage = (event) => resolve(event.data)); > transform.port.postMessage("test"); > assert_equals(await promise, "test"); >@@ -36,8 +38,14 @@ promise_test(async (test) => { > assert_equals(data, "registered"); > > const pc = new RTCPeerConnection(); >- const senderTransform = new RTCRtpScriptTransform(worker, 'MockRTCRtpTransform'); >- const receiverTransform = new RTCRtpScriptTransform(worker, 'MockRTCRtpTransform'); >+ >+ const senderChannel = new MessageChannel; >+ const receiverChannel = new MessageChannel; >+ const senderTransform = new RTCRtpScriptTransform(worker, {name:'MockRTCRtpTransform', port: senderChannel.port2}, [senderChannel.port2]); >+ const receiverTransform = new RTCRtpScriptTransform(worker, {name:'MockRTCRtpTransform', port: receiverChannel.port2}, [receiverChannel.port2]); >+ senderTransform.port = senderChannel.port1; >+ receiverTransform.port = receiverChannel.port1; >+ > const sender1 = pc.addTransceiver('audio').sender; > const sender2 = pc.addTransceiver('video').sender; > const receiver1 = pc.getReceivers()[0]; >@@ -61,9 +69,13 @@ promise_test(async (test) => { > assert_equals(data, "registered"); > const localStream = await navigator.mediaDevices.getUserMedia({audio: true}); > >+ const senderChannel = new MessageChannel; >+ const receiverChannel = new MessageChannel; > let sender, receiver; >- const senderTransform = new RTCRtpScriptTransform(worker, 'MockRTCRtpTransform'); >- const receiverTransform = new RTCRtpScriptTransform(worker, 'MockRTCRtpTransform'); >+ const senderTransform = new RTCRtpScriptTransform(worker, {name:'MockRTCRtpTransform', port: senderChannel.port2}, [senderChannel.port2]); >+ const receiverTransform = new RTCRtpScriptTransform(worker, {name:'MockRTCRtpTransform', port: receiverChannel.port2}, [receiverChannel.port2]); >+ senderTransform.port = senderChannel.port1; >+ receiverTransform.port = receiverChannel.port1; > > const startedPromise = new Promise(resolve => worker.onmessage = (event) => resolve(event.data)); > >@@ -98,9 +110,13 @@ promise_test(async (test) => { > > const localStream = await navigator.mediaDevices.getUserMedia({video: true}); > >+ const senderChannel = new MessageChannel; >+ const receiverChannel = new MessageChannel; > let sender, receiver; >- const senderTransform = new RTCRtpScriptTransform(worker, 'MockRTCRtpTransform'); >- const receiverTransform = new RTCRtpScriptTransform(worker, 'MockRTCRtpTransform'); >+ const senderTransform = new RTCRtpScriptTransform(worker, {name:'MockRTCRtpTransform', port: senderChannel.port2}, [senderChannel.port2]); >+ const receiverTransform = new RTCRtpScriptTransform(worker, {name:'MockRTCRtpTransform', port: receiverChannel.port2}, [receiverChannel.port2]); >+ senderTransform.port = senderChannel.port1; >+ receiverTransform.port = receiverChannel.port1; > > const startedPromise = new Promise(resolve => worker.onmessage = (event) => resolve(event.data)); > >diff --git a/LayoutTests/http/wpt/webrtc/write-twice-transform.js b/LayoutTests/http/wpt/webrtc/write-twice-transform.js >index fcd768db2b1dd0aea8513f7f90b6ef79d6580cc6..5d428c81b3aa5434319e10fbec6a0075a7d40b98 100644 >--- a/LayoutTests/http/wpt/webrtc/write-twice-transform.js >+++ b/LayoutTests/http/wpt/webrtc/write-twice-transform.js >@@ -1,6 +1,5 @@ > onrtctransform = (event) => { > const transformer = event.transformer; >- transformer.port.onmessage = (event) => transformer.port.postMessage(event.data); > > self.postMessage("started"); >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
ews-feeder
:
commit-queue-
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 224447
:
425779
|
425849
|
425850