Changeset 213983 in webkit
- Timestamp:
- Mar 15, 2017 9:38:10 AM (7 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r213982 r213983 1 2017-03-15 Youenn Fablet <youenn@apple.com> 2 3 run-webkit-tests is always creating mock libwebrtc tracks 4 https://bugs.webkit.org/show_bug.cgi?id=169658 5 6 Reviewed by Alex Christensen. 7 8 * TestExpectations: 9 * webrtc/audio-peer-connection-webaudio.html: 10 * webrtc/peer-connection-audio-mute-expected.txt: Added. 11 * webrtc/peer-connection-audio-mute.html: Added. 12 * webrtc/routines.js: 13 (analyseAudio): 14 * webrtc/video-expected.txt: 15 * webrtc/video-mute-expected.txt: Added. 16 * webrtc/video-mute.html: Added. 17 * webrtc/video.html: 18 1 19 2017-03-15 Youenn Fablet <youenn@apple.com> 2 20 -
trunk/LayoutTests/TestExpectations
r213968 r213983 709 709 710 710 # WebRTC backend not enabled by default on Mac/iOS release bots. 711 # GTK enables some of th istests on their TestExpectations file.711 # GTK enables some of these tests on their TestExpectations file. 712 712 [ Release ] webrtc [ Skip ] 713 713 -
trunk/LayoutTests/TestExpectations.orig
r213968 r213983 734 734 imported/w3c/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/NavigatorID.html [ Skip ] 735 735 imported/w3c/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/NavigatorID.worker.html [ Skip ] 736 imported/w3c/web-platform-tests/XMLHttpRequest/anonymous-mode-unsupported.htm [ Failure ] 737 imported/w3c/web-platform-tests/XMLHttpRequest/open-after-setrequestheader.htm [ Failure ] 738 imported/w3c/web-platform-tests/XMLHttpRequest/open-referer.htm [ Failure ] 739 imported/w3c/web-platform-tests/XMLHttpRequest/send-accept-language.htm [ Failure ] 740 imported/w3c/web-platform-tests/XMLHttpRequest/setrequestheader-allow-empty-value.htm [ Failure ] 741 imported/w3c/web-platform-tests/XMLHttpRequest/setrequestheader-allow-whitespace-in-value.htm [ Failure ] 742 imported/w3c/web-platform-tests/XMLHttpRequest/setrequestheader-case-insensitive.htm [ Failure ] 743 imported/w3c/web-platform-tests/XMLHttpRequest/setrequestheader-header-allowed.htm [ Failure ] 744 imported/w3c/web-platform-tests/XMLHttpRequest/setrequestheader-header-forbidden.htm [ Failure ] 745 imported/w3c/web-platform-tests/XMLHttpRequest/setrequestheader-open-setrequestheader.htm [ Failure ] 746 imported/w3c/web-platform-tests/html/dom/interfaces.worker.html [ Failure ] 747 imported/w3c/web-platform-tests/html/webappapis/scripting/events/event-handler-attributes-body-window.html [ Failure ] 736 748 737 749 # Only iOS WK1 has testRunner.setPagePaused. -
trunk/LayoutTests/webrtc/audio-peer-connection-webaudio.html
r213334 r213983 8 8 <script src ="routines.js"></script> 9 9 <script> 10 var test = async_test(() => {10 promise_test((test) => { 11 11 if (window.testRunner) 12 12 testRunner.setUserMediaPermission(true); 13 13 14 var heardHum = false; 15 var heardBop = false; 16 var heardBip = false; 17 18 navigator.mediaDevices.getUserMedia({audio: true}).then((stream) => { 14 return navigator.mediaDevices.getUserMedia({audio: true}).then((stream) => { 19 15 if (window.internals) 20 16 internals.useMockRTCPeerConnectionFactory("TwoRealPeerConnections"); 21 22 createConnections((firstConnection) => { 23 firstConnection.addStream(stream); 24 }, (secondConnection) => { 25 secondConnection.onaddstream = (streamEvent) => { 26 var context = new webkitAudioContext(); 27 var sourceNode = context.createMediaStreamSource(streamEvent.stream); 28 var analyser = context.createAnalyser(); 29 var gain = context.createGain(); 30 31 analyser.fftSize = 2048; 32 analyser.smoothingTimeConstant = 0; 33 analyser.minDecibels = -100; 34 analyser.maxDecibels = 0; 35 gain.gain.value = 0; 36 37 sourceNode.connect(analyser); 38 analyser.connect(gain); 39 gain.connect(context.destination); 40 41 function analyse() { 42 var freqDomain = new Uint8Array(analyser.frequencyBinCount); 43 analyser.getByteFrequencyData(freqDomain); 44 45 var hasFrequency = expectedFrequency => { 46 var bin = Math.floor(expectedFrequency * analyser.fftSize / context.sampleRate); 47 return bin < freqDomain.length && freqDomain[bin] >= 150; 48 }; 49 50 if (!heardHum) 51 heardHum = hasFrequency(150); 52 53 if (!heardBip) 54 heardBip = hasFrequency(1500); 55 56 if (!heardBop) 57 heardBop = hasFrequency(500); 58 59 if (heardHum && heardBip && heardBop) 60 done(); 61 }; 62 63 var done = test.step_func_done(() => { 64 clearTimeout(timeout); 65 clearInterval(interval); 66 67 assert_true(heardHum, "heard hum"); 68 assert_true(heardBip, "heard bip"); 69 assert_true(heardBop, "heard bop"); 70 test.done(); 71 }); 72 73 var timeout = setTimeout(done, 3000); 74 var interval = setInterval(analyse, 1000 / 30); 75 analyse(); 76 } 17 return new Promise((resolve, reject) => { 18 createConnections((firstConnection) => { 19 firstConnection.addStream(stream); 20 }, (secondConnection) => { 21 secondConnection.onaddstream = (streamEvent) => { resolve(streamEvent.stream); }; 22 }); 23 setTimeout(() => reject("Test timed out"), 5000); 24 }).then((stream) => { 25 return analyseAudio(stream, 1000); 26 }).then((results) => { 27 assert_true(results.heardHum, "heard hum"); 28 assert_true(results.heardBip, "heard bip"); 29 assert_true(results.heardBop, "heard bop"); 77 30 }); 78 });31 }); 79 32 }, "Basic audio playback through a peer connection"); 80 33 </script> -
trunk/LayoutTests/webrtc/routines.js
r213104 r213983 72 72 assert_unreached(); 73 73 } 74 75 function analyseAudio(stream, duration) 76 { 77 return new Promise((resolve, reject) => { 78 var context = new webkitAudioContext(); 79 var sourceNode = context.createMediaStreamSource(stream); 80 var analyser = context.createAnalyser(); 81 var gain = context.createGain(); 82 83 var results = { heardHum: false, heardBip: false, heardBop: false }; 84 85 analyser.fftSize = 2048; 86 analyser.smoothingTimeConstant = 0; 87 analyser.minDecibels = -100; 88 analyser.maxDecibels = 0; 89 gain.gain.value = 0; 90 91 sourceNode.connect(analyser); 92 analyser.connect(gain); 93 gain.connect(context.destination); 94 95 function analyse() { 96 var freqDomain = new Uint8Array(analyser.frequencyBinCount); 97 analyser.getByteFrequencyData(freqDomain); 98 99 var hasFrequency = expectedFrequency => { 100 var bin = Math.floor(expectedFrequency * analyser.fftSize / context.sampleRate); 101 return bin < freqDomain.length && freqDomain[bin] >= 150; 102 }; 103 104 if (!results.heardHum) 105 results.heardHum = hasFrequency(150); 106 107 if (!results.heardBip) 108 results.heardBip = hasFrequency(1500); 109 110 if (!results.heardBop) 111 results.heardBop = hasFrequency(500); 112 113 if (results.heardHum && results.heardBip && results.heardBop) 114 done(); 115 }; 116 117 function done() { 118 clearTimeout(timeout); 119 clearInterval(interval); 120 resolve(results); 121 } 122 123 var timeout = setTimeout(done, 3 * duration); 124 var interval = setInterval(analyse, duration / 30); 125 analyse(); 126 }); 127 } 128 129 function waitFor(duration) 130 { 131 return new Promise((resolve) => setTimeout(resolve, duration)); 132 } -
trunk/LayoutTests/webrtc/video-expected.txt
r213282 r213983 1 1 2 2 3 FAIL Basic video exchange assert_true: expected true got false 3 PASS Basic video exchange 4 4 -
trunk/LayoutTests/webrtc/video.html
r211830 r213983 12 12 <script src ="routines.js"></script> 13 13 <script> 14 if (window.internals)15 internals.useMockRTCPeerConnectionFactory("TwoRealPeerConnections");16 17 if (window.testRunner)18 testRunner.setUserMediaPermission(true);19 20 14 video = document.getElementById("video"); 21 15 canvas = document.getElementById("canvas"); … … 24 18 function testImage() 25 19 { 26 try { 27 canvas.width = video.videoWidth; 28 canvas.height = video.videoHeight; 29 canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height); 20 canvas.width = video.videoWidth; 21 canvas.height = video.videoHeight; 22 canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height); 30 23 31 32 24 imageData = canvas.getContext('2d').getImageData(10, 325, 250, 1); 25 data = imageData.data; 33 26 34 35 36 37 27 var index = 20; 28 assert_true(data[index] < 100); 29 assert_true(data[index + 1] < 100); 30 assert_true(data[index + 2] < 100); 38 31 39 40 41 42 32 index = 80; 33 assert_true(data[index] > 200); 34 assert_true(data[index + 1] > 200); 35 assert_true(data[index + 2] > 200); 43 36 44 index += 80; 45 assert_true(data[index] > 200); 46 assert_true(data[index + 1] > 200); 47 assert_true(data[index + 2] < 100); 48 49 finishTest(); 50 } catch(e) { 51 errorTest(e); 52 } 37 index += 80; 38 assert_true(data[index] > 200); 39 assert_true(data[index + 1] > 200); 40 assert_true(data[index + 2] < 100); 53 41 } 54 42 55 function testStream(stream) 56 { 57 video.srcObject = stream; 58 // Video may play with black frames 59 video.onplay = setTimeout(() => { 60 testImage(); 61 }, 1000); 62 } 43 promise_test((test) => { 44 if (window.testRunner) 45 testRunner.setUserMediaPermission(true); 63 46 64 var finishTest, errorTest;65 promise_test((test) => {66 47 return navigator.mediaDevices.getUserMedia({ video: true}).then((stream) => { 67 48 return new Promise((resolve, reject) => { 68 finishTest = resolve; 69 errorTest = reject; 49 if (window.internals) 50 internals.useMockRTCPeerConnectionFactory("TwoRealPeerConnections"); 51 70 52 createConnections((firstConnection) => { 71 53 firstConnection.addStream(stream); 72 54 }, (secondConnection) => { 73 secondConnection.onaddstream = (streamEvent) => { testStream(streamEvent.stream); };55 secondConnection.onaddstream = (streamEvent) => { resolve(streamEvent.stream); }; 74 56 }); 57 setTimeout(() => reject("Test timed out"), 5000); 75 58 }); 59 }).then((stream) => { 60 video.srcObject = stream; 61 return video.play(); 62 }).then(() => { 63 testImage(); 76 64 }); 77 65 }, "Basic video exchange"); -
trunk/Source/WebCore/ChangeLog
r213982 r213983 1 2017-03-15 Youenn Fablet <youenn@apple.com> 2 3 run-webkit-tests is always creating mock libwebrtc tracks 4 https://bugs.webkit.org/show_bug.cgi?id=169658 5 6 Reviewed by Alex Christensen. 7 8 Tests: webrtc/peer-connection-audio-mute.html 9 webrtc/video-mute.html 10 11 Creating real libwebrtc av tracks in case of RealTwoPeerConnections mock factory. 12 13 * testing/MockLibWebRTCPeerConnection.cpp: 14 (WebCore::MockLibWebRTCPeerConnectionFactory::CreateVideoTrack): 15 (WebCore::MockLibWebRTCPeerConnectionFactory::CreateAudioTrack): 16 * testing/MockLibWebRTCPeerConnection.h: 17 1 18 2017-03-15 Youenn Fablet <youenn@apple.com> 2 19 -
trunk/Source/WebCore/testing/MockLibWebRTCPeerConnection.cpp
r213736 r213983 190 190 } 191 191 192 rtc::scoped_refptr<webrtc::VideoTrackInterface> MockLibWebRTCPeerConnectionFactory::CreateVideoTrack(const std::string& id, webrtc::VideoTrackSourceInterface* source) 193 { 194 if (m_testCase == "TwoRealPeerConnections") 195 return realPeerConnectionFactory()->CreateVideoTrack(id, source); 196 return new rtc::RefCountedObject<MockLibWebRTCVideoTrack>(id, source); 197 } 198 199 rtc::scoped_refptr<webrtc::AudioTrackInterface> MockLibWebRTCPeerConnectionFactory::CreateAudioTrack(const std::string& id, webrtc::AudioSourceInterface* source) 200 { 201 if (m_testCase == "TwoRealPeerConnections") 202 return realPeerConnectionFactory()->CreateAudioTrack(id, source); 203 return new rtc::RefCountedObject<MockLibWebRTCAudioTrack>(id, source); 204 } 205 192 206 rtc::scoped_refptr<webrtc::MediaStreamInterface> MockLibWebRTCPeerConnectionFactory::CreateLocalMediaStream(const std::string& label) 193 207 { -
trunk/Source/WebCore/testing/MockLibWebRTCPeerConnection.h
r213736 r213983 245 245 rtc::scoped_refptr<webrtc::VideoTrackSourceInterface> CreateVideoSource(cricket::VideoCapturer*, const webrtc::MediaConstraintsInterface*) final { return nullptr; } 246 246 247 rtc::scoped_refptr<webrtc::VideoTrackInterface> CreateVideoTrack(const std::string& id, webrtc::VideoTrackSourceInterface* source) final { return new rtc::RefCountedObject<MockLibWebRTCVideoTrack>(id, source); } 248 rtc::scoped_refptr<webrtc::AudioTrackInterface> CreateAudioTrack(const std::string& id, webrtc::AudioSourceInterface* source) final { return new rtc::RefCountedObject<MockLibWebRTCAudioTrack>(id, source); } 247 rtc::scoped_refptr<webrtc::VideoTrackInterface> CreateVideoTrack(const std::string&, webrtc::VideoTrackSourceInterface*) final; 248 rtc::scoped_refptr<webrtc::AudioTrackInterface> CreateAudioTrack(const std::string&, webrtc::AudioSourceInterface*) final; 249 249 250 bool StartAecDump(rtc::PlatformFile, int64_t) final { return false; } 250 251 void StopAecDump() final { }
Note: See TracChangeset
for help on using the changeset viewer.