WebKit Bugzilla
Attachment 372173 Details for
Bug 198873
: Make MediaStream constructor take a Document instead of a ScriptExecutionContext
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-198873-20190614211005.patch (text/plain), 15.87 KB, created by
youenn fablet
on 2019-06-14 21:10:06 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
youenn fablet
Created:
2019-06-14 21:10:06 PDT
Size:
15.87 KB
patch
obsolete
>Subversion Revision: 246451 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index f1c0f26f29c5e4ab09812173be834d7b593d0c0d..58b888daaa24dd8cfa119d5a33f1e899ff80f1af 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,33 @@ >+2019-06-14 Youenn Fablet <youenn@apple.com> >+ >+ Make MediaStream constructor take a Document instead of a ScriptExecutionContext >+ https://bugs.webkit.org/show_bug.cgi?id=198873 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Update MediaStream constructors and call site to take a Document&. >+ Make the same for creation of CanvasCaptureMediaStreamTrack. >+ No observable change of behavior. >+ >+ * Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp: >+ (WebCore::CanvasCaptureMediaStreamTrack::create): >+ (WebCore::CanvasCaptureMediaStreamTrack::CanvasCaptureMediaStreamTrack): >+ (WebCore::loggerFromContext): Deleted. >+ * Modules/mediastream/CanvasCaptureMediaStreamTrack.h: >+ * Modules/mediastream/MediaStream.cpp: >+ (WebCore::MediaStream::create): >+ (WebCore::MediaStream::MediaStream): >+ (WebCore::MediaStream::clone): >+ (WebCore::loggerFromContext): Deleted. >+ * Modules/mediastream/MediaStream.h: >+ * Modules/mediastream/MediaStream.idl: >+ * Modules/mediastream/UserMediaRequest.cpp: >+ (WebCore::UserMediaRequest::allow): >+ * html/HTMLCanvasElement.cpp: >+ (WebCore::HTMLCanvasElement::captureStream): >+ * html/HTMLCanvasElement.h: >+ * html/HTMLCanvasElement.idl: >+ > 2019-06-14 Antoine Quint <graouts@apple.com> > > [Pointer Events] button property is -1 for pointerdown and pointerup >diff --git a/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp b/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp >index 3b66aefa6305a650b4e753f7a9c2e6164f960ba2..2e9befe4eb515a0f01a46dcfe308dc09fd3571d2 100644 >--- a/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp >+++ b/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp >@@ -36,25 +36,20 @@ namespace WebCore { > > WTF_MAKE_ISO_ALLOCATED_IMPL(CanvasCaptureMediaStreamTrack); > >-Ref<CanvasCaptureMediaStreamTrack> CanvasCaptureMediaStreamTrack::create(ScriptExecutionContext& context, Ref<HTMLCanvasElement>&& canvas, Optional<double>&& frameRequestRate) >+Ref<CanvasCaptureMediaStreamTrack> CanvasCaptureMediaStreamTrack::create(Document& document, Ref<HTMLCanvasElement>&& canvas, Optional<double>&& frameRequestRate) > { > auto source = CanvasCaptureMediaStreamTrack::Source::create(canvas.get(), WTFMove(frameRequestRate)); >- return adoptRef(*new CanvasCaptureMediaStreamTrack(context, WTFMove(canvas), WTFMove(source))); >+ return adoptRef(*new CanvasCaptureMediaStreamTrack(document, WTFMove(canvas), WTFMove(source))); > } > >-static inline Ref<const Logger> loggerFromContext(ScriptExecutionContext& context) >-{ >- return downcast<Document>(context).logger(); >-} >- >-CanvasCaptureMediaStreamTrack::CanvasCaptureMediaStreamTrack(ScriptExecutionContext& context, Ref<HTMLCanvasElement>&& canvas, Ref<CanvasCaptureMediaStreamTrack::Source>&& source) >- : MediaStreamTrack(context, MediaStreamTrackPrivate::create(loggerFromContext(context), source.copyRef())) >+CanvasCaptureMediaStreamTrack::CanvasCaptureMediaStreamTrack(Document& document, Ref<HTMLCanvasElement>&& canvas, Ref<CanvasCaptureMediaStreamTrack::Source>&& source) >+ : MediaStreamTrack(document, MediaStreamTrackPrivate::create(document.logger(), source.copyRef())) > , m_canvas(WTFMove(canvas)) > { > } > >-CanvasCaptureMediaStreamTrack::CanvasCaptureMediaStreamTrack(ScriptExecutionContext& context, Ref<HTMLCanvasElement>&& canvas, Ref<MediaStreamTrackPrivate>&& privateTrack) >- : MediaStreamTrack(context, WTFMove(privateTrack)) >+CanvasCaptureMediaStreamTrack::CanvasCaptureMediaStreamTrack(Document& document, Ref<HTMLCanvasElement>&& canvas, Ref<MediaStreamTrackPrivate>&& privateTrack) >+ : MediaStreamTrack(document, WTFMove(privateTrack)) > , m_canvas(WTFMove(canvas)) > { > } >@@ -198,7 +193,7 @@ RefPtr<MediaStreamTrack> CanvasCaptureMediaStreamTrack::clone() > if (!scriptExecutionContext()) > return nullptr; > >- return adoptRef(*new CanvasCaptureMediaStreamTrack(*scriptExecutionContext(), m_canvas.copyRef(), m_private->clone())); >+ return adoptRef(*new CanvasCaptureMediaStreamTrack(downcast<Document>(*scriptExecutionContext()), m_canvas.copyRef(), m_private->clone())); > } > > } >diff --git a/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.h b/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.h >index 265c378cbbe28a45ff4506da01b4e6e8a5009dc3..c8659ff781d72761222706bcca563d1730ae838a 100644 >--- a/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.h >+++ b/Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.h >@@ -33,14 +33,14 @@ > > namespace WebCore { > >+class Document; > class HTMLCanvasElement; > class Image; >-class ScriptExecutionContext; > > class CanvasCaptureMediaStreamTrack final : public MediaStreamTrack { > WTF_MAKE_ISO_ALLOCATED(CanvasCaptureMediaStreamTrack); > public: >- static Ref<CanvasCaptureMediaStreamTrack> create(ScriptExecutionContext&, Ref<HTMLCanvasElement>&&, Optional<double>&& frameRequestRate); >+ static Ref<CanvasCaptureMediaStreamTrack> create(Document&, Ref<HTMLCanvasElement>&&, Optional<double>&& frameRequestRate); > > HTMLCanvasElement& canvas() { return m_canvas.get(); } > void requestFrame() { static_cast<Source&>(source()).requestFrame(); } >@@ -82,8 +82,8 @@ private: > RefPtr<Image> m_currentImage; > }; > >- CanvasCaptureMediaStreamTrack(ScriptExecutionContext&, Ref<HTMLCanvasElement>&&, Ref<Source>&&); >- CanvasCaptureMediaStreamTrack(ScriptExecutionContext&, Ref<HTMLCanvasElement>&&, Ref<MediaStreamTrackPrivate>&&); >+ CanvasCaptureMediaStreamTrack(Document&, Ref<HTMLCanvasElement>&&, Ref<Source>&&); >+ CanvasCaptureMediaStreamTrack(Document&, Ref<HTMLCanvasElement>&&, Ref<MediaStreamTrackPrivate>&&); > > bool isCanvas() const final { return true; } > >diff --git a/Source/WebCore/Modules/mediastream/MediaStream.cpp b/Source/WebCore/Modules/mediastream/MediaStream.cpp >index 45d805045afe4969e4725734f88ef7d4a29e2f8c..5eb8ca5a01a7e44d178e47af5bad2f00cd8b1024 100644 >--- a/Source/WebCore/Modules/mediastream/MediaStream.cpp >+++ b/Source/WebCore/Modules/mediastream/MediaStream.cpp >@@ -48,29 +48,24 @@ namespace WebCore { > > WTF_MAKE_ISO_ALLOCATED_IMPL(MediaStream); > >-static inline Ref<const Logger> loggerFromContext(ScriptExecutionContext& context) >+Ref<MediaStream> MediaStream::create(Document& document) > { >- return downcast<Document>(context).logger(); >+ return MediaStream::create(document, MediaStreamPrivate::create(document.logger(), { })); > } > >-Ref<MediaStream> MediaStream::create(ScriptExecutionContext& context) >+Ref<MediaStream> MediaStream::create(Document& document, MediaStream& stream) > { >- return MediaStream::create(context, MediaStreamPrivate::create(loggerFromContext(context), { })); >+ return adoptRef(*new MediaStream(document, stream.getTracks())); > } > >-Ref<MediaStream> MediaStream::create(ScriptExecutionContext& context, MediaStream& stream) >+Ref<MediaStream> MediaStream::create(Document& document, const MediaStreamTrackVector& tracks) > { >- return adoptRef(*new MediaStream(context, stream.getTracks())); >+ return adoptRef(*new MediaStream(document, tracks)); > } > >-Ref<MediaStream> MediaStream::create(ScriptExecutionContext& context, const MediaStreamTrackVector& tracks) >+Ref<MediaStream> MediaStream::create(Document& document, Ref<MediaStreamPrivate>&& streamPrivate) > { >- return adoptRef(*new MediaStream(context, tracks)); >-} >- >-Ref<MediaStream> MediaStream::create(ScriptExecutionContext& context, Ref<MediaStreamPrivate>&& streamPrivate) >-{ >- return adoptRef(*new MediaStream(context, WTFMove(streamPrivate))); >+ return adoptRef(*new MediaStream(document, WTFMove(streamPrivate))); > } > > static inline MediaStreamTrackPrivateVector createTrackPrivateVector(const MediaStreamTrackVector& tracks) >@@ -82,9 +77,9 @@ static inline MediaStreamTrackPrivateVector createTrackPrivateVector(const Media > return trackPrivates; > } > >-MediaStream::MediaStream(ScriptExecutionContext& context, const MediaStreamTrackVector& tracks) >- : ActiveDOMObject(&context) >- , m_private(MediaStreamPrivate::create(document()->logger(), createTrackPrivateVector(tracks))) >+MediaStream::MediaStream(Document& document, const MediaStreamTrackVector& tracks) >+ : ActiveDOMObject(document) >+ , m_private(MediaStreamPrivate::create(document.logger(), createTrackPrivateVector(tracks))) > , m_mediaSession(PlatformMediaSession::create(*this)) > { > // This constructor preserves MediaStreamTrack instances and must be used by calls originating >@@ -101,8 +96,8 @@ MediaStream::MediaStream(ScriptExecutionContext& context, const MediaStreamTrack > suspendIfNeeded(); > } > >-MediaStream::MediaStream(ScriptExecutionContext& context, Ref<MediaStreamPrivate>&& streamPrivate) >- : ActiveDOMObject(&context) >+MediaStream::MediaStream(Document& document, Ref<MediaStreamPrivate>&& streamPrivate) >+ : ActiveDOMObject(document) > , m_private(WTFMove(streamPrivate)) > , m_mediaSession(PlatformMediaSession::create(*this)) > { >@@ -113,7 +108,7 @@ MediaStream::MediaStream(ScriptExecutionContext& context, Ref<MediaStreamPrivate > MediaStreamRegistry::shared().registerStream(*this); > > for (auto& trackPrivate : m_private->tracks()) { >- auto track = MediaStreamTrack::create(context, *trackPrivate); >+ auto track = MediaStreamTrack::create(document, *trackPrivate); > track->addObserver(*this); > m_trackSet.add(track->id(), WTFMove(track)); > } >@@ -145,7 +140,7 @@ RefPtr<MediaStream> MediaStream::clone() > for (auto& track : m_trackSet.values()) > clonedTracks.uncheckedAppend(track->clone()); > >- return MediaStream::create(*scriptExecutionContext(), clonedTracks); >+ return MediaStream::create(*document(), clonedTracks); > } > > void MediaStream::addTrack(MediaStreamTrack& track) >diff --git a/Source/WebCore/Modules/mediastream/MediaStream.h b/Source/WebCore/Modules/mediastream/MediaStream.h >index 5db3bd74ae077e5098788ea6eedda66e47be42a4..b9e7e75cb0f03b37ac23a6c499bf55ae577dd920 100644 >--- a/Source/WebCore/Modules/mediastream/MediaStream.h >+++ b/Source/WebCore/Modules/mediastream/MediaStream.h >@@ -68,10 +68,10 @@ public: > virtual void didAddOrRemoveTrack() = 0; > }; > >- static Ref<MediaStream> create(ScriptExecutionContext&); >- static Ref<MediaStream> create(ScriptExecutionContext&, MediaStream&); >- static Ref<MediaStream> create(ScriptExecutionContext&, const MediaStreamTrackVector&); >- static Ref<MediaStream> create(ScriptExecutionContext&, Ref<MediaStreamPrivate>&&); >+ static Ref<MediaStream> create(Document&); >+ static Ref<MediaStream> create(Document&, MediaStream&); >+ static Ref<MediaStream> create(Document&, const MediaStreamTrackVector&); >+ static Ref<MediaStream> create(Document&, Ref<MediaStreamPrivate>&&); > virtual ~MediaStream(); > > String id() const { return m_private->id(); } >@@ -121,8 +121,8 @@ public: > WEBCORE_EXPORT bool internalRemoveTrack(const String&, StreamModifier); > > protected: >- MediaStream(ScriptExecutionContext&, const MediaStreamTrackVector&); >- MediaStream(ScriptExecutionContext&, Ref<MediaStreamPrivate>&&); >+ MediaStream(Document&, const MediaStreamTrackVector&); >+ MediaStream(Document&, Ref<MediaStreamPrivate>&&); > > #if !RELEASE_LOG_DISABLED > const Logger& logger() const final { return m_private->logger(); } >diff --git a/Source/WebCore/Modules/mediastream/MediaStream.idl b/Source/WebCore/Modules/mediastream/MediaStream.idl >index e4b4f369a1d3ca418e9e3b353ad53a137554f7b7..1bedaf07be33b698da184c47cc50648646275c3f 100644 >--- a/Source/WebCore/Modules/mediastream/MediaStream.idl >+++ b/Source/WebCore/Modules/mediastream/MediaStream.idl >@@ -28,7 +28,7 @@ > Constructor, > Constructor(MediaStream stream), > Constructor(sequence<MediaStreamTrack> tracks), >- ConstructorCallWith=ScriptExecutionContext, >+ ConstructorCallWith=Document, > ExportToWrappedFunction, > PrivateIdentifier, > PublicIdentifier >diff --git a/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp b/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp >index 8e136c0785ef2ca30e0097b52ce5e6278abd86be..2c8edb94fc2ca32fec9699177b5d8857dc9c0cd4 100644 >--- a/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp >+++ b/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp >@@ -233,7 +233,7 @@ void UserMediaRequest::allow(CaptureDevice&& audioDevice, CaptureDevice&& videoD > } > privateStream->monitorOrientation(downcast<Document>(m_scriptExecutionContext)->orientationNotifier()); > >- auto stream = MediaStream::create(*m_scriptExecutionContext, privateStream.releaseNonNull()); >+ auto stream = MediaStream::create(*downcast<Document>(m_scriptExecutionContext), privateStream.releaseNonNull()); > if (stream->getTracks().isEmpty()) { > deny(MediaAccessDenialReason::HardwareError); > return; >diff --git a/Source/WebCore/html/HTMLCanvasElement.cpp b/Source/WebCore/html/HTMLCanvasElement.cpp >index 231acfe2d3b2d0d95513dd8a0ec90ae0113e0b49..39ab860e796ac8536ddeca6e72cdde155a3bfeb7 100644 >--- a/Source/WebCore/html/HTMLCanvasElement.cpp >+++ b/Source/WebCore/html/HTMLCanvasElement.cpp >@@ -785,18 +785,18 @@ RefPtr<MediaSample> HTMLCanvasElement::toMediaSample() > #endif > } > >-ExceptionOr<Ref<MediaStream>> HTMLCanvasElement::captureStream(ScriptExecutionContext& context, Optional<double>&& frameRequestRate) >+ExceptionOr<Ref<MediaStream>> HTMLCanvasElement::captureStream(Document& document, Optional<double>&& frameRequestRate) > { > if (!originClean()) > return Exception(SecurityError, "Canvas is tainted"_s); > if (RuntimeEnabledFeatures::sharedFeatures().webAPIStatisticsEnabled()) >- ResourceLoadObserver::shared().logCanvasRead(document()); >+ ResourceLoadObserver::shared().logCanvasRead(this->document()); > > if (frameRequestRate && frameRequestRate.value() < 0) > return Exception(NotSupportedError, "frameRequestRate is negative"_s); > >- auto track = CanvasCaptureMediaStreamTrack::create(context, *this, WTFMove(frameRequestRate)); >- auto stream = MediaStream::create(context); >+ auto track = CanvasCaptureMediaStreamTrack::create(document, *this, WTFMove(frameRequestRate)); >+ auto stream = MediaStream::create(document); > stream->addTrack(track); > return stream; > } >diff --git a/Source/WebCore/html/HTMLCanvasElement.h b/Source/WebCore/html/HTMLCanvasElement.h >index 7b52b8f3b7241cddc17547e2b13d5fc3589fa7f6..172d99180c928b047135583e034b006dd0c70c73 100644 >--- a/Source/WebCore/html/HTMLCanvasElement.h >+++ b/Source/WebCore/html/HTMLCanvasElement.h >@@ -121,7 +121,7 @@ public: > > #if ENABLE(MEDIA_STREAM) > RefPtr<MediaSample> toMediaSample(); >- ExceptionOr<Ref<MediaStream>> captureStream(ScriptExecutionContext&, Optional<double>&& frameRequestRate); >+ ExceptionOr<Ref<MediaStream>> captureStream(Document&, Optional<double>&& frameRequestRate); > #endif > > ImageBuffer* buffer() const; >diff --git a/Source/WebCore/html/HTMLCanvasElement.idl b/Source/WebCore/html/HTMLCanvasElement.idl >index fe06c2b4b8f62279123fb3e298173bf507ba540c..6fcacd417f26b4638a320716ea2047ec73e948fc 100644 >--- a/Source/WebCore/html/HTMLCanvasElement.idl >+++ b/Source/WebCore/html/HTMLCanvasElement.idl >@@ -50,5 +50,5 @@ typedef ( > [MayThrowException] DOMString toDataURL(optional DOMString type, optional any quality); > [CallWith=ScriptExecutionContext, MayThrowException] void toBlob(BlobCallback callback, optional DOMString type, optional any quality); > >- [Conditional=MEDIA_STREAM, CallWith=ScriptExecutionContext, MayThrowException, NewObject] MediaStream captureStream(optional double frameRequestRate); >+ [Conditional=MEDIA_STREAM, CallWith=Document, MayThrowException, NewObject] MediaStream captureStream(optional double frameRequestRate); > };
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
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 198873
: 372173