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

Unified Diff: content/test/data/media/peerconnection-call.html

Issue 13496009: Hookup the MediaStream glue for Adding and Removing tracks to an existing MediaStream. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed review comments on content_browsertest Created 7 years, 8 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
Index: content/test/data/media/peerconnection-call.html
diff --git a/content/test/data/media/peerconnection-call.html b/content/test/data/media/peerconnection-call.html
index 7581b729947e8f3370b4d4aa4652e232c6090185..58de29c946b260e4058605bf3aada85f43e25d86 100644
--- a/content/test/data/media/peerconnection-call.html
+++ b/content/test/data/media/peerconnection-call.html
@@ -1,27 +1,22 @@
<html>
<head>
+ <script type="text/javascript" src="webrtc_test_utilities.js"></script>
<script type="text/javascript">
$ = function(id) {
return document.getElementById(id);
};
- // These must match with how the video and canvas tags are declared in html.
- const VIDEO_TAG_WIDTH = 320;
- const VIDEO_TAG_HEIGHT = 240;
-
var gFirstConnection = null;
var gSecondConnection = null;
var gTestWithoutMsidAndBundle = false;
- // Number of test events to occur before the test pass. When the test pass,
- // the document title change to OK.
- var gNumberOfExpectedEvents = 0;
-
- // Number of events that currently have occured.
- var gNumberOfEvents = 0;
-
var gLocalStream = null;
var gSentTones = '';
+
+ // This function is called when all expected events have occurred.
+ gAllEventsOccured = function() {
+ document.title = 'OK';
+ }
// Test that we can setup call with an audio and video track.
function call(constraints) {
@@ -109,6 +104,16 @@
// Do the DTMF test after we have received video.
detectVideoIn('remote-view-2', onCallEstablished);
}
+
+ // Test call with a new Video MediaStream that has been created based on a
+ // stream generated by getUserMedia.
+ function callWithNewVideoMediaStream() {
+ createConnections(null);
+ navigator.webkitGetUserMedia({audio:true, video:true},
+ createNewVideoStreamAndAddToBothConnections, printGetUserMediaError);
+ waitForVideo('remote-view-1');
+ waitForVideo('remote-view-2');
+ }
// This function is used for setting up a test that:
// 1. Creates a data channel on |gFirstConnection| and sends data to
@@ -155,7 +160,7 @@
secondDataChannel.send(sendDataString);
}
}
- }
+ }
function onToneChange(tone) {
gSentTones += tone.tone;
@@ -203,6 +208,16 @@
gFirstConnection.addStream(localStream);
negotiate();
}
+
+ // Called if getUserMedia succeeds when we want to send a modified
+ // MediaStream. A new MediaStream is created and the video track from
+ // |localStream| is added.
phoglund_chromium 2013/04/11 11:16:48 Also removes the audio track.
+ function createNewVideoStreamAndAddToBothConnections(localStream) {
+ var new_stream = new webkitMediaStream(localStream.getAudioTracks());
+ new_stream.addTrack(localStream.getVideoTracks()[0]);
+ new_stream.removeTrack(new_stream.getAudioTracks()[0]);
+ addStreamToBothConnectionsAndNegotiate(new_stream);
+ }
function negotiate() {
gFirstConnection.createOffer(onOfferCreated);
@@ -275,66 +290,7 @@
var remoteVideo = $(target);
remoteVideo.src = remoteStreamUrl;
}
-
- // TODO(phoglund): perhaps use the video detector in chrome/test/data/webrtc/?
- function detectVideoIn(videoElementName, callback) {
- var width = VIDEO_TAG_WIDTH;
- var height = VIDEO_TAG_HEIGHT;
- var videoElement = $(videoElementName);
- var canvas = $(videoElementName + '-canvas');
- var waitVideo = setInterval(function() {
- var context = canvas.getContext('2d');
- context.drawImage(videoElement, 0, 0, width, height);
- var pixels = context.getImageData(0, 0, width, height).data;
-
- if (isVideoPlaying(pixels, width, height)) {
- clearInterval(waitVideo);
- callback();
- }
- }, 100);
- }
-
- function waitForVideo(videoElement) {
- document.title = 'Waiting for video...';
- addExpectedEvent();
- detectVideoIn(videoElement, function () { eventOccured(); });
- }
-
- // This very basic video verification algorithm will be satisfied if any
- // pixels are nonzero in a small sample area in the middle. It relies on the
- // assumption that a video element with null source just presents zeroes.
- function isVideoPlaying(pixels, width, height) {
- // Sample somewhere near the middle of the image.
- var middle = width * height / 2;
- for (var i = 0; i < 20; i++) {
- if (pixels[middle + i] > 0) {
- return true;
- }
- }
- return false;
- }
-
-
- // This function matches |left| and |right| and throws an exception if the
- // values don't match.
- function expectEquals(left, right) {
- if (left != right) {
- var s = "expectEquals failed left: " + left + " right: " + right;
- document.title = s;
- throw s;
- }
- }
-
- function addExpectedEvent() {
- ++gNumberOfExpectedEvents;
- }
-
- function eventOccured() {
- ++gNumberOfEvents;
- if (gNumberOfEvents == gNumberOfExpectedEvents) {
- document.title = 'OK';
- }
- }
+
</script>
</head>
<body>

Powered by Google App Engine
This is Rietveld 408576698