haikuwebkit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-ex...

5 lines
140 B
Plaintext
Raw Permalink Normal View History

Support canvas captureStream https://bugs.webkit.org/show_bug.cgi?id=169192 Patch by Youenn Fablet <youenn@apple.com> on 2017-03-08 Reviewed by Dean Jackson. Source/WebCore: Tests: fast/mediacapturefromelement/CanvasCaptureMediaStream-2d-events.html fast/mediacapturefromelement/CanvasCaptureMediaStream-capture-out-of-DOM-element.html fast/mediacapturefromelement/CanvasCaptureMediaStream-clone-track.html fast/mediacapturefromelement/CanvasCaptureMediaStream-creation.html fast/mediacapturefromelement/CanvasCaptureMediaStream-exceptions.html fast/mediacapturefromelement/CanvasCaptureMediaStream-framerate-0.html fast/mediacapturefromelement/CanvasCaptureMediaStream-imagebitmaprenderingcontext.html fast/mediacapturefromelement/CanvasCaptureMediaStream-offscreencanvas.html fast/mediacapturefromelement/CanvasCaptureMediaStream-request-frame-events.html fast/mediacapturefromelement/CanvasCaptureMediaStream-webgl-events.html Adding canvas captureStream as defined in https://w3c.github.io/mediacapture-fromelement/#html-canvas-element-media-capture-extensions This allows creating a video MediaStreamTrack fed by canvas taken frames. Frames are produced when canvas get changed. Tests taken from Chromium. * CMakeLists.txt: * DerivedSources.make: * Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp: Added. (WebCore::CanvasCaptureMediaStreamTrack::create): (WebCore::CanvasCaptureMediaStreamTrack::CanvasCaptureMediaStreamTrack): (WebCore::CanvasCaptureMediaStreamTrack::Source::create): (WebCore::CanvasCaptureMediaStreamTrack::Source::Source): (WebCore::CanvasCaptureMediaStreamTrack::Source::startProducingData): (WebCore::CanvasCaptureMediaStreamTrack::Source::stopProducingData): (WebCore::CanvasCaptureMediaStreamTrack::Source::requestFrameTimerFired): (WebCore::CanvasCaptureMediaStreamTrack::Source::canvasDestroyed): (WebCore::CanvasCaptureMediaStreamTrack::Source::canvasResized): (WebCore::CanvasCaptureMediaStreamTrack::Source::canvasChanged): (WebCore::CanvasCaptureMediaStreamTrack::Source::captureCanvas): (WebCore::CanvasCaptureMediaStreamTrack::Source::paintCurrentFrameInContext): (WebCore::CanvasCaptureMediaStreamTrack::Source::currentFrameImage): * Modules/mediastream/CanvasCaptureMediaStreamTrack.h: Added. (isType): * Modules/mediastream/CanvasCaptureMediaStreamTrack.idl: Added. * Modules/mediastream/MediaStreamTrack.h: (WebCore::MediaStreamTrack::isCanvas): * Modules/mediastream/MediaStreamTrack.idl: * WebCore.xcodeproj/project.pbxproj: * bindings/js/JSMediaStreamTrackCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * html/HTMLCanvasElement.cpp: (WebCore::HTMLCanvasElement::toMediaSample): (WebCore::HTMLCanvasElement::captureStream): * html/HTMLCanvasElement.h: * html/HTMLCanvasElement.idl: * html/canvas/WebGL2RenderingContext.cpp: (WebCore::WebGL2RenderingContext::clear): * html/canvas/WebGLRenderingContextBase.cpp: (WebCore::WebGLRenderingContextBase::markContextChangedAndNotifyCanvasObserver): (WebCore::WebGLRenderingContextBase::drawArrays): (WebCore::WebGLRenderingContextBase::drawElements): (WebCore::WebGLRenderingContextBase::drawArraysInstanced): (WebCore::WebGLRenderingContextBase::drawElementsInstanced): * html/canvas/WebGLRenderingContextBase.h: * platform/graphics/ImageBuffer.cpp: (WebCore::ImageBuffer::toBGRAData): * platform/graphics/ImageBuffer.h: * platform/graphics/avfoundation/MediaSampleAVFObjC.h: * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm: (WebCore::releaseUint8Vector): (WebCore::MediaSampleAVFObjC::createImageSample): * platform/graphics/cg/ImageBufferCG.cpp: * platform/graphics/cg/ImageBufferDataCG.cpp: (WebCore::transferData): (WebCore::ImageBufferData::toBGRAData): * platform/graphics/cg/ImageBufferDataCG.h: LayoutTests: * fast/mediacapturefromelement/CanvasCaptureMediaStream-2d-events-expected.txt: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-2d-events.html: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-capture-out-of-DOM-element-expected.txt: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-capture-out-of-DOM-element.html: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-clone-track-expected.txt: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-clone-track.html: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-creation-expected.txt: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-creation.html: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-exceptions-expected.txt: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-exceptions.html: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-framerate-0-expected.txt: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-framerate-0.html: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-imagebitmaprenderingcontext-expected.txt: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-imagebitmaprenderingcontext.html: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-offscreencanvas-expected.txt: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-offscreencanvas.html: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-request-frame-events-expected.txt: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-request-frame-events.html: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-webgl-events-expected.txt: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-webgl-events.html: Added. * fast/mediacapturefromelement/resources/svg-with-image-with-foreignobject.svg: Added. * fast/mediacapturefromelement/resources/webgl-test.js: Added. Canonical link: https://commits.webkit.org/186356@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@213598 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-03-08 22:44:42 +00:00
PASS check captureStream() throws Exception with invalid frame rate
PASS check captureStream() throws Exception with cross origin content
Support canvas captureStream https://bugs.webkit.org/show_bug.cgi?id=169192 Patch by Youenn Fablet <youenn@apple.com> on 2017-03-08 Reviewed by Dean Jackson. Source/WebCore: Tests: fast/mediacapturefromelement/CanvasCaptureMediaStream-2d-events.html fast/mediacapturefromelement/CanvasCaptureMediaStream-capture-out-of-DOM-element.html fast/mediacapturefromelement/CanvasCaptureMediaStream-clone-track.html fast/mediacapturefromelement/CanvasCaptureMediaStream-creation.html fast/mediacapturefromelement/CanvasCaptureMediaStream-exceptions.html fast/mediacapturefromelement/CanvasCaptureMediaStream-framerate-0.html fast/mediacapturefromelement/CanvasCaptureMediaStream-imagebitmaprenderingcontext.html fast/mediacapturefromelement/CanvasCaptureMediaStream-offscreencanvas.html fast/mediacapturefromelement/CanvasCaptureMediaStream-request-frame-events.html fast/mediacapturefromelement/CanvasCaptureMediaStream-webgl-events.html Adding canvas captureStream as defined in https://w3c.github.io/mediacapture-fromelement/#html-canvas-element-media-capture-extensions This allows creating a video MediaStreamTrack fed by canvas taken frames. Frames are produced when canvas get changed. Tests taken from Chromium. * CMakeLists.txt: * DerivedSources.make: * Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp: Added. (WebCore::CanvasCaptureMediaStreamTrack::create): (WebCore::CanvasCaptureMediaStreamTrack::CanvasCaptureMediaStreamTrack): (WebCore::CanvasCaptureMediaStreamTrack::Source::create): (WebCore::CanvasCaptureMediaStreamTrack::Source::Source): (WebCore::CanvasCaptureMediaStreamTrack::Source::startProducingData): (WebCore::CanvasCaptureMediaStreamTrack::Source::stopProducingData): (WebCore::CanvasCaptureMediaStreamTrack::Source::requestFrameTimerFired): (WebCore::CanvasCaptureMediaStreamTrack::Source::canvasDestroyed): (WebCore::CanvasCaptureMediaStreamTrack::Source::canvasResized): (WebCore::CanvasCaptureMediaStreamTrack::Source::canvasChanged): (WebCore::CanvasCaptureMediaStreamTrack::Source::captureCanvas): (WebCore::CanvasCaptureMediaStreamTrack::Source::paintCurrentFrameInContext): (WebCore::CanvasCaptureMediaStreamTrack::Source::currentFrameImage): * Modules/mediastream/CanvasCaptureMediaStreamTrack.h: Added. (isType): * Modules/mediastream/CanvasCaptureMediaStreamTrack.idl: Added. * Modules/mediastream/MediaStreamTrack.h: (WebCore::MediaStreamTrack::isCanvas): * Modules/mediastream/MediaStreamTrack.idl: * WebCore.xcodeproj/project.pbxproj: * bindings/js/JSMediaStreamTrackCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * html/HTMLCanvasElement.cpp: (WebCore::HTMLCanvasElement::toMediaSample): (WebCore::HTMLCanvasElement::captureStream): * html/HTMLCanvasElement.h: * html/HTMLCanvasElement.idl: * html/canvas/WebGL2RenderingContext.cpp: (WebCore::WebGL2RenderingContext::clear): * html/canvas/WebGLRenderingContextBase.cpp: (WebCore::WebGLRenderingContextBase::markContextChangedAndNotifyCanvasObserver): (WebCore::WebGLRenderingContextBase::drawArrays): (WebCore::WebGLRenderingContextBase::drawElements): (WebCore::WebGLRenderingContextBase::drawArraysInstanced): (WebCore::WebGLRenderingContextBase::drawElementsInstanced): * html/canvas/WebGLRenderingContextBase.h: * platform/graphics/ImageBuffer.cpp: (WebCore::ImageBuffer::toBGRAData): * platform/graphics/ImageBuffer.h: * platform/graphics/avfoundation/MediaSampleAVFObjC.h: * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm: (WebCore::releaseUint8Vector): (WebCore::MediaSampleAVFObjC::createImageSample): * platform/graphics/cg/ImageBufferCG.cpp: * platform/graphics/cg/ImageBufferDataCG.cpp: (WebCore::transferData): (WebCore::ImageBufferData::toBGRAData): * platform/graphics/cg/ImageBufferDataCG.h: LayoutTests: * fast/mediacapturefromelement/CanvasCaptureMediaStream-2d-events-expected.txt: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-2d-events.html: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-capture-out-of-DOM-element-expected.txt: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-capture-out-of-DOM-element.html: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-clone-track-expected.txt: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-clone-track.html: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-creation-expected.txt: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-creation.html: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-exceptions-expected.txt: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-exceptions.html: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-framerate-0-expected.txt: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-framerate-0.html: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-imagebitmaprenderingcontext-expected.txt: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-imagebitmaprenderingcontext.html: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-offscreencanvas-expected.txt: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-offscreencanvas.html: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-request-frame-events-expected.txt: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-request-frame-events.html: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-webgl-events-expected.txt: Added. * fast/mediacapturefromelement/CanvasCaptureMediaStream-webgl-events.html: Added. * fast/mediacapturefromelement/resources/svg-with-image-with-foreignobject.svg: Added. * fast/mediacapturefromelement/resources/webgl-test.js: Added. Canonical link: https://commits.webkit.org/186356@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@213598 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-03-08 22:44:42 +00:00