Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(45)

Unified Diff: content/test/data/media/getusermedia.html

Issue 635833002: Refactor WebRTC getUserMedia tests to be more explicit and clear. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Clarified TODO Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/media/webrtc_getusermedia_browsertest.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/test/data/media/getusermedia.html
diff --git a/content/test/data/media/getusermedia.html b/content/test/data/media/getusermedia.html
index 4ef41543ad42091a75ad644dec5ce4d2c53b87e3..f42ce720fd43c84433d85478fd675b7c56903838 100644
--- a/content/test/data/media/getusermedia.html
+++ b/content/test/data/media/getusermedia.html
@@ -6,10 +6,7 @@
return document.getElementById(id);
};
- var gLocalStream = null;
-
setAllEventsOccuredHandler(function() {
- gLocalStream.stop();
reportTestSuccess();
});
@@ -26,7 +23,12 @@
console.log('Calling getUserMediaAndStop.');
navigator.webkitGetUserMedia(
constraints,
- function(stream) { displayAndDetectVideo(stream, stopVideoTrack); },
+ function(stream) {
+ detectVideoInLocalView1(stream, function() {
+ stream.getVideoTracks()[0].stop();
+ waitForVideoToStop('local-view-1');
+ });
+ },
failedCallback);
}
@@ -45,13 +47,13 @@
navigator.webkitGetUserMedia(
constraints,
function(stream) {
- var s = stream.clone();
+ var duplicate = stream.clone();
assertEquals(stream.getVideoTracks().length, 1);
- assertEquals(s.getVideoTracks().length, 1);
+ assertEquals(duplicate.getVideoTracks().length, 1);
assertNotEquals(stream.getVideoTracks()[0].id,
- s.getVideoTracks()[0].id);
- displayAndDetectVideo(
- s,
+ duplicate.getVideoTracks()[0].id);
+ detectVideoInLocalView1(
+ stream,
function() {
reportTestSuccess();
});
@@ -64,13 +66,13 @@
navigator.webkitGetUserMedia(
constraints,
function(stream) {
- s = new webkitMediaStream(stream);
+ var duplicate = new webkitMediaStream(stream);
assertEquals(stream.getVideoTracks().length, 1);
- assertEquals(s.getVideoTracks().length, 1);
+ assertEquals(duplicate.getVideoTracks().length, 1);
assertEquals(stream.getVideoTracks()[0].id,
- s.getVideoTracks()[0].id);
- displayAndDetectVideo(
- s,
+ duplicate.getVideoTracks()[0].id);
+ detectVideoInLocalView1(
+ duplicate,
function() {
reportTestSuccess();
});
@@ -83,13 +85,14 @@
navigator.webkitGetUserMedia(
constraints,
function(stream) {
- s = new webkitMediaStream();
- s.addTrack(stream.getVideoTracks()[0]);
- assertEquals(s.getVideoTracks().length, 1);
- assertEquals(s.getVideoTracks().length, 1);
- assertEquals(stream.getVideoTracks()[0].id, s.getVideoTracks()[0].id);
- displayAndDetectVideo(
- s,
+ var duplicate = new webkitMediaStream();
+ duplicate.addTrack(stream.getVideoTracks()[0]);
+ assertEquals(duplicate.getVideoTracks().length, 1);
+ assertEquals(duplicate.getVideoTracks().length, 1);
+ assertEquals(stream.getVideoTracks()[0].id,
+ duplicate.getVideoTracks()[0].id);
+ detectVideoInLocalView1(
+ duplicate,
function() {
reportTestSuccess();
});
@@ -102,14 +105,14 @@
navigator.webkitGetUserMedia(
constraints,
function(stream) {
- s = new webkitMediaStream();
- s.addTrack(stream.getVideoTracks()[0].clone());
- assertEquals(s.getVideoTracks().length, 1);
- assertEquals(s.getVideoTracks().length, 1);
+ var duplicate = new webkitMediaStream();
+ duplicate.addTrack(stream.getVideoTracks()[0].clone());
+ assertEquals(duplicate.getVideoTracks().length, 1);
+ assertEquals(duplicate.getVideoTracks().length, 1);
assertNotEquals(stream.getVideoTracks()[0].id,
- s.getVideoTracks()[0].id)
- displayAndDetectVideo(
- s,
+ duplicate.getVideoTracks()[0].id)
+ detectVideoInLocalView1(
+ duplicate,
function() {
reportTestSuccess();
});
@@ -118,13 +121,15 @@
}
// Creates a MediaStream and renders it locally. When the video is detected to
- // be rolling we return ok-stream-running through the automation controller.
- function getUserMediaAndGetStreamUp(constraints, waitTimeInSeconds) {
+ // be rolling we report success. The acquired stream is stored in window
+ // under the name |streamName|.
+ function getUserMediaAndGetStreamUp(constraints, streamName) {
console.log('Calling getUserMediaAndGetStreamUp.');
navigator.webkitGetUserMedia(
constraints,
function(stream) {
- displayAndDetectVideo(
+ window[streamName] = stream;
+ detectVideoInLocalView1(
stream,
function() {
reportTestSuccess();
@@ -160,37 +165,47 @@
// streams are detected to be rolling, we stop the local video tracks one at
// the time.
function twoGetUserMediaAndStop(constraints) {
- console.log('Calling Two GetUserMedia');
+ // TODO(phoglund): make gUM requests in parallel; this test is too slow
+ // and flakes on slow bots (http://crbug.com/417756). The current cycle of
+ // detect - gum - detect - gum - stop - detect - stop - detect contains too
+ // many detection phases. On bots with GPU emulation this looks to be really
+ // slow, so I was thinking we could at least get video up for both streams
+ // simultaneously and thereby run the first two detects in parallel.
+ var stream1 = null;
+ var stream2 = null;
navigator.webkitGetUserMedia(
constraints,
function(stream) {
- displayAndDetectVideo(stream, requestSecondGetUserMedia);
+ stream1 = stream;
+ detectVideoInLocalView1(stream, requestSecondGetUserMedia);
},
failedCallback);
var requestSecondGetUserMedia = function() {
navigator.webkitGetUserMedia(
constraints,
function(stream) {
- displayIntoVideoElement(stream,
- function() {
- stopBothVideoTracksAndVerify(stream);
- },
- 'local-view-2');
+ stream2 = stream;
+ attachMediaStream(stream, 'local-view-2');
+ detectVideoPlaying('local-view-2', stopBothVideoTracksAndVerify);
},
failedCallback);
};
- var stopBothVideoTracksAndVerify = function(streamPlayingInLocalView2) {
- streamPlayingInLocalView2.getVideoTracks()[0].stop();
+ var stopBothVideoTracksAndVerify = function() {
+ // Stop track 2, ensure that stops track 2 but not track 1, then stop
+ // track 1.
+ stream2.getVideoTracks()[0].stop();
+ waitForVideoToStop('local-view-1');
waitForVideoToStop('local-view-2');
- // Make sure the video track in gLocalStream is still playing in
- // 'local-view1' and then stop it.
- displayAndDetectVideo(gLocalStream, stopVideoTrack);
+ detectVideoInLocalView1(stream1, function() {
+ stream1.getVideoTracks()[0].stop();
+ });
};
}
function twoGetUserMedia(constraints1,
constraints2) {
+ // TODO(phoglund): see TODO on twoGetUserMediaAndStop.
var result="";
navigator.webkitGetUserMedia(
constraints1,
@@ -201,7 +216,7 @@
result = aspectRatio;
requestSecondGetUserMedia();
},
- 'local-view');
+ 'local-view-1');
},
failedCallback);
var requestSecondGetUserMedia = function() {
@@ -226,6 +241,7 @@
constraints2,
expected_frame_rate1,
expected_frame_rate2) {
+ // TODO(phoglund): see TODO on twoGetUserMediaAndStop.
addExpectedEvent();
addExpectedEvent();
var validateFrameRateCallback = function (success) {
@@ -238,10 +254,10 @@
constraints1,
function(stream) {
requestSecondGetUserMedia();
- plugStreamIntoVideoElement(stream, 'local-view');
- detectVideoPlaying('local-view',
+ attachMediaStream(stream, 'local-view-1');
+ detectVideoPlaying('local-view-1',
function() {
- validateFrameRate('local-view', expected_frame_rate1,
+ validateFrameRate('local-view-1', expected_frame_rate1,
validateFrameRateCallback);
});
},
@@ -250,7 +266,7 @@
navigator.webkitGetUserMedia(
constraints2,
function(stream) {
- plugStreamIntoVideoElement(stream, 'local-view-2');
+ attachMediaStream(stream, 'local-view-2');
detectVideoPlaying('local-view-2',
function() {
validateFrameRate('local-view-2', expected_frame_rate2,
@@ -265,19 +281,14 @@
failTest('GetUserMedia call failed with code ' + error.code);
}
- function plugStreamIntoVideoElement(stream, videoElement) {
- gLocalStream = stream;
+ function attachMediaStream(stream, videoElement) {
var localStreamUrl = URL.createObjectURL(stream);
$(videoElement).src = localStreamUrl;
}
- function displayIntoVideoElement(stream, callback, videoElement) {
- plugStreamIntoVideoElement(stream, videoElement);
- detectVideoPlaying(videoElement, callback);
- }
-
- function displayAndDetectVideo(stream, callback) {
- displayIntoVideoElement(stream, callback, 'local-view');
+ function detectVideoInLocalView1(stream, callback) {
+ attachMediaStream(stream, 'local-view-1');
+ detectVideoPlaying('local-view-1', callback);
}
function displayDetectAndAnalyzeVideo(stream) {
@@ -285,41 +296,37 @@
function(aspectRatio) {
sendValueToTest(aspectRatio);
},
- 'local-view');
+ 'local-view-1');
}
function displayDetectAndAnalyzeVideoInElement(
stream, callback, videoElement) {
- plugStreamIntoVideoElement(stream, videoElement);
+ attachMediaStream(stream, videoElement);
detectAspectRatio(callback, videoElement);
}
function createAndRenderClone(stream) {
- gLocalStream = stream;
// TODO(perkj): --use-fake-device-for-media-stream do not currently
// work with audio devices and not all bots has a microphone.
- new_stream = new webkitMediaStream();
- new_stream.addTrack(stream.getVideoTracks()[0]);
- assertEquals(new_stream.getVideoTracks().length, 1);
+ newStream = new webkitMediaStream();
+ newStream.addTrack(stream.getVideoTracks()[0]);
+ assertEquals(newStream.getVideoTracks().length, 1);
if (stream.getAudioTracks().length > 0) {
- new_stream.addTrack(stream.getAudioTracks()[0]);
- assertEquals(new_stream.getAudioTracks().length, 1);
- new_stream.removeTrack(new_stream.getAudioTracks()[0]);
- assertEquals(new_stream.getAudioTracks().length, 0);
+ newStream.addTrack(stream.getAudioTracks()[0]);
+ assertEquals(newStream.getAudioTracks().length, 1);
+ newStream.removeTrack(newStream.getAudioTracks()[0]);
+ assertEquals(newStream.getAudioTracks().length, 0);
}
- var newStreamUrl = URL.createObjectURL(new_stream);
- $('local-view').src = newStreamUrl;
- waitForVideo('local-view');
- }
-
- function stopVideoTrack() {
- gLocalStream.getVideoTracks()[0].stop();
- waitForVideoToStop('local-view');
+ detectVideoInLocalView1(newStream, reportTestSuccess);
}
- function waitAndStopVideoTrack(waitTimeInSeconds) {
- setTimeout(stopVideoTrack, waitTimeInSeconds * 1000);
+ // Calls stop on |stream|'s video track after a delay and reports success.
+ function waitAndStopVideoTrack(stream, waitTimeInSeconds) {
+ setTimeout(function() {
+ stream.getVideoTracks()[0].stop();
+ reportTestSuccess();
+ }, waitTimeInSeconds * 1000);
}
// This test make sure multiple video renderers can be created for the same
@@ -448,17 +455,17 @@
</head>
<body>
<table border="0">
+ <!-- Canvases are named after their corresponding video elements. -->
<tr>
- <td><video width="320" height="240" id="local-view"
- autoplay="autoplay" style="display:none"></video></td>
- <td><canvas id="local-view-canvas"
+ <td><video id="local-view-1" width="320" height="240" autoplay
+ style="display:none"></video></td>
+ <td><canvas id="local-view-1-canvas" width="320" height="240"
style="display:none"></canvas></td>
</tr>
<tr>
- <td><video width="320" height="240" id="local-view-2"
- autoplay style="display:none"></video></td>
- <!-- Canvases are named after their corresponding video elements. -->
- <td><canvas width="320" height="240" id="local-view-2-canvas"
+ <td><video id="local-view-2" width="320" height="240" autoplay
+ style="display:none"></video></td>
+ <td><canvas id="local-view-2-canvas" width="320" height="240"
style="display:none"></canvas></td>
</tr>
</table>
« no previous file with comments | « content/browser/media/webrtc_getusermedia_browsertest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698