haikuwebkit/LayoutTests/fast/mediastream/MediaStreamTrackEvent-const...

83 lines
3.6 KiB
HTML
Raw Permalink Normal View History

<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
WebRTC: Update the MediaStream API https://bugs.webkit.org/show_bug.cgi?id=146313 Reviewed by Eric Carlson. Source/WebCore: Update the MediaStream API (MediaStream, MediaStreamTrack and RealtimeMediaSource) to match the Media Capture and Stream specification [1]. Notable changes: Updated event handling to synchronously update corresponding state/attributes as events are dispatched. Removed 'new' state from MediaStreamTrack. A track is either 'live' or 'ended'. As a consequence 'started' event is also removed. MediaStreamTrack always has a source (disconnected source concept was removed from the spec). Therefore, more state can be kept at the source without going away. Calculate MediaStream.active internally, from the track set, instead of setting it externally. Updated RealtimeMediaSource Observer interface. Replaced MediaStream's separate audio and video track lists with a single track set (more aligned with spec). Updated MediaStream constructor to adopt instead of clone track arguments (or tracks from MediaStream argument). Removed MediaStreamTrack.getSources() and corresponding test (removed from spec). Test status: 3 added, 8 existing enabled (some updated) and 1 removed. [1] http://w3c.github.io/mediacapture-main/archives/20150523/getusermedia.html Tests: fast/mediastream/MediaStreamTrack-clone.html fast/mediastream/MediaStreamTrack-kind.html fast/mediastream/MediaStreamTrack-stop.html * Modules/mediastream/MediaStream.cpp: (WebCore::MediaStream::create): (WebCore::MediaStream::MediaStream): (WebCore::MediaStream::clone): (WebCore::MediaStream::addTrack): (WebCore::MediaStream::removeTrack): (WebCore::MediaStream::getTrackById): (WebCore::MediaStream::getAudioTracks): (WebCore::MediaStream::getVideoTracks): (WebCore::MediaStream::getTracks): (WebCore::MediaStream::contextDestroyed): (WebCore::MediaStream::trackDidEnd): (WebCore::MediaStream::activeStatusChanged): (WebCore::MediaStream::didAddTrackToPrivate): (WebCore::MediaStream::didRemoveTrackFromPrivate): (WebCore::MediaStream::internalAddTrack): (WebCore::MediaStream::internalRemoveTrack): (WebCore::MediaStream::scheduleActiveStateChange): (WebCore::MediaStream::activityEventTimerFired): (WebCore::MediaStream::trackVectorForType): (WebCore::MediaStream::~MediaStream): Deleted. (WebCore::MediaStream::registry): Deleted. (WebCore::MediaStream::addObserver): Deleted. (WebCore::MediaStream::removeObserver): Deleted. * Modules/mediastream/MediaStream.h: * Modules/mediastream/MediaStream.idl: * Modules/mediastream/MediaStreamTrack.cpp: (WebCore::MediaStreamTrack::MediaStreamTrack): (WebCore::MediaStreamTrack::~MediaStreamTrack): (WebCore::MediaStreamTrack::kind): (WebCore::MediaStreamTrack::id): (WebCore::MediaStreamTrack::label): (WebCore::MediaStreamTrack::enabled): (WebCore::MediaStreamTrack::setEnabled): (WebCore::MediaStreamTrack::muted): (WebCore::MediaStreamTrack::readonly): (WebCore::MediaStreamTrack::remote): (WebCore::MediaStreamTrack::readyState): (WebCore::MediaStreamTrack::ended): (WebCore::MediaStreamTrack::clone): (WebCore::MediaStreamTrack::stopProducingData): (WebCore::MediaStreamTrack::states): (WebCore::MediaStreamTrack::getCapabilities): (WebCore::MediaStreamTrack::applyConstraints): (WebCore::MediaStreamTrack::trackEnded): (WebCore::MediaStreamTrack::trackMutedChanged): (WebCore::MediaStreamTrack::stop): (WebCore::MediaStreamTrack::getConstraints): Deleted. (WebCore::MediaStreamTrack::addObserver): Deleted. (WebCore::MediaStreamTrack::removeObserver): Deleted. (WebCore::MediaStreamTrack::configureTrackRendering): Deleted. (WebCore::MediaStreamTrack::activeDOMObjectName): Deleted. (WebCore::MediaStreamTrack::canSuspendForPageCache): Deleted. * Modules/mediastream/MediaStreamTrack.h: * Modules/mediastream/MediaStreamTrack.idl: * Modules/mediastream/RTCPeerConnection.cpp: (WebCore::RTCPeerConnection::didRemoveRemoteStream): Deleted. * Modules/mediastream/UserMediaRequest.cpp: (WebCore::UserMediaRequest::didCreateStream): * platform/mediastream/MediaStreamPrivate.cpp: (WebCore::MediaStreamPrivate::create): (WebCore::MediaStreamPrivate::MediaStreamPrivate): (WebCore::MediaStreamPrivate::tracks): (WebCore::MediaStreamPrivate::updateActiveState): (WebCore::MediaStreamPrivate::addTrack): (WebCore::MediaStreamPrivate::removeTrack): * platform/mediastream/MediaStreamPrivate.h: (WebCore::MediaStreamPrivate::active): Deleted. * platform/mediastream/MediaStreamTrackPrivate.cpp: (WebCore::MediaStreamTrackPrivate::create): (WebCore::MediaStreamTrackPrivate::MediaStreamTrackPrivate): (WebCore::MediaStreamTrackPrivate::~MediaStreamTrackPrivate): (WebCore::MediaStreamTrackPrivate::label): (WebCore::MediaStreamTrackPrivate::setEnabled): (WebCore::MediaStreamTrackPrivate::endTrack): (WebCore::MediaStreamTrackPrivate::clone): (WebCore::MediaStreamTrackPrivate::type): (WebCore::MediaStreamTrackPrivate::applyConstraints): (WebCore::MediaStreamTrackPrivate::sourceStopped): (WebCore::MediaStreamTrackPrivate::sourceMutedChanged): (WebCore::MediaStreamTrackPrivate::preventSourceFromStopping): (WebCore::MediaStreamTrackPrivate::muted): Deleted. (WebCore::MediaStreamTrackPrivate::readonly): Deleted. (WebCore::MediaStreamTrackPrivate::remote): Deleted. (WebCore::MediaStreamTrackPrivate::constraints): Deleted. (WebCore::MediaStreamTrackPrivate::states): Deleted. (WebCore::MediaStreamTrackPrivate::capabilities): Deleted. * platform/mediastream/MediaStreamTrackPrivate.h: (WebCore::MediaStreamTrackPrivate::id): (WebCore::MediaStreamTrackPrivate::ended): (WebCore::MediaStreamTrackPrivate::enabled): (WebCore::MediaStreamTrackPrivate::setClient): (WebCore::MediaStreamTrackPrivate::source): Deleted. (WebCore::MediaStreamTrackPrivate::client): Deleted. * platform/mediastream/RealtimeMediaSource.cpp: (WebCore::RealtimeMediaSource::RealtimeMediaSource): (WebCore::RealtimeMediaSource::reset): (WebCore::RealtimeMediaSource::setMuted): (WebCore::RealtimeMediaSource::readonly): (WebCore::RealtimeMediaSource::stop): (WebCore::RealtimeMediaSource::requestStop): (WebCore::RealtimeMediaSource::addObserver): Deleted. (WebCore::RealtimeMediaSource::removeObserver): Deleted. * platform/mediastream/RealtimeMediaSource.h: (WebCore::RealtimeMediaSource::stopped): (WebCore::RealtimeMediaSource::id): Deleted. (WebCore::RealtimeMediaSource::muted): Deleted. (WebCore::RealtimeMediaSource::setReadonly): Deleted. * platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp: (WebCore::RealtimeMediaSourceCenterOwr::createMediaStream): Deleted. * platform/mock/MockRealtimeMediaSourceCenter.cpp: (WebCore::MockRealtimeMediaSourceCenter::createMediaStream): Deleted. LayoutTests: Test status: 3 added, 8 existing enabled (some updated) and 1 removed. * TestExpectations: * fast/mediastream/MediaStream-add-ended-tracks-expected.txt: * fast/mediastream/MediaStream-add-ended-tracks.html: * fast/mediastream/MediaStream-add-remove-tracks-expected.txt: * fast/mediastream/MediaStream-add-remove-tracks.html: * fast/mediastream/MediaStream-add-tracks-to-inactive-stream.html: * fast/mediastream/MediaStream-clone-expected.txt: Added. * fast/mediastream/MediaStream-clone.html: * fast/mediastream/MediaStream-construct-with-ended-tracks-expected.txt: Added. * fast/mediastream/MediaStream-construct-with-ended-tracks.html: * fast/mediastream/MediaStream-getTracks-expected.txt: * fast/mediastream/MediaStream-getTracks.html: * fast/mediastream/MediaStreamConstructor.html: * fast/mediastream/MediaStreamTrack-clone-expected.txt: Added. * fast/mediastream/MediaStreamTrack-clone.html: Added. * fast/mediastream/MediaStreamTrack-getSources-expected.txt: Removed. * fast/mediastream/MediaStreamTrack-getSources.html: Removed. Tested method removed from spec. * fast/mediastream/MediaStreamTrack-kind-expected.txt: Added. * fast/mediastream/MediaStreamTrack-kind.html: Added. * fast/mediastream/MediaStreamTrack-stop-expected.txt: Added. * fast/mediastream/MediaStreamTrack-stop.html: Added. * fast/mediastream/MediaStreamTrackEvent-constructor-expected.txt: * fast/mediastream/MediaStreamTrackEvent-constructor.html: * fast/mediastream/resources/getUserMedia-helper.js: Added. (.reject): (getUserMedia): (defaultRejectOrCatch): * platform/gtk/TestExpectations: Canonical link: https://commits.webkit.org/164511@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@186081 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-06-29 19:52:21 +00:00
<script src="./resources/getUserMedia-helper.js"></script>
</head>
<script>
var mediaStream = null;
var mediaStreamTrack = null;
var timer = null;
window.jsTestIsAsync = true;
description("This tests the constructor for the MediaStreamTrackEvent DOM class.");
[MediaStream] make MediaStream testable https://bugs.webkit.org/show_bug.cgi?id=121967 Reviewed by Dean Jackson. Source/WebCore: No new tests, existing tests updated. * CMakeLists.txt: Add MockMediaStreamCenter. * GNUmakefile.list.am: Ditto. * Modules/mediastream/MediaStreamTrack.idl: Add SkipVTableValidation. * Modules/mediastream/NavigatorUserMediaError.idl: Add JSGenerateToJSObject. * WebCore.exp.in: Export MockMediaStreamCenter::registerMockMediaStreamCenter. * WebCore.xcodeproj/project.pbxproj: Add MockMediaStreamCenter. * dom/DOMError.h: Make the destructor virtual because it has a derived class. * dom/DOMError.idl: * platform/mock/MockMediaStreamCenter.cpp: Added. * platform/mock/MockMediaStreamCenter.h: Added. * testing/Internals.cpp: Register the mock stream center. Source/WebKit: * WebKit.xcodeproj/project.pbxproj: Add WebUserMediaClient. Source/WebKit/mac: * WebCoreSupport/WebUserMediaClient.h: Added. * WebCoreSupport/WebUserMediaClient.mm: Added. * WebView/WebUIDelegatePrivate.h: Declare decidePolicyForUserMediaRequestFromOrigin:listener: * WebView/WebView.mm: (-[WebView _commonInitializationWithFrameName:groupName:]): Register WebUserMediaClient. (-[WebView _setUserMediaClient:]): New. (-[WebView _userMediaClient]): New. * WebView/WebViewData.h: * WebView/WebViewPrivate.h: Tools: * DumpRenderTree/mac/UIDelegate.mm: (-[UIDelegate webView:decidePolicyForUserMediaRequestFromOrigin:listener:]): Add a very permissive user media request policy delegate. LayoutTests: * fast/mediastream/MediaStream-add-remove-tracks-expected.txt: * fast/mediastream/MediaStream-add-remove-tracks.html: Make the test results more understandable to simplify debugging failures. * fast/mediastream/MediaStream-onended-expected.txt: * fast/mediastream/MediaStream-onended.html: Ditto. Fix a test error: stopping stream A should not stop stream B even when it was created from stream A. * fast/mediastream/MediaStreamConstructor-expected.txt: * fast/mediastream/MediaStreamConstructor.html: Make the test results more understandable. Fix a logic errors: webkitMediaStream is an object, not a function. JSC does not support object.constructor.name, use object.constructor.toString() instead. * fast/mediastream/MediaStreamTrackEvent-constructor-expected.txt: * fast/mediastream/MediaStreamTrackEvent-constructor.html: Update now that getUserMedia() works. * fast/mediastream/argument-types-expected.txt: Updated with "Failing" results because the correct behavior is unknown. The spec says "the syntax for getUserMedia() is still under discussion". Canonical link: https://commits.webkit.org/140023@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@156522 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-09-27 01:08:17 +00:00
function endTest()
{
clearTimeout(timer);
finishJSTest();
}
function testMediaStreamTrackEvent()
{
debug("<br>*** No initializer passed ***");
shouldThrowErrorName("new MediaStreamTrackEvent('MediaStreamTrackEvent')", "TypeError");
debug("<br>*** Bubbles and cancelable true, track is missing ***");
shouldThrowErrorName("new MediaStreamTrackEvent('MediaStreamTrackEvent', { bubbles: true, cancelable: true })", "TypeError");
debug("<br>*** Bubbles and cancelable true, invalid track ***");
Update MediaStream events to stop using legacy [ConstructorTemplate=Event] https://bugs.webkit.org/show_bug.cgi?id=163289 Reviewed by Sam Weinig. Source/WebCore: Update MediaStream events to stop using legacy [ConstructorTemplate=Event] and use regular constructors instead. * Modules/mediastream/MediaStreamEvent.cpp: (WebCore::MediaStreamEvent::create): (WebCore::MediaStreamEvent::MediaStreamEvent): * Modules/mediastream/MediaStreamEvent.h: * Modules/mediastream/MediaStreamEvent.idl: * Modules/mediastream/MediaStreamTrackEvent.cpp: (WebCore::MediaStreamTrackEvent::create): (WebCore::MediaStreamTrackEvent::MediaStreamTrackEvent): * Modules/mediastream/MediaStreamTrackEvent.h: * Modules/mediastream/MediaStreamTrackEvent.idl: * Modules/mediastream/OverconstrainedErrorEvent.h: (WebCore::OverconstrainedErrorEvent::create): (WebCore::OverconstrainedErrorEvent::OverconstrainedErrorEvent): (WebCore::OverconstrainedErrorEvent::~OverconstrainedErrorEvent): Deleted. * Modules/mediastream/OverconstrainedErrorEvent.idl: * Modules/mediastream/RTCDTMFToneChangeEvent.cpp: (WebCore::RTCDTMFToneChangeEvent::create): (WebCore::RTCDTMFToneChangeEvent::RTCDTMFToneChangeEvent): * Modules/mediastream/RTCDTMFToneChangeEvent.h: * Modules/mediastream/RTCDTMFToneChangeEvent.idl: * Modules/mediastream/RTCTrackEvent.cpp: (WebCore::RTCTrackEvent::create): (WebCore::RTCTrackEvent::RTCTrackEvent): * Modules/mediastream/RTCTrackEvent.h: * Modules/mediastream/RTCTrackEvent.idl: LayoutTests: Update existing test cases now that we throw more exceptions on bad input. * fast/events/constructors/overconstrained-error-event-constructor-expected.txt: * fast/events/constructors/overconstrained-error-event-constructor.html: * fast/mediastream/MediaStreamTrackEvent-constructor-expected.txt: * fast/mediastream/MediaStreamTrackEvent-constructor.html: Canonical link: https://commits.webkit.org/181142@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@207175 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-10-11 23:11:49 +00:00
shouldThrowErrorName("new MediaStreamTrackEvent('MediaStreamTrackEvent', { bubbles: true, cancelable: true, track: MediaStreamTrack })", "TypeError");
debug("<br>*** Initialize 'track' with a invalid values ***");
Update MediaStream events to stop using legacy [ConstructorTemplate=Event] https://bugs.webkit.org/show_bug.cgi?id=163289 Reviewed by Sam Weinig. Source/WebCore: Update MediaStream events to stop using legacy [ConstructorTemplate=Event] and use regular constructors instead. * Modules/mediastream/MediaStreamEvent.cpp: (WebCore::MediaStreamEvent::create): (WebCore::MediaStreamEvent::MediaStreamEvent): * Modules/mediastream/MediaStreamEvent.h: * Modules/mediastream/MediaStreamEvent.idl: * Modules/mediastream/MediaStreamTrackEvent.cpp: (WebCore::MediaStreamTrackEvent::create): (WebCore::MediaStreamTrackEvent::MediaStreamTrackEvent): * Modules/mediastream/MediaStreamTrackEvent.h: * Modules/mediastream/MediaStreamTrackEvent.idl: * Modules/mediastream/OverconstrainedErrorEvent.h: (WebCore::OverconstrainedErrorEvent::create): (WebCore::OverconstrainedErrorEvent::OverconstrainedErrorEvent): (WebCore::OverconstrainedErrorEvent::~OverconstrainedErrorEvent): Deleted. * Modules/mediastream/OverconstrainedErrorEvent.idl: * Modules/mediastream/RTCDTMFToneChangeEvent.cpp: (WebCore::RTCDTMFToneChangeEvent::create): (WebCore::RTCDTMFToneChangeEvent::RTCDTMFToneChangeEvent): * Modules/mediastream/RTCDTMFToneChangeEvent.h: * Modules/mediastream/RTCDTMFToneChangeEvent.idl: * Modules/mediastream/RTCTrackEvent.cpp: (WebCore::RTCTrackEvent::create): (WebCore::RTCTrackEvent::RTCTrackEvent): * Modules/mediastream/RTCTrackEvent.h: * Modules/mediastream/RTCTrackEvent.idl: LayoutTests: Update existing test cases now that we throw more exceptions on bad input. * fast/events/constructors/overconstrained-error-event-constructor-expected.txt: * fast/events/constructors/overconstrained-error-event-constructor.html: * fast/mediastream/MediaStreamTrackEvent-constructor-expected.txt: * fast/mediastream/MediaStreamTrackEvent-constructor.html: Canonical link: https://commits.webkit.org/181142@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@207175 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-10-11 23:11:49 +00:00
shouldThrowErrorName("new MediaStreamTrackEvent('MediaStreamTrackEvent', { track: 10 })", "TypeError");
shouldThrowErrorName("new MediaStreamTrackEvent('MediaStreamTrackEvent', { track: \'string\' })", "TypeError");
emptyObject = { };
Update MediaStream events to stop using legacy [ConstructorTemplate=Event] https://bugs.webkit.org/show_bug.cgi?id=163289 Reviewed by Sam Weinig. Source/WebCore: Update MediaStream events to stop using legacy [ConstructorTemplate=Event] and use regular constructors instead. * Modules/mediastream/MediaStreamEvent.cpp: (WebCore::MediaStreamEvent::create): (WebCore::MediaStreamEvent::MediaStreamEvent): * Modules/mediastream/MediaStreamEvent.h: * Modules/mediastream/MediaStreamEvent.idl: * Modules/mediastream/MediaStreamTrackEvent.cpp: (WebCore::MediaStreamTrackEvent::create): (WebCore::MediaStreamTrackEvent::MediaStreamTrackEvent): * Modules/mediastream/MediaStreamTrackEvent.h: * Modules/mediastream/MediaStreamTrackEvent.idl: * Modules/mediastream/OverconstrainedErrorEvent.h: (WebCore::OverconstrainedErrorEvent::create): (WebCore::OverconstrainedErrorEvent::OverconstrainedErrorEvent): (WebCore::OverconstrainedErrorEvent::~OverconstrainedErrorEvent): Deleted. * Modules/mediastream/OverconstrainedErrorEvent.idl: * Modules/mediastream/RTCDTMFToneChangeEvent.cpp: (WebCore::RTCDTMFToneChangeEvent::create): (WebCore::RTCDTMFToneChangeEvent::RTCDTMFToneChangeEvent): * Modules/mediastream/RTCDTMFToneChangeEvent.h: * Modules/mediastream/RTCDTMFToneChangeEvent.idl: * Modules/mediastream/RTCTrackEvent.cpp: (WebCore::RTCTrackEvent::create): (WebCore::RTCTrackEvent::RTCTrackEvent): * Modules/mediastream/RTCTrackEvent.h: * Modules/mediastream/RTCTrackEvent.idl: LayoutTests: Update existing test cases now that we throw more exceptions on bad input. * fast/events/constructors/overconstrained-error-event-constructor-expected.txt: * fast/events/constructors/overconstrained-error-event-constructor.html: * fast/mediastream/MediaStreamTrackEvent-constructor-expected.txt: * fast/mediastream/MediaStreamTrackEvent-constructor.html: Canonical link: https://commits.webkit.org/181142@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@207175 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-10-11 23:11:49 +00:00
shouldThrowErrorName("new MediaStreamTrackEvent('MediaStreamTrackEvent', { track: emptyObject })", "TypeError");
shouldThrowErrorName("new MediaStreamTrackEvent('MediaStreamTrackEvent', { track: document })", "TypeError");
debug("<br>*** Bubbles and cancelable true, valid track ***");
shouldBe("new MediaStreamTrackEvent('MediaStreamTrackEvent', { bubbles: true, cancelable: true, track: mediaStreamTrack }).bubbles", "true");
shouldBe("new MediaStreamTrackEvent('MediaStreamTrackEvent', { bubbles: true, cancelable: true, track: mediaStreamTrack }).cancelable", "true");
debug("<br>*** Initialize 'track' with valid track object ***");
shouldBeNonNull("new MediaStreamTrackEvent('MediaStreamTrackEvent', { track: mediaStreamTrack }).track");
shouldBe("new MediaStreamTrackEvent('MediaStreamTrackEvent', { track: mediaStreamTrack }).track", "mediaStreamTrack");
debug("");
[MediaStream] make MediaStream testable https://bugs.webkit.org/show_bug.cgi?id=121967 Reviewed by Dean Jackson. Source/WebCore: No new tests, existing tests updated. * CMakeLists.txt: Add MockMediaStreamCenter. * GNUmakefile.list.am: Ditto. * Modules/mediastream/MediaStreamTrack.idl: Add SkipVTableValidation. * Modules/mediastream/NavigatorUserMediaError.idl: Add JSGenerateToJSObject. * WebCore.exp.in: Export MockMediaStreamCenter::registerMockMediaStreamCenter. * WebCore.xcodeproj/project.pbxproj: Add MockMediaStreamCenter. * dom/DOMError.h: Make the destructor virtual because it has a derived class. * dom/DOMError.idl: * platform/mock/MockMediaStreamCenter.cpp: Added. * platform/mock/MockMediaStreamCenter.h: Added. * testing/Internals.cpp: Register the mock stream center. Source/WebKit: * WebKit.xcodeproj/project.pbxproj: Add WebUserMediaClient. Source/WebKit/mac: * WebCoreSupport/WebUserMediaClient.h: Added. * WebCoreSupport/WebUserMediaClient.mm: Added. * WebView/WebUIDelegatePrivate.h: Declare decidePolicyForUserMediaRequestFromOrigin:listener: * WebView/WebView.mm: (-[WebView _commonInitializationWithFrameName:groupName:]): Register WebUserMediaClient. (-[WebView _setUserMediaClient:]): New. (-[WebView _userMediaClient]): New. * WebView/WebViewData.h: * WebView/WebViewPrivate.h: Tools: * DumpRenderTree/mac/UIDelegate.mm: (-[UIDelegate webView:decidePolicyForUserMediaRequestFromOrigin:listener:]): Add a very permissive user media request policy delegate. LayoutTests: * fast/mediastream/MediaStream-add-remove-tracks-expected.txt: * fast/mediastream/MediaStream-add-remove-tracks.html: Make the test results more understandable to simplify debugging failures. * fast/mediastream/MediaStream-onended-expected.txt: * fast/mediastream/MediaStream-onended.html: Ditto. Fix a test error: stopping stream A should not stop stream B even when it was created from stream A. * fast/mediastream/MediaStreamConstructor-expected.txt: * fast/mediastream/MediaStreamConstructor.html: Make the test results more understandable. Fix a logic errors: webkitMediaStream is an object, not a function. JSC does not support object.constructor.name, use object.constructor.toString() instead. * fast/mediastream/MediaStreamTrackEvent-constructor-expected.txt: * fast/mediastream/MediaStreamTrackEvent-constructor.html: Update now that getUserMedia() works. * fast/mediastream/argument-types-expected.txt: Updated with "Failing" results because the correct behavior is unknown. The spec says "the syntax for getUserMedia() is still under discussion". Canonical link: https://commits.webkit.org/140023@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@156522 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-09-27 01:08:17 +00:00
endTest();
}
function gotStream(stream)
{
clearTimeout(timer);
[MediaStream] make MediaStream testable https://bugs.webkit.org/show_bug.cgi?id=121967 Reviewed by Dean Jackson. Source/WebCore: No new tests, existing tests updated. * CMakeLists.txt: Add MockMediaStreamCenter. * GNUmakefile.list.am: Ditto. * Modules/mediastream/MediaStreamTrack.idl: Add SkipVTableValidation. * Modules/mediastream/NavigatorUserMediaError.idl: Add JSGenerateToJSObject. * WebCore.exp.in: Export MockMediaStreamCenter::registerMockMediaStreamCenter. * WebCore.xcodeproj/project.pbxproj: Add MockMediaStreamCenter. * dom/DOMError.h: Make the destructor virtual because it has a derived class. * dom/DOMError.idl: * platform/mock/MockMediaStreamCenter.cpp: Added. * platform/mock/MockMediaStreamCenter.h: Added. * testing/Internals.cpp: Register the mock stream center. Source/WebKit: * WebKit.xcodeproj/project.pbxproj: Add WebUserMediaClient. Source/WebKit/mac: * WebCoreSupport/WebUserMediaClient.h: Added. * WebCoreSupport/WebUserMediaClient.mm: Added. * WebView/WebUIDelegatePrivate.h: Declare decidePolicyForUserMediaRequestFromOrigin:listener: * WebView/WebView.mm: (-[WebView _commonInitializationWithFrameName:groupName:]): Register WebUserMediaClient. (-[WebView _setUserMediaClient:]): New. (-[WebView _userMediaClient]): New. * WebView/WebViewData.h: * WebView/WebViewPrivate.h: Tools: * DumpRenderTree/mac/UIDelegate.mm: (-[UIDelegate webView:decidePolicyForUserMediaRequestFromOrigin:listener:]): Add a very permissive user media request policy delegate. LayoutTests: * fast/mediastream/MediaStream-add-remove-tracks-expected.txt: * fast/mediastream/MediaStream-add-remove-tracks.html: Make the test results more understandable to simplify debugging failures. * fast/mediastream/MediaStream-onended-expected.txt: * fast/mediastream/MediaStream-onended.html: Ditto. Fix a test error: stopping stream A should not stop stream B even when it was created from stream A. * fast/mediastream/MediaStreamConstructor-expected.txt: * fast/mediastream/MediaStreamConstructor.html: Make the test results more understandable. Fix a logic errors: webkitMediaStream is an object, not a function. JSC does not support object.constructor.name, use object.constructor.toString() instead. * fast/mediastream/MediaStreamTrackEvent-constructor-expected.txt: * fast/mediastream/MediaStreamTrackEvent-constructor.html: Update now that getUserMedia() works. * fast/mediastream/argument-types-expected.txt: Updated with "Failing" results because the correct behavior is unknown. The spec says "the syntax for getUserMedia() is still under discussion". Canonical link: https://commits.webkit.org/140023@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@156522 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-09-27 01:08:17 +00:00
debug("<br>*** getUserMedia() succeeded, test stream ***");
mediaStream = stream;
shouldBeNonNull("mediaStream");
shouldBeNonNull("mediaStream.getVideoTracks()[0]");
mediaStreamTrack = mediaStream.getVideoTracks()[0];
testMediaStreamTrackEvent();
}
function primeTimeout(msg)
{
clearTimeout(timer);
[MediaStream] make MediaStream testable https://bugs.webkit.org/show_bug.cgi?id=121967 Reviewed by Dean Jackson. Source/WebCore: No new tests, existing tests updated. * CMakeLists.txt: Add MockMediaStreamCenter. * GNUmakefile.list.am: Ditto. * Modules/mediastream/MediaStreamTrack.idl: Add SkipVTableValidation. * Modules/mediastream/NavigatorUserMediaError.idl: Add JSGenerateToJSObject. * WebCore.exp.in: Export MockMediaStreamCenter::registerMockMediaStreamCenter. * WebCore.xcodeproj/project.pbxproj: Add MockMediaStreamCenter. * dom/DOMError.h: Make the destructor virtual because it has a derived class. * dom/DOMError.idl: * platform/mock/MockMediaStreamCenter.cpp: Added. * platform/mock/MockMediaStreamCenter.h: Added. * testing/Internals.cpp: Register the mock stream center. Source/WebKit: * WebKit.xcodeproj/project.pbxproj: Add WebUserMediaClient. Source/WebKit/mac: * WebCoreSupport/WebUserMediaClient.h: Added. * WebCoreSupport/WebUserMediaClient.mm: Added. * WebView/WebUIDelegatePrivate.h: Declare decidePolicyForUserMediaRequestFromOrigin:listener: * WebView/WebView.mm: (-[WebView _commonInitializationWithFrameName:groupName:]): Register WebUserMediaClient. (-[WebView _setUserMediaClient:]): New. (-[WebView _userMediaClient]): New. * WebView/WebViewData.h: * WebView/WebViewPrivate.h: Tools: * DumpRenderTree/mac/UIDelegate.mm: (-[UIDelegate webView:decidePolicyForUserMediaRequestFromOrigin:listener:]): Add a very permissive user media request policy delegate. LayoutTests: * fast/mediastream/MediaStream-add-remove-tracks-expected.txt: * fast/mediastream/MediaStream-add-remove-tracks.html: Make the test results more understandable to simplify debugging failures. * fast/mediastream/MediaStream-onended-expected.txt: * fast/mediastream/MediaStream-onended.html: Ditto. Fix a test error: stopping stream A should not stop stream B even when it was created from stream A. * fast/mediastream/MediaStreamConstructor-expected.txt: * fast/mediastream/MediaStreamConstructor.html: Make the test results more understandable. Fix a logic errors: webkitMediaStream is an object, not a function. JSC does not support object.constructor.name, use object.constructor.toString() instead. * fast/mediastream/MediaStreamTrackEvent-constructor-expected.txt: * fast/mediastream/MediaStreamTrackEvent-constructor.html: Update now that getUserMedia() works. * fast/mediastream/argument-types-expected.txt: Updated with "Failing" results because the correct behavior is unknown. The spec says "the syntax for getUserMedia() is still under discussion". Canonical link: https://commits.webkit.org/140023@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@156522 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2013-09-27 01:08:17 +00:00
timer = setTimeout(function() { testFailed(msg); endTest() }, 4000);
}
function test()
{
primeTimeout("Timeout waiting for getUserMedia()");
WebRTC: Update the MediaStream API https://bugs.webkit.org/show_bug.cgi?id=146313 Reviewed by Eric Carlson. Source/WebCore: Update the MediaStream API (MediaStream, MediaStreamTrack and RealtimeMediaSource) to match the Media Capture and Stream specification [1]. Notable changes: Updated event handling to synchronously update corresponding state/attributes as events are dispatched. Removed 'new' state from MediaStreamTrack. A track is either 'live' or 'ended'. As a consequence 'started' event is also removed. MediaStreamTrack always has a source (disconnected source concept was removed from the spec). Therefore, more state can be kept at the source without going away. Calculate MediaStream.active internally, from the track set, instead of setting it externally. Updated RealtimeMediaSource Observer interface. Replaced MediaStream's separate audio and video track lists with a single track set (more aligned with spec). Updated MediaStream constructor to adopt instead of clone track arguments (or tracks from MediaStream argument). Removed MediaStreamTrack.getSources() and corresponding test (removed from spec). Test status: 3 added, 8 existing enabled (some updated) and 1 removed. [1] http://w3c.github.io/mediacapture-main/archives/20150523/getusermedia.html Tests: fast/mediastream/MediaStreamTrack-clone.html fast/mediastream/MediaStreamTrack-kind.html fast/mediastream/MediaStreamTrack-stop.html * Modules/mediastream/MediaStream.cpp: (WebCore::MediaStream::create): (WebCore::MediaStream::MediaStream): (WebCore::MediaStream::clone): (WebCore::MediaStream::addTrack): (WebCore::MediaStream::removeTrack): (WebCore::MediaStream::getTrackById): (WebCore::MediaStream::getAudioTracks): (WebCore::MediaStream::getVideoTracks): (WebCore::MediaStream::getTracks): (WebCore::MediaStream::contextDestroyed): (WebCore::MediaStream::trackDidEnd): (WebCore::MediaStream::activeStatusChanged): (WebCore::MediaStream::didAddTrackToPrivate): (WebCore::MediaStream::didRemoveTrackFromPrivate): (WebCore::MediaStream::internalAddTrack): (WebCore::MediaStream::internalRemoveTrack): (WebCore::MediaStream::scheduleActiveStateChange): (WebCore::MediaStream::activityEventTimerFired): (WebCore::MediaStream::trackVectorForType): (WebCore::MediaStream::~MediaStream): Deleted. (WebCore::MediaStream::registry): Deleted. (WebCore::MediaStream::addObserver): Deleted. (WebCore::MediaStream::removeObserver): Deleted. * Modules/mediastream/MediaStream.h: * Modules/mediastream/MediaStream.idl: * Modules/mediastream/MediaStreamTrack.cpp: (WebCore::MediaStreamTrack::MediaStreamTrack): (WebCore::MediaStreamTrack::~MediaStreamTrack): (WebCore::MediaStreamTrack::kind): (WebCore::MediaStreamTrack::id): (WebCore::MediaStreamTrack::label): (WebCore::MediaStreamTrack::enabled): (WebCore::MediaStreamTrack::setEnabled): (WebCore::MediaStreamTrack::muted): (WebCore::MediaStreamTrack::readonly): (WebCore::MediaStreamTrack::remote): (WebCore::MediaStreamTrack::readyState): (WebCore::MediaStreamTrack::ended): (WebCore::MediaStreamTrack::clone): (WebCore::MediaStreamTrack::stopProducingData): (WebCore::MediaStreamTrack::states): (WebCore::MediaStreamTrack::getCapabilities): (WebCore::MediaStreamTrack::applyConstraints): (WebCore::MediaStreamTrack::trackEnded): (WebCore::MediaStreamTrack::trackMutedChanged): (WebCore::MediaStreamTrack::stop): (WebCore::MediaStreamTrack::getConstraints): Deleted. (WebCore::MediaStreamTrack::addObserver): Deleted. (WebCore::MediaStreamTrack::removeObserver): Deleted. (WebCore::MediaStreamTrack::configureTrackRendering): Deleted. (WebCore::MediaStreamTrack::activeDOMObjectName): Deleted. (WebCore::MediaStreamTrack::canSuspendForPageCache): Deleted. * Modules/mediastream/MediaStreamTrack.h: * Modules/mediastream/MediaStreamTrack.idl: * Modules/mediastream/RTCPeerConnection.cpp: (WebCore::RTCPeerConnection::didRemoveRemoteStream): Deleted. * Modules/mediastream/UserMediaRequest.cpp: (WebCore::UserMediaRequest::didCreateStream): * platform/mediastream/MediaStreamPrivate.cpp: (WebCore::MediaStreamPrivate::create): (WebCore::MediaStreamPrivate::MediaStreamPrivate): (WebCore::MediaStreamPrivate::tracks): (WebCore::MediaStreamPrivate::updateActiveState): (WebCore::MediaStreamPrivate::addTrack): (WebCore::MediaStreamPrivate::removeTrack): * platform/mediastream/MediaStreamPrivate.h: (WebCore::MediaStreamPrivate::active): Deleted. * platform/mediastream/MediaStreamTrackPrivate.cpp: (WebCore::MediaStreamTrackPrivate::create): (WebCore::MediaStreamTrackPrivate::MediaStreamTrackPrivate): (WebCore::MediaStreamTrackPrivate::~MediaStreamTrackPrivate): (WebCore::MediaStreamTrackPrivate::label): (WebCore::MediaStreamTrackPrivate::setEnabled): (WebCore::MediaStreamTrackPrivate::endTrack): (WebCore::MediaStreamTrackPrivate::clone): (WebCore::MediaStreamTrackPrivate::type): (WebCore::MediaStreamTrackPrivate::applyConstraints): (WebCore::MediaStreamTrackPrivate::sourceStopped): (WebCore::MediaStreamTrackPrivate::sourceMutedChanged): (WebCore::MediaStreamTrackPrivate::preventSourceFromStopping): (WebCore::MediaStreamTrackPrivate::muted): Deleted. (WebCore::MediaStreamTrackPrivate::readonly): Deleted. (WebCore::MediaStreamTrackPrivate::remote): Deleted. (WebCore::MediaStreamTrackPrivate::constraints): Deleted. (WebCore::MediaStreamTrackPrivate::states): Deleted. (WebCore::MediaStreamTrackPrivate::capabilities): Deleted. * platform/mediastream/MediaStreamTrackPrivate.h: (WebCore::MediaStreamTrackPrivate::id): (WebCore::MediaStreamTrackPrivate::ended): (WebCore::MediaStreamTrackPrivate::enabled): (WebCore::MediaStreamTrackPrivate::setClient): (WebCore::MediaStreamTrackPrivate::source): Deleted. (WebCore::MediaStreamTrackPrivate::client): Deleted. * platform/mediastream/RealtimeMediaSource.cpp: (WebCore::RealtimeMediaSource::RealtimeMediaSource): (WebCore::RealtimeMediaSource::reset): (WebCore::RealtimeMediaSource::setMuted): (WebCore::RealtimeMediaSource::readonly): (WebCore::RealtimeMediaSource::stop): (WebCore::RealtimeMediaSource::requestStop): (WebCore::RealtimeMediaSource::addObserver): Deleted. (WebCore::RealtimeMediaSource::removeObserver): Deleted. * platform/mediastream/RealtimeMediaSource.h: (WebCore::RealtimeMediaSource::stopped): (WebCore::RealtimeMediaSource::id): Deleted. (WebCore::RealtimeMediaSource::muted): Deleted. (WebCore::RealtimeMediaSource::setReadonly): Deleted. * platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp: (WebCore::RealtimeMediaSourceCenterOwr::createMediaStream): Deleted. * platform/mock/MockRealtimeMediaSourceCenter.cpp: (WebCore::MockRealtimeMediaSourceCenter::createMediaStream): Deleted. LayoutTests: Test status: 3 added, 8 existing enabled (some updated) and 1 removed. * TestExpectations: * fast/mediastream/MediaStream-add-ended-tracks-expected.txt: * fast/mediastream/MediaStream-add-ended-tracks.html: * fast/mediastream/MediaStream-add-remove-tracks-expected.txt: * fast/mediastream/MediaStream-add-remove-tracks.html: * fast/mediastream/MediaStream-add-tracks-to-inactive-stream.html: * fast/mediastream/MediaStream-clone-expected.txt: Added. * fast/mediastream/MediaStream-clone.html: * fast/mediastream/MediaStream-construct-with-ended-tracks-expected.txt: Added. * fast/mediastream/MediaStream-construct-with-ended-tracks.html: * fast/mediastream/MediaStream-getTracks-expected.txt: * fast/mediastream/MediaStream-getTracks.html: * fast/mediastream/MediaStreamConstructor.html: * fast/mediastream/MediaStreamTrack-clone-expected.txt: Added. * fast/mediastream/MediaStreamTrack-clone.html: Added. * fast/mediastream/MediaStreamTrack-getSources-expected.txt: Removed. * fast/mediastream/MediaStreamTrack-getSources.html: Removed. Tested method removed from spec. * fast/mediastream/MediaStreamTrack-kind-expected.txt: Added. * fast/mediastream/MediaStreamTrack-kind.html: Added. * fast/mediastream/MediaStreamTrack-stop-expected.txt: Added. * fast/mediastream/MediaStreamTrack-stop.html: Added. * fast/mediastream/MediaStreamTrackEvent-constructor-expected.txt: * fast/mediastream/MediaStreamTrackEvent-constructor.html: * fast/mediastream/resources/getUserMedia-helper.js: Added. (.reject): (getUserMedia): (defaultRejectOrCatch): * platform/gtk/TestExpectations: Canonical link: https://commits.webkit.org/164511@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@186081 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-06-29 19:52:21 +00:00
getUserMedia("allow", {audio:true, video:true}, gotStream);
}
</script>
<script src="../../resources/js-test-post.js"></script>
<body onload="test()">
</body>
</html>